Dela via


Centraliserad konfiguration

Dricks

Det här innehållet är ett utdrag från eBook, Architecting Cloud Native .NET Applications for Azure, tillgängligt på .NET Docs eller som en kostnadsfri nedladdningsbar PDF som kan läsas offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Till skillnad från en monolitisk app där allt körs inom en enda instans består ett molnbaserat program av oberoende tjänster som distribueras över virtuella datorer, containrar och geografiska regioner. Det kan vara svårt att hantera konfigurationsinställningar för dussintals beroende tjänster. Dubbletter av konfigurationsinställningar på olika platser är felbenägna och svåra att hantera. Centraliserad konfiguration är ett viktigt krav för distribuerade molnbaserade program.

Som beskrivs i kapitel 1 kräver rekommendationer för Tolvfaktorapp strikt separation mellan kod och konfiguration. Konfigurationen måste lagras externt från programmet och läsas in efter behov. Att lagra konfigurationsvärden som konstanter eller literalvärden i kod är en överträdelse. Samma konfigurationsvärden används ofta av många tjänster i samma program. Dessutom måste vi ha stöd för samma värden i flera miljöer, till exempel utveckling, testning och produktion. Bästa praxis är att lagra dem i ett centraliserat konfigurationslager.

Azure-molnet innehåller flera bra alternativ.

Azure App Configuration

Azure App Configuration är en fullständigt hanterad Azure-tjänst som lagrar icke-hemliga konfigurationsinställningar på en säker central plats. Lagrade värden kan delas mellan flera tjänster och program.

Tjänsten är enkel att använda och ger flera fördelar:

  • Flexibla nyckel-/värderepresentationer och mappningar
  • Taggning med Azure-etiketter
  • Dedikerat användargränssnitt för hantering
  • Kryptering av känslig information
  • Frågekörning och batchhämtning

Azure App Configuration underhåller ändringar som gjorts i nyckel/värde-inställningar i sju dagar. Med funktionen ögonblicksbild vid tidpunkt kan du rekonstruera historiken för en inställning och till och med återställa för en misslyckad distribution.

AppKonfiguration cachelagrar automatiskt varje inställning för att undvika alltför stora anrop till konfigurationsarkivet. Uppdateringsåtgärden väntar tills det cachelagrade värdet för en inställning upphör att gälla för att uppdatera den inställningen, även när dess värde ändras i konfigurationsarkivet. Standardtiden för cachens förfallotid är 30 sekunder. Du kan åsidosätta förfallotiden.

App Configuration krypterar alla konfigurationsvärden under överföring och i vila. Nyckelnamn och etiketter används som index för att hämta konfigurationsdata och krypteras inte.

Även om App Configuration ger förstärkt säkerhet är Azure Key Vault fortfarande den bästa platsen för att lagra programhemligheter. Key Vault tillhandahåller kryptering på maskinvarunivå, detaljerade åtkomstprinciper och hanteringsåtgärder som certifikatrotation. Du kan skapa appkonfigurationsvärden som refererar till hemligheter som lagras i ett Key Vault.

Azure Key Vault

Key Vault är en hanterad tjänst för säker lagring och åtkomst till hemligheter. En hemlighet är något som du vill begränsa åtkomst till, till exempel API-nycklar, lösenord eller certifikat. Ett valv är en logisk grupp med hemligheter.

Key Vault minskar kraftigt risken för att hemligheter sprids av misstag. När du använder Key Vault behöver programutvecklare inte längre lagra säkerhetsinformation i sina program. Den här metoden eliminerar behovet av att lagra den här informationen i koden. Ett program kan till exempel behöva ansluta till en databas. Istället för att lagra anslutningssträngen i appkoden så kan du lagra den säkert i Key Vault.

Dina program får säker åtkomst till den information de behöver med hjälp av URI:er. Dessa URI:er gör det möjligt för programmen att hämta specifika versioner av en hemlighet. Du behöver inte skriva anpassad kod för att skydda någon hemlig information som lagras i Key Vault.

Åtkomst till Key Vault kräver korrekt autentisering och auktorisering för anroparen. Vanligtvis använder varje molnbaserad mikrotjänst en ClientId/ClientSecret-kombination. Det är viktigt att behålla dessa autentiseringsuppgifter utanför källkontrollen. Bästa praxis är att ange dem i programmets miljö. Direkt åtkomst till Key Vault från AKS kan uppnås med Hjälp av Key Vault FlexVolume.

Konfiguration i eShop

eShopOnContainers-programmet innehåller filer för lokala programinställningar med varje mikrotjänst. Dessa filer är incheckade i källkontrollen, men innehåller inte produktionshemligheter som anslutningssträng eller API-nycklar. I produktion kan enskilda inställningar skrivas över med miljövariabler per tjänst. Att mata in hemligheter i miljövariabler är en vanlig metod för värdbaserade program, men tillhandahåller inte något centralt konfigurationsarkiv. För att stödja centraliserad hantering av konfigurationsinställningar innehåller varje mikrotjänst en inställning för att växla mellan dess användning av lokala inställningar eller Azure Key Vault-inställningar.

Referenser