Dela via


Montera en hemlighetsvolym i Azure Container Instances

Använd en hemlig volym för att tillhandahålla känslig information till containrarna i en containergrupp. Den hemliga volymen lagrar dina hemligheter i filer i volymen, som är tillgängliga för containrarna i containergruppen. Genom att lagra hemligheter i en hemlig volym kan du undvika att lägga till känsliga data som SSH-nycklar eller databasautentiseringsuppgifter i programkoden.

  • När den har distribuerats med hemligheter i en containergrupp är en hemlig volym skrivskyddad.
  • Alla hemliga volymer backas upp av tmpfs, ett RAM-säkerhetskopierat filsystem. Innehållet skrivs aldrig till icke-flyktig lagring.

Kommentar

Hemliga volymer är för närvarande begränsade till Linux-containrar. Lär dig hur du skickar säkra miljövariabler för både Windows- och Linux-containrar i Ange miljövariabler. Medan vi arbetar med att ta alla funktioner till Windows-containrar kan du hitta aktuella plattformsskillnader i översikten.

Montera hemlig volym – Azure CLI

Om du vill distribuera en container med en eller flera hemligheter med hjälp av Azure CLI tar du med parametrarna --secrets och --secrets-mount-path i kommandot az container create . I det här exemplet monteras en hemlig volym som består av två filer som innehåller hemligheter, "mysecret1" och "mysecret2", på /mnt/secrets:

az container create \
    --resource-group myResourceGroup \
    --name secret-volume-demo \
    --image mcr.microsoft.com/azuredocs/aci-helloworld \
    --secrets mysecret1="My first secret FOO" mysecret2="My second secret BAR" \
    --secrets-mount-path /mnt/secrets

Följande az containerexec-utdata visar hur du öppnar ett gränssnitt i den container som körs, listar filerna i den hemliga volymen och visar sedan innehållet:

az container exec \
  --resource-group myResourceGroup \
  --name secret-volume-demo --exec-command "/bin/sh"
/usr/src/app # ls /mnt/secrets
mysecret1
mysecret2
/usr/src/app # cat /mnt/secrets/mysecret1
My first secret FOO
/usr/src/app # cat /mnt/secrets/mysecret2
My second secret BAR
/usr/src/app # exit
Bye.

Montera hemlig volym – YAML

Du kan också distribuera containergrupper med Azure CLI och en YAML-mall. Att distribuera med YAML-mall är den bästa metoden när du distribuerar containergrupper som består av flera containrar.

När du distribuerar med en YAML-mall måste de hemliga värdena vara Base64-kodade i mallen. De hemliga värdena visas dock i klartext i filerna i containern.

Följande YAML-mall definierar en containergrupp med en container som monterar en hemlig volym på /mnt/secrets. Den hemliga volymen har två filer som innehåller hemligheter, "mysecret1" och "mysecret2".

apiVersion: '2019-12-01'
location: eastus
name: secret-volume-demo
properties:
  containers:
  - name: aci-tutorial-app
    properties:
      environmentVariables: []
      image: mcr.microsoft.com/azuredocs/aci-helloworld:latest
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
      volumeMounts:
      - mountPath: /mnt/secrets
        name: secretvolume1
  osType: Linux
  restartPolicy: Always
  volumes:
  - name: secretvolume1
    secret:
      mysecret1: TXkgZmlyc3Qgc2VjcmV0IEZPTwo=
      mysecret2: TXkgc2Vjb25kIHNlY3JldCBCQVIK
tags: {}
type: Microsoft.ContainerInstance/containerGroups

Om du vill distribuera med YAML-mallen sparar du föregående YAML i en fil med namnet deploy-aci.yamloch kör sedan kommandot az container create med parametern --file :

# Deploy with YAML template
az container create \
  --resource-group myResourceGroup \
  --file deploy-aci.yaml

Montera hemlig volym – Resource Manager

Förutom CLI- och YAML-distribution kan du distribuera en containergrupp med hjälp av en Azure Resource Manager-mall.

Fyll först i matrisen volumes i avsnittet containergrupp properties i mallen. När du distribuerar med en Resource Manager-mall måste de hemliga värdena vara Base64-kodade i mallen. De hemliga värdena visas dock i klartext i filerna i containern.

För varje container i containergruppen där du vill montera den hemliga volymen fyller du sedan i matrisen volumeMounts properties i avsnittet i containerdefinitionen.

Följande Resource Manager-mall definierar en containergrupp med en container som monterar en hemlig volym på /mnt/secrets. Den hemliga volymen har två hemligheter, "mysecret1" och "mysecret2".

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "container1name": "aci-tutorial-app",
    "container1image": "microsoft/aci-helloworld:latest"
  },
  "resources": [
    {
      "type": "Microsoft.ContainerInstance/containerGroups",
      "apiVersion": "2021-03-01",
      "name": "secret-volume-demo",
      "location": "[resourceGroup().location]",
      "properties": {
        "containers": [
          {
            "name": "[variables('container1name')]",
            "properties": {
              "image": "[variables('container1image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              },
              "ports": [
                {
                  "port": 80
                }
              ],
              "volumeMounts": [
                {
                  "name": "secretvolume1",
                  "mountPath": "/mnt/secrets"
                }
              ]
            }
          }
        ],
        "osType": "Linux",
        "ipAddress": {
          "type": "Public",
          "ports": [
            {
              "protocol": "tcp",
              "port": "80"
            }
          ]
        },
        "volumes": [
          {
            "name": "secretvolume1",
            "secret": {
              "mysecret1": "TXkgZmlyc3Qgc2VjcmV0IEZPTwo=",
              "mysecret2": "TXkgc2Vjb25kIHNlY3JldCBCQVIK"
            }
          }
        ]
      }
    }
  ]
}

Om du vill distribuera med Resource Manager-mallen sparar du föregående JSON i en fil med namnet deploy-aci.jsonoch kör sedan kommandot az deployment group create med parametern --template-file :

# Deploy with Resource Manager template
az deployment group create \
  --resource-group myResourceGroup \
  --template-file deploy-aci.json

Nästa steg

Volymer

Lär dig hur du monterar andra volymtyper i Azure Container Instances:

Säkra miljövariabler

En annan metod för att tillhandahålla känslig information till containrar (inklusive Windows-containrar) är att använda säkra miljövariabler.