Delen via


Een geheim volume koppelen in Azure Container Instances

Gebruik een geheim volume om gevoelige informatie te leveren aan de containers in een containergroep. Het geheime volume slaat uw geheimen op in bestanden binnen het volume, toegankelijk 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 een geheimvolume is geïmplementeerd met geheimen in een containergroep, heeft het volume het kenmerk Alleen-lezen.
  • Alle geheime volumes worden ondersteund door tmpfs, een door RAM ondersteund bestandssysteem; de inhoud ervan 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. We werken eraan om alle functies naar Windows-containers te brengen, maar in het overzicht vindt u de huidige platformverschillen.

Geheimvolume koppelen - Azure CLI

Als u een container met een of meer geheimen wilt implementeren met behulp van de Azure CLI, neemt u de --secrets parameters en --secrets-mount-path op in de opdracht az container create . In dit voorbeeld wordt een geheimvolume 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 uitvoer van az container exec toont het openen van een shell in de actieve container, het weergeven van de bestanden in het geheime volume en vervolgens de inhoud ervan:

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.

Geheime volume koppelen - YAML

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

Wanneer u implementeert met een YAML-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.

De volgende YAML-sjabloon definieert een containergroep met één container die een geheim volume koppelt op /mnt/secrets. Het geheime volume heeft 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 de opdracht az container create uit met de --file parameter :

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

Geheime volume koppelen - Resource Manager

Naast 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 in. 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.

De volgende Resource Manager sjabloon definieert een containergroep met één container die een geheim volume koppelt op /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 sjabloon Resource Manager, slaat u de voorgaande JSON op in een bestand met de naam deploy-aci.jsonen voert u 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 het gebruik van beveiligde omgevingsvariabelen.