Skydda en app i förhandsversionen av Azure Container Apps

Med Azure Container Apps kan ditt program lagra känsliga konfigurationsvärden på ett säkert sätt. När de har definierats på programnivå är skyddade värden tillgängliga för containrar, inuti skalningsregler och via Dapr.

  • Hemligheter är begränsade till ett program, utanför en specifik revision 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 hemligheter.

När en hemlighet uppdateras eller tas bort kan du svara på ändringar på något av två sätt:

  1. Distribuera en ny revision.
  2. Starta om en befintlig revision.

En uppdaterad eller borttagen hemlighet startar inte automatiskt om en revision.

  • Innan du tar bort en hemlighet distribuerar du en ny revision som inte längre refererar till den gamla hemligheten.
  • Om du ändrar ett hemligt värde måste du starta om versionen för att använda det nya värdet.

Definiera hemligheter

Hemligheter definieras på programnivå i resources.properties.configuration.secrets avsnittet.

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

Här deklareras en anslutningssträng till ett kölagringskonto i secrets matrisen. Om du vill använda den här konfigurationen <MY-CONNECTION-STRING-VALUE> ersätter du med värdet för anslutningssträngen.

Använda hemligheter

Programhemligheter refereras via secretref egenskapen . Hemliga värden mappas till hemligheter på programnivå där värdet secretref matchar det hemliga namn som deklareras på programnivå.

Exempel

I följande exempel visas ett program som deklarerar en anslutningssträng på programnivå och som används i hela konfigurationen via secretref .

I det här exemplet deklareras programmets anslutningssträng som queue-connection-string och blir tillgänglig någon annanstans i konfigurationsavsnitten.

{
    "$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"
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        }
    }]
}

Här hämtar miljövariabeln connection-string med namnet dess värde från hemligheten på queue-connection-string programnivå. Dessutom använder Azure Queue Storage-skalningsregelns auktoriseringskonfiguration queue-connection-string som en anslutning upprättas.

För att undvika att använda hemliga värden för källkontroll med ARM-mallen skickar du hemliga värden som ARM-mallparametrar.

Nästa steg