Memasang volume rahasia di Azure Container Instances

Gunakan volume rahasia untuk menyediakan informasi sensitif ke kontainer dalam grup kontainer. Volume rahasia menyimpan rahasia Anda pada file dalam volume, dapat diakses oleh kontainer dalam grup kontainer. Dengan menyimpan rahasia dalam volume rahasia, Anda dapat menghindari penambahan data sensitif seperti kunci SSH atau info masuk database ke kode aplikasi Anda.

  • Setelah disebarkan dengan rahasia dalam grup kontainer, volume rahasia baca-saja.
  • Semua volume rahasia didukung oleh tmpfs, sistem berkas yang didukung RAM; kontennya tidak pernah ditulis ke penyimpanan non-volatil.

Catatan

Volume rahasia saat ini dibatasi untuk kontainer Linux. Pelajari cara melewati variabel lingkungan yang aman untuk kontainer Windows dan Linux dalam Mengatur variabel lingkungan. Meskipun kami sedang berupaya untuk membawa semua fitur ke kontainer Windows, Anda dapat menemukan perbedaan platform saat ini dalam ringkasan.

Memasang volume rahasia - Azure CLI

Untuk menyebarkan kontainer dengan satu atau beberapa rahasia dengan menggunakan Azure CLI, sertakan parameter --secrets dan --secrets-mount-path dalam perintah az container create. Contoh ini memasang volume rahasia yang terdiri dari dua file yang berisi rahasia, "mysecret1" dan "mysecret2," di /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

Output az container exec berikut menunjukkan membuka shell di kontainer yang sedang berjalan, mencantumkan file dalam volume rahasia, lalu menampilkan isinya:

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.

Memasang volume rahasia - YAML

Anda juga dapat menyebarkan grup kontainer dengan Azure CLI dan templat YAML. Menyebarkan oleh templat YAML adalah metode yang disukai ketika menyebarkan grup kontainer yang terdiri dari beberapa kontainer.

Saat Anda menyebarkan templat YAML, nilai rahasia harus dikodekan Base64 dalam templat. Namun, nilai rahasia muncul pada teksbersih dalam file di kontainer.

Templat YAML berikut mendefinisikan grup kontainer dengan satu kontainer yang memasang volume rahasia di /mnt/secrets. Volume rahasia memiliki dua file yang berisi rahasia, "mysecret1" dan "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

Untuk menyebarkan dengan templat YAML, simpan YAML sebelumnya ke file bernama deploy-aci.yaml, lalu jalankan perintah az container create dengan parameter --file:

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

Memasang volume rahasia - Azure Resource Manager

Selain penyebaran CLI dan YAML, Anda dapat menyebarkan grup kontainer menggunakan templat Azure Resource Manager.

Pertama, isi array volumes di bagian grup kontainer properties templat. Saat Anda menyebarkan templat Azure Resource Manager, nilai rahasia harus dikodekan Base64 dalam templat. Namun, nilai rahasia muncul pada teksbersih dalam file di kontainer.

Selanjutnya, untuk setiap kontainer dalam grup kontainer tempat Anda ingin memasang volume rahasia, isi array volumeMounts di bagian properties dari definisi kontainer.

Templat Azure Resource Manager berikut mendefinisikan grup kontainer dengan satu kontainer yang memasang volume rahasia di /mnt/secrets. Volume rahasia memiliki dua rahasia, "mysecret1" dan "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"
            }
          }
        ]
      }
    }
  ]
}

Untuk menyebarkan templat Azure Resource Manager, simpan JSON sebelumnya ke file bernama deploy-aci.json, lalu jalankan perintah az deployment group create dengan parameter --template-file:

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

Langkah berikutnya

Volume

Pelajari cara memasang jenis volume lainnya di Azure Container Instances:

Variabel lingkungan yang aman

Metode lain untuk memberikan informasi sensitif kepada kontainer (termasuk kontainer Windows) adalah melalui penggunaan variabel lingkungan yang aman.