Med Azure Container Apps kan ditt program lagra känsliga konfigurationsvärden med hög säkerhet. När hemligheter har definierats på programnivå är skyddade värden tillgängliga för revisioner i dina containerappar. Dessutom kan du referera till skyddade värden i skalningsregler. Information om hur du använder hemligheter med Dapr finns i Dapr-integrering.
Hemligheter är begränsade till ett program, utanför specifika revisioner av ett program.
Att lägga till, ta bort eller ändra hemligheter genererar inte nya revisioner.
Varje programrevision kan referera till en eller flera hemligheter.
Flera revisioner kan referera till samma hemlighet eller hemligheter.
En uppdaterad eller borttagen hemlighet påverkar inte automatiskt befintliga revisioner i din app. När en hemlighet uppdateras eller tas bort kan du hantera ändringar på något av två sätt:
Distribuera en ny revision.
Starta om en befintlig revision.
Innan du tar bort en hemlighet måste du distribuera en ny revision som inte längre refererar till den gamla hemligheten. Inaktivera sedan alla revisioner som refererar till hemligheten.
Definiera hemligheter
Hemligheter definieras som en uppsättning namn/värde-par. Värdet för varje hemlighet anges direkt eller som en referens till en hemlighet som lagras i Azure Key Vault.
Lagra hemligt värde i Container Apps
När du definierar hemligheter via portalen eller via olika kommandoradsalternativ.
Här deklareras en anslutningssträng till ett kölagringskonto i matrisensecrets. I det här exemplet ersätter <MY-CONNECTION-STRING-VALUE> du med värdet för din anslutningssträng.
När du skapar en containerapp definieras hemligheter med hjälp av parametern --secrets .
Parametern accepterar en utrymmesavgränsad uppsättning namn/värde-par.
Här deklareras en anslutningssträng till ett kölagringskonto. Värdet för queue-connection-string kommer från en miljövariabel med namnet $QueueConnectionString.
Referenshemlighet från Key Vault
När du definierar en hemlighet skapar du en referens till en hemlighet som lagras i Azure Key Vault. Container Apps hämtar automatiskt det hemliga värdet från Key Vault och gör det tillgängligt som en hemlighet i din containerapp.
Om du vill referera till en hemlighet från Key Vault måste du först aktivera hanterad identitet i containerappen och ge identiteten åtkomst till Key Vault-hemligheterna.
Om du vill ge åtkomst till Key Vault-hemligheter skapar du en åtkomstprincip i Key Vault för den hanterade identitet som du skapade. Aktivera behörigheten Hämta hemlighet för den här principen.
Här deklareras en anslutningssträng till ett kölagringskonto i matrisensecrets. Värdet hämtas automatiskt från Key Vault med den angivna identiteten. Om du vill använda en användarhanterad identitet ersätter system du med identitetens resurs-ID.
Ersätt <KEY-VAULT-SECRET-URI> med URI:n för din hemlighet i Key Vault.
När du skapar en containerapp definieras hemligheter med hjälp av parametern --secrets .
Parametern accepterar en utrymmesavgränsad uppsättning namn/värde-par.
Varje par avgränsas med ett likhetstecken (=).
Om du vill ange en Key Vault-referens använder du formatet <SECRET_NAME>=keyvaultref:<KEY_VAULT_SECRET_URI>,identityref:<MANAGED_IDENTITY_ID>. Exempel: queue-connection-string=keyvaultref:https://mykeyvault.vault.azure.net/secrets/queuereader,identityref:/subscriptions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/resourcegroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity
Här deklareras en anslutningssträng till ett kölagringskonto i parametern --secrets . Ersätt <KEY_VAULT_SECRET_URI> med URI:n för din hemlighet i Key Vault. Ersätt <USER_ASSIGNED_IDENTITY_ID> med resurs-ID för den användartilldelade identiteten. För systemtilldelad identitet använder du system i stället för resurs-ID:t.
Kommentar
Den användartilldelade identiteten måste ha åtkomst till att läsa hemligheten i Key Vault. Systemtilldelad identitet kan inte användas med kommandot create eftersom den inte är tillgänglig förrän containerappen har skapats.
Key Vault-referenser för hemligheter stöds inte i PowerShell.
Kommentar
Om du använder UDR med Azure Firewall måste du lägga AzureKeyVault till tjänsttaggen och login.microsoft.com FQDN i listan över tillåtna för brandväggen. Se konfigurera UDR med Azure Firewall för att avgöra vilka ytterligare tjänsttaggar du behöver.
Hemlig URI för Key Vault och hemlig rotation
Nyckelvalvets hemliga URI måste ha något av följande format:
https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931: Referera till en specifik version av en hemlighet.
https://myvault.vault.azure.net/secrets/mysecret: Referera till den senaste versionen av en hemlighet.
Om en version inte anges i URI:n använder appen den senaste versionen som finns i nyckelvalvet. När nyare versioner blir tillgängliga hämtar appen automatiskt den senaste versionen inom 30 minuter. Alla aktiva revisioner som refererar till hemligheten i en miljövariabel startas automatiskt om för att hämta det nya värdet.
Om du vill ha fullständig kontroll över vilken version av en hemlighet som används anger du versionen i URI:n.
Referera till hemligheter i miljövariabler
När du har deklarerat hemligheter på programnivå enligt beskrivningen i avsnittet definiera hemligheter kan du referera till dem i miljövariabler när du skapar en ny revision i containerappen. När en miljövariabel refererar till en hemlighet fylls dess värde med det värde som definierats i hemligheten.
Exempel
I följande exempel visas ett program som deklarerar en anslutningssträng på programnivå. Den här anslutningen refereras i en containermiljövariabel och i en skalningsregel.
På sidan Skapa och distribuera ny revision väljer du en container.
I avsnittet Miljövariabler väljer du Lägg till.
Ange följande information:
Namn: Namnet på miljövariabeln.
Källa: Välj Referera till en hemlighet.
Värde: Välj den hemlighet som du vill referera till.
Välj Spara.
Välj Skapa för att skapa den nya revisionen.
I det här exemplet deklareras programmet anslutningssträng som queue-connection-string och blir tillgängligt någon annanstans i konfigurationsavsnitten.
Här hämtar miljövariabeln med namnet connection-string dess värde från hemligheten på programnivå queue-connection-string . Dessutom använder Azure Queue Storage-skalningsregelns autentiseringskonfiguration hemligheten queue-connection-string för att definiera anslutningen.
Om du vill undvika att checka in hemliga värden till källkontrollen med ARM-mallen skickar du hemliga värden som ARM-mallparametrar.
I det här exemplet skapar du en containerapp med hjälp av Azure CLI med en hemlighet som refereras till i en miljövariabel. Om du vill referera till en hemlighet i en miljövariabel i Azure CLI anger du dess värde till secretref:, följt av namnet på hemligheten.
Här hämtar miljövariabeln med namnet connection-string dess värde från hemligheten på programnivå queue-connection-string .
I det här exemplet skapar du en container med Hjälp av Azure PowerShell med en hemlighet som refereras till i en miljövariabel. Om du vill referera till hemligheten i en miljövariabel i PowerShell anger du dess värde till secretref:, följt av namnet på hemligheten.
Här hämtar miljövariabeln med namnet ConnectionString dess värde från hemligheten på programnivå $QueueConnectionString .
Montera hemligheter i en volym
När du har deklarerat hemligheter på programnivå enligt beskrivningen i avsnittet definiera hemligheter kan du referera till dem i volymmonteringar när du skapar en ny revision i containerappen. När du monterar hemligheter i en volym monteras varje hemlighet som en fil i volymen. Filnamnet är namnet på hemligheten och filinnehållet är värdet för hemligheten. Du kan läsa in alla hemligheter i en volymmontering eller läsa in specifika hemligheter.
I avsnittet Volymmonteringar expanderar du avsnittet Hemligheter .
Välj Skapa ny volym.
Ange följande information:
Namn: mysecrets
Montera alla hemligheter: aktiverat
Kommentar
Om du vill läsa in specifika hemligheter inaktiverar du Montera alla hemligheter och väljer de hemligheter som du vill läsa in.
Markera Lägga till.
Under Volymnamn väljer du mysecrets.
Under Monteringssökväg anger du /mnt/secrets.
Välj Spara.
Välj Skapa för att skapa den nya revisionen med volymmonteringen.
I det här exemplet deklareras två hemligheter på programnivå. Dessa hemligheter monteras i en volym med namnet mysecrets av typen Secret. Volymen monteras på sökvägen /mnt/secrets. Programmet kan sedan referera till hemligheterna i volymmonteringen.
Om du vill läsa in specifika hemligheter och ange deras sökvägar i den monterade volymen definierar du hemligheterna i matrisen secrets för volymobjektet. I följande exempel visas hur du endast läser in hemligheten queue-connection-string i volymmonteringen mysecrets med filnamnet connection-string.txt.
I din app kan du läsa hemligheten från en fil som finns på /mnt/secrets/connection-string.txt.
I det här exemplet deklareras två hemligheter på programnivå. Dessa hemligheter monteras i en volym med namnet mysecrets av typen Secret. Volymen monteras på sökvägen /mnt/secrets. Programmet kan sedan läsa hemligheterna som filer i volymmonteringen.