Bagikan melalui


Tutorial: Menyiapkan penyebaran untuk kontainer rahasia di Azure Container Instances

Di Azure Container Instances, Anda dapat menggunakan kontainer rahasia pada platform tanpa server untuk menjalankan aplikasi kontainer di lingkungan eksekusi tepercaya (TEE) berbasis perangkat keras dan dibuktikan. Kemampuan ini dapat membantu melindungi data yang digunakan dan menyediakan enkripsi dalam memori melalui Halaman Berlapis Aman.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Buat templat Azure Resource Manager (templat ARM) untuk grup kontainer rahasia.
  • Buat kebijakan penegakan komputasi rahasia (CCE).
  • Sebarkan grup kontainer rahasia ke Azure.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda harus memenuhi persyaratan berikut:

  • Azure CLI: Anda harus menginstal Azure CLI versi 2.44.1 atau yang lebih baru di komputer lokal Anda. Untuk menemukan versi Anda, jalankan az --version. Jika Anda perlu memasang atau meningkatkan, Pasang Azure CLI.

  • Ekstensi confcom Azure CLI: Anda harus menginstal ekstensi confcom Azure CLI versi 0.30+ untuk menghasilkan kebijakan penegakan komputasi rahasia.

    az extension add -n confcom
    
  • Docker: Anda memerlukan Docker yang diinstal secara lokal. Docker menyediakan paket yang mengonfigurasi lingkungan Docker di macOS, Windows, dan Linux.

    Tutorial ini mengasumsikan pemahaman dasar tentang konsep Docker inti seperti kontainer, gambar kontainer, dan perintah dasar docker . Untuk primer tentang Docker dan dasar kontainer, lihat Gambaran umum Docker.

Penting

Karena Azure Cloud Shell tidak menyertakan daemon Docker, Anda harus menginstal Azure CLI dan Docker Engine di komputer lokal Anda untuk menyelesaikan tutorial ini. Anda tidak dapat menggunakan Azure Cloud Shell untuk tutorial ini.

Membuat templat ARM untuk grup kontainer Container Instances

Dalam tutorial ini, Anda menyebarkan aplikasi Halo Dunia yang menghasilkan laporan pengesahan perangkat keras. Anda mulai dengan membuat templat ARM dengan sumber daya grup kontainer untuk menentukan properti aplikasi ini. Anda kemudian menggunakan templat ARM ini dengan alat confcom Azure CLI untuk menghasilkan kebijakan CCE untuk pengesahan.

Tutorial ini menggunakan templat ARM ini sebagai contoh. Untuk melihat kode sumber untuk aplikasi ini, lihat Azure Container Instances Confidential Halo Dunia.

Contoh templat menambahkan dua properti ke definisi sumber daya Container Instances untuk membuat grup kontainer rahasia:

  • sku: Memungkinkan Anda memilih antara penyebaran grup kontainer rahasia dan standar. Jika Anda tidak menambahkan properti ini ke sumber daya, grup kontainer akan menjadi penyebaran standar.
  • confidentialComputeProperties: Memungkinkan Anda meneruskan kebijakan CCE kustom untuk pengesahan grup kontainer Anda. Jika Anda tidak menambahkan objek ini ke sumber daya, komponen perangkat lunak yang berjalan dalam grup kontainer tidak akan divalidasi.

Catatan

Parameter ccePolicy di bawah confidentialComputeProperties kosong. Anda akan mengisinya setelah membuat kebijakan nanti dalam tutorial.

