Met Azure Container Apps kunt u in uw toepassing gevoelige configuratiewaarden veilig opslaan. Zodra geheimen op toepassingsniveau zijn gedefinieerd, zijn beveiligde waarden beschikbaar voor revisies in uw container-apps. Daarnaast kunt u verwijzen naar beveiligde waarden binnen schaalregels. Raadpleeg Dapr-integratie voor informatie over het gebruik van geheimen met Dapr.
Geheimen zijn afgestemd op een toepassing, buiten een specifieke revisie van een toepassing.
Nieuwe revisies worden niet gegenereerd door geheimen toe te voegen, te verwijderen of te wijzigen.
Elke toepassingsrevisie kan naar een of meer geheimen verwijzen.
Meerdere revisies kunnen naar hetzelfde geheim of dezelfde geheimen verwijzen.
Een bijgewerkt of verwijderd geheim heeft niet automatisch invloed op bestaande revisies in uw app. Wanneer een geheim wordt bijgewerkt of verwijderd, kunt u op twee manieren op wijzigingen reageren:
Implementeer een nieuwe revisie.
Start een bestaande revisie opnieuw.
Voordat u een geheim verwijdert, implementeert u een nieuwe revisie die niet meer naar het oude geheim verwijst. Schakel vervolgens alle revisies uit die verwijzen naar het geheim.
Geheimen definiëren
Geheimen worden gedefinieerd als een set naam-/waardeparen. De waarde van elk geheim wordt rechtstreeks opgegeven of als verwijzing naar een geheim dat is opgeslagen in Azure Key Vault.
Notitie
Vermijd het opgeven van de waarde van een geheim rechtstreeks in een productieomgeving. Gebruik in plaats daarvan een verwijzing naar een geheim dat is opgeslagen in Azure Key Vault, zoals beschreven in de sectie Store-geheim in de sectie Container Apps.
Geheime waarde opslaan in Container Apps
Wanneer u geheimen definieert via de portal of via verschillende opdrachtregelopties.
Hier wordt een verbindingsreeks voor een opslagaccount in de wachtrij gedeclareerd in de secrets matrix. In dit voorbeeld vervangt u door <MY-CONNECTION-STRING-VALUE> de waarde van uw verbindingsreeks.
Wanneer u een container-app maakt, worden geheimen gedefinieerd met behulp van de --secrets parameter.
De parameter accepteert een door spaties gescheiden set naam-/waardeparen.
Met een gelijkteken (=) wordt elk paar gescheiden.
Hier wordt een verbindingsreeks naar een wachtrijopslagaccount gedeclareerd in de --secrets parameter. Vervang <CONNECTION_STRING> door de waarde van uw verbindingsreeks.
Wanneer u een container-app maakt, worden geheimen gedefinieerd als een of meer geheime objecten die worden doorgegeven via de ConfigurationSecrets parameter.
Hier wordt een verbindingsreeks voor een opslagaccount in de wachtrij gedeclareerd. De waarde hiervoor queue-connection-string is afkomstig van een omgevingsvariabele met de naam $QueueConnectionString.
Referentiegeheim uit Key Vault
Wanneer u een geheim definieert, maakt u een verwijzing naar een geheim dat is opgeslagen in Azure Key Vault. Container Apps haalt automatisch de geheime waarde op uit Key Vault en maakt deze beschikbaar als een geheim in uw container-app.
Als u wilt verwijzen naar een geheim uit Key Vault, moet u eerst beheerde identiteit inschakelen in uw container-app en de identiteit toegang verlenen tot de Key Vault-geheimen.
Als u toegang wilt verlenen tot Key Vault-geheimen, maakt u een toegangsbeleid in Key Vault voor de beheerde identiteit die u hebt gemaakt. Schakel de geheime machtiging Ophalen in voor dit beleid.
Hier wordt een verbindingsreeks voor een opslagaccount in de wachtrij gedeclareerd in de secrets matrix. De waarde wordt automatisch opgehaald uit Key Vault met behulp van de opgegeven identiteit. Als u een door een gebruiker beheerde identiteit wilt gebruiken, vervangt u deze door system de resource-id van de identiteit.
Vervang <KEY-VAULT-SECRET-URI> door de URI van uw geheim in Key Vault.
Wanneer u een container-app maakt, worden geheimen gedefinieerd met behulp van de --secrets parameter.
De parameter accepteert een door spaties gescheiden set naam-/waardeparen.
Met een gelijkteken (=) wordt elk paar gescheiden.
Als u een Key Vault-verwijzing wilt opgeven, gebruikt u de indeling <SECRET_NAME>=keyvaultref:<KEY_VAULT_SECRET_URI>,identityref:<MANAGED_IDENTITY_ID>. Bijvoorbeeld: 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.
Hier wordt een verbindingsreeks naar een wachtrijopslagaccount gedeclareerd in de --secrets parameter. Vervang <KEY_VAULT_SECRET_URI> door de URI van uw geheim in Key Vault. Vervang door <USER_ASSIGNED_IDENTITY_ID> de resource-id van de door de gebruiker toegewezen identiteit.
Notitie
De door de gebruiker toegewezen identiteit moet toegang hebben tot het lezen van het geheim in Key Vault. Door het systeem toegewezen identiteit kan niet worden gebruikt met de opdracht maken, omdat deze pas beschikbaar is nadat de container-app is gemaakt.
Key Vault-verwijzingen naar geheimen worden niet ondersteund in PowerShell.
De geheime URI van Key Vault moet een van de volgende indelingen hebben:
https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931: Verwijs naar een specifieke versie van een geheim.
https://myvault.vault.azure.net/secrets/mysecret: Verwijs naar de nieuwste versie van een geheim.
Als een versie niet is opgegeven in de URI, gebruikt de app de nieuwste versie die in de sleutelkluis aanwezig is. Wanneer nieuwere versies beschikbaar komen, haalt de app binnen 30 minuten automatisch de nieuwste versie op. Actieve revisies die verwijzen naar het geheim in een omgevingsvariabele, worden automatisch opnieuw opgestart om de nieuwe waarde op te halen.
Geef de versie in de URI op voor volledig beheer van welke versie van een geheim wordt gebruikt.
Verwijzen naar geheimen in omgevingsvariabelen
Nadat u geheimen op toepassingsniveau hebt declareren zoals beschreven in de sectie Geheimen definiëren, kunt u ernaar verwijzen in omgevingsvariabelen wanneer u een nieuwe revisie in uw container-app maakt. Wanneer een omgevingsvariabele verwijst naar een geheim, wordt de waarde gevuld met de waarde die in het geheim is gedefinieerd.
Opmerking
In het volgende voorbeeld ziet u een toepassing die een verbindingsreeks declareert op toepassingsniveau. Naar deze verbinding wordt verwezen in een containeromgevingsvariabele en in een schaalregel.
Selecteer een container op de pagina Nieuwe revisie maken en implementeren.
Selecteer Toevoegen in de sectie Omgevingsvariabelen.
Voer de volgende informatie in:
Naam: De naam van de omgevingsvariabele.
Bron: Selecteer Verwijzing naar een geheim.
Waarde: Selecteer het geheim waarnaar u wilt verwijzen.
Selecteer Opslaan.
Selecteer Maken om de nieuwe revisie te maken.
In dit voorbeeld wordt de toepassing verbindingsreeks gedeclareerd als queue-connection-string en wordt deze elders beschikbaar in de configuratiesecties.
Hier haalt de omgevingsvariabele met de naam connection-string de waarde op uit het geheim op toepassingsniveau queue-connection-string . De verificatieconfiguratie van de Azure Queue Storage-schaalregel maakt ook gebruik van het geheim om de queue-connection-string verbinding te definiëren.
Als u wilt voorkomen dat geheime waarden worden doorgevoerd in broncodebeheer met uw ARM-sjabloon, geeft u geheime waarden door als ARM-sjabloonparameters.
In dit voorbeeld maakt u een container-app met behulp van de Azure CLI met een geheim waarnaar wordt verwezen in een omgevingsvariabele. Als u wilt verwijzen naar een geheim in een omgevingsvariabele in de Azure CLI, stelt u de waarde secretref:in op , gevolgd door de naam van het geheim.
Hier haalt de omgevingsvariabele met de naam connection-string de waarde op uit het geheim op toepassingsniveau queue-connection-string .
Key Vault-verwijzingen naar geheimen worden niet ondersteund in PowerShell.
In dit voorbeeld maakt u een container met behulp van Azure PowerShell met een geheim waarnaar wordt verwezen in een omgevingsvariabele. Als u wilt verwijzen naar het geheim in een omgevingsvariabele in PowerShell, stelt u de waarde secretref:in op , gevolgd door de naam van het geheim.
Hier haalt de omgevingsvariabele met de naam ConnectionString de waarde op uit het geheim op toepassingsniveau $QueueConnectionString .
Geheimen in een volume koppelen
Nadat u geheimen op toepassingsniveau hebt declareren zoals beschreven in de sectie Geheimen definiëren, kunt u ernaar verwijzen in volumekoppelingen wanneer u een nieuwe revisie in uw container-app maakt. Wanneer u geheimen in een volume koppelt, wordt elk geheim gekoppeld als een bestand in het volume. De bestandsnaam is de naam van het geheim en de bestandsinhoud is de waarde van het geheim. U kunt alle geheimen in een volumekoppeling laden of specifieke geheimen laden.
Op de pagina Nieuwe revisie maken en implementeren.
Selecteer een container en selecteer Bewerken.
Vouw in de sectie Volumekoppelingen de sectie Geheimen uit.
Selecteer Nieuw volume maken.
Voer de volgende informatie in:
Naam: mysecrets
Alle geheimen koppelen: ingeschakeld
Notitie
Als u specifieke geheimen wilt laden, schakelt u Alle geheimen koppelen uit en selecteert u de geheimen die u wilt laden.
Selecteer Toevoegen.
Selecteer onder Volumenaam mysecrets.
Voer onder Koppelingspad /mnt/secrets in.
Selecteer Opslaan.
Selecteer Maken om de nieuwe revisie te maken met de volumekoppeling.
In dit voorbeeld worden twee geheimen gedeclareerd op toepassingsniveau. Deze geheimen worden gekoppeld in een volume met de naam mysecrets van het type Secret. Het volume is gekoppeld aan het pad /mnt/secrets. De toepassing kan vervolgens verwijzen naar de geheimen in de volumekoppeling.
Als u specifieke geheimen wilt laden en hun paden binnen het gekoppelde volume wilt opgeven, definieert u de geheimen in de secrets matrix van het volumeobject. In het volgende voorbeeld ziet u hoe u alleen het queue-connection-string geheim in de mysecrets volumekoppeling laadt met een bestandsnaam van connection-string.txt.
In uw app kunt u het geheim lezen uit een bestand in /mnt/secrets/connection-string.txt.
In dit voorbeeld worden twee geheimen gedeclareerd op toepassingsniveau. Deze geheimen worden gekoppeld in een volume met de naam mysecrets van het type Secret. Het volume is gekoppeld aan het pad /mnt/secrets. De toepassing kan de geheimen vervolgens lezen als bestanden in de volumekoppeling.