Een app beveiligen in Azure Container Apps Preview

Met Azure Container Apps kan uw toepassing veilig gevoelige configuratiewaarden opslaan. Zodra beveiligde waarden op toepassingsniveau zijn gedefinieerd, zijn ze beschikbaar voor containers, binnen schaalregels en via Dapr.

  • Geheimen zijn gericht op een toepassing, buiten een specifieke revisie van een toepassing.
  • Het toevoegen, verwijderen of wijzigen van geheimen genereert geen nieuwe revisies.
  • Elke toepassingsrevisie kan verwijzen naar een of meer geheimen.
  • Meerdere revisies kunnen verwijzen naar dezelfde geheimen.

Wanneer een geheim wordt bijgewerkt of verwijderd, kunt u op twee manieren reageren op wijzigingen:

  1. Implementeer een nieuwe revisie.
  2. Start een bestaande revisie opnieuw op.

Een bijgewerkt of verwijderd geheim start een revisie niet automatisch opnieuw.

  • Voordat u een geheim verwijdert, implementeert u een nieuwe revisie die niet langer verwijst naar het oude geheim.
  • Als u een geheime waarde wijzigt, moet u de revisie opnieuw starten om de nieuwe waarde te gebruiken.

Geheimen definiƫren

Geheimen worden gedefinieerd op toepassingsniveau in de resources.properties.configuration.secrets sectie .

"resources": [
{
    ...
    "properties": {
        "configuration": {
            "secrets": [
            {
                "name": "queue-connection-string",
                "value": "<MY-CONNECTION-STRING-VALUE>"
            }],
        }
    }
}

Hier wordt een connection string naar een opslagaccount voor de wachtrij gedeclareerd in de secrets matrix. Als u deze configuratie wilt gebruiken, vervangt <MY-CONNECTION-STRING-VALUE> u door de waarde van uw connection string.

Geheimen gebruiken

Er wordt naar toepassingsgeheimen verwezen via de secretref eigenschap . Geheime waarden worden aan geheimen op toepassingsniveau, waarbij de waarde overeenkomt met de geheime naam die secretref is gedeclareerd op toepassingsniveau.

Voorbeeld

In het volgende voorbeeld ziet u een toepassing die een connection string op toepassingsniveau declareert en in de hele configuratie wordt gebruikt via secretref .

In dit voorbeeld wordt de connection string gedeclareerd als queue-connection-string en komt deze elders beschikbaar in de configuratiesecties.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "location": {
            "type": "String"
        },
        "environment_id": {
            "type": "String"
        },
        "queue-connection-string": {
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
    {
        "name": "queuereader",
        "type": "Microsoft.Web/containerApps",
        "apiVersion": "2021-03-01",
        "kind": "containerapp",
        "location": "[parameters('location')]",
        "properties": {
            "kubeEnvironmentId": "[parameters('environment_id')]",
            "configuration": {
                "activeRevisionsMode": "single",
                "secrets": [
                {
                    "name": "queue-connection-string",
                    "value": "[parameters('queue-connection-string')]"
                }]
            },
            "template": {
                "containers": [
                    {
                        "image": "myregistry/myQueueApp:v1",
                        "name": "myQueueApp",
                        "env": [
                            {
                                "name": "QueueName",
                                "value": "myqueue"
                            },
                            {
                                "name": "ConnectionString",
                                "secretref": "queue-connection-string"
                            }
                        ]
                    }
                ],
                "scale": {
                    "minReplicas": 0,
                    "maxReplicas": 10,
                    "rules": [
                        {
                            "name": "myqueuerule",
                            "azureQueue": {
                                "queueName": "demoqueue",
                                "queueLength": 100,
                                "auth": [
                                    {
                                        "secretRef": "queue-connection-string",
                                        "triggerParameter": "connection"
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        }
    }]
}

Hier haalt de omgevingsvariabele connection-string met de naam zijn waarde op uit het geheim op queue-connection-string toepassingsniveau. Bovendien maakt de Azure Queue Storage de autorisatieconfiguratie van de schaalregel gebruik queue-connection-string van de als er een verbinding tot stand is gebracht.

Geef geheime waarden door als ARM-sjabloonparameters om te voorkomen dat geheime waarden worden doorgeslagen in broncodebeheer met uw ARM-sjabloon.

Volgende stappen