Gunakan editor teks pilihan Anda untuk menyimpan templat ARM ini di komputer lokal Anda sebagai template.json.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "name": {
        "type": "string",
        "defaultValue": "helloworld",
        "metadata": {
          "description": "Name for the container group"
        }
      },
      "location": {
        "type": "string",
        "defaultValue": "North Europe",
        "metadata": {
          "description": "Location for all resources."
        }
      },
      "image": {
        "type": "string",
        "defaultValue": "mcr.microsoft.com/aci/aci-confidential-helloworld:v1",
        "metadata": {
          "description": "Container image to deploy. Should be of the form repoName/imagename:tag for images stored in public Docker Hub, or a fully qualified URI for other registries. Images from private registries require additional registry credentials."
        }
      },
      "port": {
        "type": "int",
        "defaultValue": 80,
        "metadata": {
          "description": "Port to open on the container and the public IP address."
        }
      },
      "cpuCores": {
        "type": "int",
        "defaultValue": 1,
        "metadata": {
          "description": "The number of CPU cores to allocate to the container."
        }
      },
      "memoryInGb": {
        "type": "int",
        "defaultValue": 1,
        "metadata": {
          "description": "The amount of memory to allocate to the container in gigabytes."
        }
      },
      "restartPolicy": {
        "type": "string",
        "defaultValue": "Never",
        "allowedValues": [
          "Always",
          "Never",
          "OnFailure"
        ],
        "metadata": {
          "description": "The behavior of Azure runtime if container has stopped."
        }
      }
    },
    "resources": [
      {
        "type": "Microsoft.ContainerInstance/containerGroups",
        "apiVersion": "2023-05-01",
        "name": "[parameters('name')]",
        "location": "[parameters('location')]",
        "properties": {
          "confidentialComputeProperties": {
            "ccePolicy": ""
          },
          "containers": [
            {
              "name": "[parameters('name')]",
              "properties": {
                "image": "[parameters('image')]",
                "ports": [
                  {
                    "port": "[parameters('port')]",
                    "protocol": "TCP"
                  }
                ],
                "resources": {
                  "requests": {
                    "cpu": "[parameters('cpuCores')]",
                    "memoryInGB": "[parameters('memoryInGb')]"
                  }
                }
              }
            }
          ],
          "sku": "Confidential",
          "osType": "Linux",
          "restartPolicy": "[parameters('restartPolicy')]",
          "ipAddress": {
            "type": "Public",
            "ports": [
              {
                "port": "[parameters('port')]",
                "protocol": "TCP"
              }
            ]
          }
        }
      }
    ],
    "outputs": {
      "containerIPv4Address": {
        "type": "string",
        "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', parameters('name'))).ipAddress.ip]"
      }
    }
  }

Membuat kebijakan CCE kustom

Dengan templat ARM yang Anda buat dan ekstensi confcom Azure CLI, Anda dapat membuat kebijakan CCE kustom. Kebijakan CCE digunakan untuk pengesahan. Alat ini mengambil templat ARM sebagai input untuk menghasilkan kebijakan. Kebijakan memberlakukan gambar kontainer, variabel lingkungan, pemasangan, dan perintah tertentu, yang kemudian dapat divalidasi saat grup kontainer dimulai. Untuk informasi selengkapnya tentang ekstensi confcom Azure CLI, lihat dokumentasi di GitHub.

  1. Untuk menghasilkan kebijakan CCE, jalankan perintah berikut dengan menggunakan templat ARM sebagai input:

    az confcom acipolicygen -a .\template.json --print-policy
    

    Ketika perintah ini selesai, string Base64 yang dihasilkan sebagai output akan muncul dalam format berikut. String ini adalah kebijakan CCE yang Anda salin dan tempelkan ke templat ARM Anda sebagai nilai ccePolicy properti .

    cGFja2FnZSBwb2xpY3kKCmFwaV9zdm4gOj0gIjAuOS4wIgoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5ldmVyeQppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmluCgpmcmFnbWVudHMgOj0gWwpdCgpjb250YWluZXJzIDo9IFsKICAgIHsKICAgICAgICAiY29tbWFuZCI6IFsiL3BhdXNlIl0sCiAgICAgICAgImVudl9ydWxlcyI6IFt7InBhdHRlcm4iOiAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLCAic3RyYXRlZ3kiOiAic3RyaW5nIiwgInJlcXVpcmVkIjogdHJ1ZX0seyJwYXR0ZXJuIjogIlRFUk09eHRlcm0iLCAic3RyYXRlZ3kiOiAic3RyaW5nIiwgInJlcXVpcmVkIjogZmFsc2V9XSwKICAgICAgICAibGF5ZXJzIjogWyIxNmI1MTQwNTdhMDZhZDY2NWY5MmMwMjg2M2FjYTA3NGZkNTk3NmM3NTVkMjZiZmYxNjM2NTI5OTE2OWU4NDE1Il0sCiAgICAgICAgIm1vdW50cyI6IFtdLAogICAgICAgICJleGVjX3Byb2Nlc3NlcyI6IFtdLAogICAgICAgICJzaWduYWxzIjogW10sCiAgICAgICAgImFsbG93X2VsZXZhdGVkIjogZmFsc2UsCiAgICAgICAgIndvcmtpbmdfZGlyIjogIi8iCiAgICB9LApdCmFsbG93X3Byb3BlcnRpZXNfYWNjZXNzIDo9IHRydWUKYWxsb3dfZHVtcF9zdGFja3MgOj0gdHJ1ZQphbGxvd19ydW50aW1lX2xvZ2dpbmcgOj0gdHJ1ZQphbGxvd19lbnZpcm9ubWVudF92YXJpYWJsZV9kcm9wcGluZyA6PSB0cnVlCmFsbG93X3VuZW5jcnlwdGVkX3NjcmF0Y2ggOj0gdHJ1ZQoKCm1vdW50X2RldmljZSA6PSB7ICJhbGxvd2VkIiA6IHRydWUgfQp1bm1vdW50X2RldmljZSA6PSB7ICJhbGxvd2VkIiA6IHRydWUgfQptb3VudF9vdmVybGF5IDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CnVubW91bnRfb3ZlcmxheSA6PSB7ICJhbGxvd2VkIiA6IHRydWUgfQpjcmVhdGVfY29udGFpbmVyIDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CmV4ZWNfaW5fY29udGFpbmVyIDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CmV4ZWNfZXh0ZXJuYWwgOj0geyAiYWxsb3dlZCIgOiB0cnVlIH0Kc2h1dGRvd25fY29udGFpbmVyIDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CnNpZ25hbF9jb250YWluZXJfcHJvY2VzcyA6PSB7ICJhbGxvd2VkIiA6IHRydWUgfQpwbGFuOV9tb3VudCA6PSB7ICJhbGxvd2VkIiA6IHRydWUgfQpwbGFuOV91bm1vdW50IDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CmdldF9wcm9wZXJ0aWVzIDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CmR1bXBfc3RhY2tzIDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CnJ1bnRpbWVfbG9nZ2luZyA6PSB7ICJhbGxvd2VkIiA6IHRydWUgfQpsb2FkX2ZyYWdtZW50IDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CnNjcmF0Y2hfbW91bnQgOj0geyAiYWxsb3dlZCIgOiB0cnVlIH0Kc2NyYXRjaF91bm1vdW50IDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CnJlYXNvbiA6PSB7ImVycm9ycyI6IGRhdGEuZnJhbWV3b3JrLmVycm9yc30K
    
  2. Simpan perubahan ke salinan lokal templat ARM Anda.

