Share via


Een geheim volume koppelen in Azure Container Instances

Gebruik een geheim volume om gevoelige informatie op te geven aan de containers in een containergroep. Op het geheime volume worden uw geheimen opgeslagen in bestanden binnen het volume, die toegankelijk zijn voor de containers in de containergroep. Door geheimen op te slaan in een geheim volume, kunt u voorkomen dat gevoelige gegevens, zoals SSH-sleutels of databasereferenties, worden toegevoegd aan uw toepassingscode.

  • Zodra het is geïmplementeerd met geheimen in een containergroep, heeft een geheim volume het kenmerk Alleen-lezen.
  • Alle geheime volumes worden ondersteund door tmpfs, een door RAM ondersteund bestandssysteem; hun inhoud wordt nooit naar niet-vluchtige opslag geschreven.

Notitie

Geheime volumes zijn momenteel beperkt tot Linux-containers. Meer informatie over het doorgeven van beveiligde omgevingsvariabelen voor zowel Windows- als Linux-containers in Omgevingsvariabelen instellen. Hoewel we alle functies naar Windows-containers willen overbrengen, kunt u de huidige platformverschillen vinden in het overzicht.

Geheim volume koppelen - Azure CLI

Als u een container met een of meer geheimen wilt implementeren met behulp van de Azure CLI, neemt u de --secrets en --secrets-mount-path parameters op in de opdracht az container create . In dit voorbeeld wordt een geheim volume gekoppeld dat bestaat uit twee bestanden met geheimen, 'mysecret1' en 'mysecret2', op /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

De volgende az container exec-uitvoer toont het openen van een shell in de actieve container, het weergeven van de bestanden binnen het geheime volume en het weergeven van hun inhoud:

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.

Geheim volume koppelen - YAML

U kunt ook containergroepen implementeren met de Azure CLI en een YAML-sjabloon. Implementeren door YAML-sjabloon is de voorkeursmethode bij het implementeren van containergroepen die bestaan uit meerdere containers.

Wanneer u implementeert met een YAML-sjabloon, moeten de geheime waarden base64 in de sjabloon zijn gecodeerd . De geheime waarden worden echter weergegeven in tekst zonder opmaak in de bestanden in de container.

Met de volgende YAML-sjabloon wordt een containergroep gedefinieerd met één container waarmee een geheim volume wordt gekoppeld aan /mnt/secrets. Het geheime volume bevat twee bestanden met geheimen, 'mysecret1' en '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

Als u wilt implementeren met de YAML-sjabloon, slaat u de voorgaande YAML op in een bestand met de naam deploy-aci.yamlen voert u vervolgens de opdracht az container create uit met de --file parameter:

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

Geheim volume koppelen - Resource Manager

Naast de CLI- en YAML-implementatie kunt u een containergroep implementeren met behulp van een Azure Resource Manager-sjabloon.

Vul eerst de volumes matrix in de sectie containergroep properties van de sjabloon. Wanneer u implementeert met een Resource Manager-sjabloon, moeten de geheime waarden base64-gecodeerd zijn in de sjabloon. De geheime waarden worden echter weergegeven in tekst zonder opmaak in de bestanden in de container.

Vul vervolgens voor elke container in de containergroep waarin u het geheime volume wilt koppelen de volumeMounts matrix in de properties sectie van de containerdefinitie.

Met de volgende Resource Manager-sjabloon wordt een containergroep gedefinieerd met één container waarmee een geheim volume wordt gekoppeld aan /mnt/secrets. Het geheime volume heeft twee geheimen: 'mysecret1' en '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"
            }
          }
        ]
      }
    }
  ]
}

Als u wilt implementeren met de Resource Manager-sjabloon, slaat u de voorgaande JSON op in een bestand met de naam deploy-aci.jsonen voert u vervolgens de opdracht az deployment group create uit met de --template-file parameter:

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

Volgende stappen

Volumes

Meer informatie over het koppelen van andere volumetypen in Azure Container Instances:

Omgevingsvariabelen beveiligen

Een andere methode voor het verstrekken van gevoelige informatie aan containers (inclusief Windows-containers) is via het gebruik van veilige omgevingsvariabelen.