Instalowanie woluminu tajnego w Azure Container Instances

Użyj woluminu tajnego , aby dostarczyć poufne informacje do kontenerów w grupie kontenerów. Wolumin tajny przechowuje wpisy tajne w plikach w woluminie dostępnym dla kontenerów w grupie kontenerów. Przechowywanie wpisów tajnych w woluminie tajnym pozwala uniknąć dodawania poufnych danych, takich jak klucze SSH lub poświadczenia bazy danych do kodu aplikacji.

  • Po wdrożeniu z wpisami tajnymi w grupie kontenerów wolumin tajny jest tylko do odczytu.
  • Wszystkie woluminy tajne są wspierane przez tmpfs, system plików oparty na pamięci RAM; ich zawartość nigdy nie jest zapisywana w magazynie nietrwałym.

Uwaga

Woluminy tajne są obecnie ograniczone do kontenerów systemu Linux. Dowiedz się, jak przekazywać bezpieczne zmienne środowiskowe dla kontenerów systemu Windows i Linux w temacie Ustawianie zmiennych środowiskowych. Podczas pracy nad wprowadzeniem wszystkich funkcji do kontenerów systemu Windows można znaleźć bieżące różnice między platformami w omówieniu.

Instalowanie woluminu tajnego — interfejs wiersza polecenia platformy Azure

Aby wdrożyć kontener z co najmniej jednym wpisem tajnym przy użyciu interfejsu wiersza polecenia platformy Azure, dołącz --secrets parametry i --secrets-mount-path w poleceniu az container create . W tym przykładzie instaluje się wolumin tajny składający się z dwóch plików zawierających wpisy tajne:"mysecret1" i "mysecret2", w lokalizacji /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

Następujące dane wyjściowe az container exec pokazują otwarcie powłoki w uruchomionym kontenerze, wyświetlenie listy plików w woluminie tajnym, a następnie wyświetlenie ich zawartości:

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.

Instalowanie woluminu wpisu tajnego — YAML

Grupy kontenerów można również wdrażać za pomocą interfejsu wiersza polecenia platformy Azure i szablonu YAML. Wdrażanie za pomocą szablonu YAML jest preferowaną metodą wdrażania grup kontenerów składających się z wielu kontenerów.

Podczas wdrażania przy użyciu szablonu YAML wartości wpisów tajnych muszą być zakodowane w formacie Base64 w szablonie. Jednak wartości wpisów tajnych są wyświetlane w postaci zwykłego tekstu w plikach w kontenerze.

Poniższy szablon YAML definiuje grupę kontenerów z jednym kontenerem, który instaluje wolumin tajny w lokalizacji /mnt/secrets. Wolumin tajny zawiera dwa pliki zawierające wpisy tajne: "mysecret1" i "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

Aby wdrożyć za pomocą szablonu YAML, zapisz poprzedni plik YAML w pliku o nazwie deploy-aci.yaml, a następnie wykonaj polecenie az container create za pomocą parametru --file :

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

Instalowanie woluminu wpisu tajnego — Resource Manager

Oprócz wdrożenia interfejsu wiersza polecenia i kodu YAML można wdrożyć grupę kontenerów przy użyciu szablonu usługi Azure Resource Manager.

Najpierw wypełnij tablicę volumes w sekcji grupy properties kontenerów szablonu. Podczas wdrażania przy użyciu szablonu Resource Manager wartości wpisu tajnego muszą być zakodowane w formacie Base64 w szablonie. Jednak wartości wpisów tajnych są wyświetlane w postaci zwykłego tekstu w plikach w kontenerze.

Następnie dla każdego kontenera w grupie kontenerów, w której chcesz zainstalować wolumin tajny , wypełnij tablicę volumeMounts w properties sekcji definicji kontenera.

Poniższy szablon Resource Manager definiuje grupę kontenerów z jednym kontenerem, który instaluje wolumin tajny w lokalizacji /mnt/secrets. Wolumin tajny zawiera dwa wpisy tajne: "mysecret1" i "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"
            }
          }
        ]
      }
    }
  ]
}

Aby wdrożyć przy użyciu szablonu Resource Manager, zapisz poprzedni kod JSON w pliku o nazwie deploy-aci.json, a następnie wykonaj polecenie az deployment group create za pomocą parametru --template-file :

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

Następne kroki

Woluminy

Dowiedz się, jak zainstalować inne typy woluminów w Azure Container Instances:

Zabezpieczanie zmiennych środowiskowych

Inną metodą dostarczania poufnych informacji do kontenerów (w tym kontenerów systemu Windows) jest użycie bezpiecznych zmiennych środowiskowych.