Menyebarkan templat

Dalam langkah-langkah berikut, Anda menggunakan portal Azure untuk menyebarkan templat. Anda juga dapat menggunakan Azure PowerShell, Azure CLI, atau REST API. Untuk mempelajari tentang metode penyebaran lainnya, lihat Menyebarkan templat.

  1. Pilih tombol Sebarkan ke Azure untuk masuk ke Azure dan mulai penyebaran Container Instances.

    Button to deploy the Resource Manager template to Azure.

  2. Pilih Buat template Anda sendiri di editor.

    Screenshot of the button for building your own template in the editor.

    JSON templat yang muncul sebagian besar kosong.

  3. Pilih Muat file dan unggah template.json, yang Anda ubah dengan menambahkan kebijakan CCE di langkah-langkah sebelumnya.

    Screenshot of the button for loading a file.

  4. Pilih Simpan.

  5. Pilih atau masukkan nilai berikut:

    • Langganan: Pilih langganan Azure.
    • Grup sumber daya: Pilih Buat baru, masukkan nama unik untuk grup sumber daya, lalu pilih OK.
    • Nama: Terima nama yang dihasilkan untuk instans, atau masukkan nama.
    • Lokasi: Pilih lokasi untuk grup sumber daya. Pilih wilayah tempat kontainer rahasia didukung. Contoh: Eropa Utara.
    • Gambar: Terima nama gambar default. Contoh gambar Linux ini menampilkan pengesahan perangkat keras.

    Terima nilai default untuk properti yang tersisa, lalu pilih Tinjau + buat.

    Screenshot of details for a custom ARM template deployment.

  6. Tinjau syarat dan ketentuan. Jika setuju, pilih Saya menyetujui syarat dan ketentuan yang dinyatakan di atas.

  7. Tunggu hingga pemberitahuan Penyebaran berhasil muncul. Ini mengonfirmasi bahwa Anda berhasil membuat instans.

    Screenshot of a portal notification for successful deployment.

Meninjau sumber daya yang disebarkan

Dalam langkah-langkah berikut, Anda menggunakan portal Azure untuk meninjau properti instans kontainer. Anda juga dapat menggunakan alat seperti Azure CLI.

  1. Di portal, cari Container Instances, lalu pilih instans kontainer yang Anda buat.

  2. Pada halaman Gambaran Umum , perhatikan status instans dan alamat IP-nya.

    Screenshot of the overview page for a container group instance.

  3. Saat status instans Berjalan, buka alamat IP di browser Anda.

    Screenshot of a browser view of an app deployed via Azure Container Instances.

    Kehadiran laporan pengesahan di bawah logo Azure Container Instances mengonfirmasi bahwa kontainer berjalan pada perangkat keras yang mendukung TEE.

    Jika Anda menyebarkan ke perangkat keras yang tidak mendukung TEE (misalnya, dengan memilih wilayah di mana Container Instances Confidential tidak tersedia), tidak ada laporan pengesahan yang muncul.

Setelah menyebarkan grup kontainer rahasia di Container Instances, Anda dapat mempelajari selengkapnya tentang bagaimana kebijakan diberlakukan: