Mengenkripsi data penyebaran

Saat menjalankan sumber daya Azure Container Instances (ACI) di cloud, layanan ACI mengumpulkan dan mempertahankan data yang terkait dengan kontainer Anda. ACI secara otomatis mengenkripsi data ini ketika dipertahankan di cloud. Enkripsi melindungi data dan membantu Anda memenuhi komitmen keamanan dan kepatuhan organisasi Anda. ACI juga memberikan opsi untuk mengenkripsi data ini dengan kunci Anda sendiri, memberi Anda kontrol yang lebih besar atas data yang terkait dengan penyebaran ACI.

Tentang enkripsi data ACI

Data di ACI dienkripsi dan didekripsi menggunakan enkripsi AES 256-bit. Enkripsi ini diaktifkan untuk semua penyebaran ACI, dan Anda tidak perlu memodifikasi penyebaran atau kontainer Anda untuk memanfaatkan enkripsi ini. Enkripsi ini mencakup metadata tentang penyebaran, variabel lingkungan, kunci yang diteruskan ke kontainer, dan log yang dipertahankan setelah kontainer dihentikan sehingga Anda masih dapat melihatnya. Enkripsi tidak memengaruhi kinerja grup kontainer Anda, dan tidak ada biaya tambahan untuk enkripsi.

Manajemen kunci enkripsi

Anda dapat mengandalkan kunci yang dikelola Microsoft untuk enkripsi data kontainer, atau dapat mengelola enkripsi dengan kunci Anda sendiri. Tabel berikut membandingkan opsi-opsi ini:

Kunci yang dikelola Microsoft Kunci yang dikelola pelanggan
Operasi enkripsi/dekripsi Azure Azure
Penyimpanan kunci Penyimpanan kunci Microsoft Azure Key Vault
Tanggung jawab rotasi kunci Microsoft Pelanggan
Akses kunci Hanya Microsoft Microsoft, Customer

Dokumen lainnya mencakup langkah-langkah yang diperlukan untuk mengenkripsi data penyebaran ACI dengan kunci Anda (kunci yang dikelola pelanggan).

Prasyarat

  • Gunakan lingkungan Bash di Azure Cloud Shell.

    Luncurkan Cloud Shell di jendela baru

  • Jika mau, instal Azure CLI untuk menjalankan perintah referensi CLI.

    • Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk tambahan, lihat Masuk dengan Azure CLI.

    • Saat diminta, instal ekstensi saat pertama kali menggunakan Azure CLI. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.

    • Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk memutakhirkan ke versi terbaru, jalankan pemutakhiran az.

Mengenkripsi data dengan kunci yang dikelola pelanggan

Membuat Perwakilan Layanan ( Service Principal (SP)) untuk ACI

Langkah pertama adalah memastikan bahwa penyewa Azure Anda memiliki perwakilan layanan yang ditetapkan untuk memberikan izin ke layanan Azure Container Instances.

Penting

Untuk menjalankan perintah berikut dan membuat perwakilan layanan dengan lancar, konfirmasikan bahwa Anda memiliki izin untuk membuat perwakilan layanan di penyewa Anda.

Perintah CLI berikut ini akan menyiapkan SP ACI di lingkungan Azure Anda:

az ad sp create --id 6bb8e274-af5d-4df2-98a3-4fd78b4cafd9

Output dari menjalankan perintah ini akan memperlihatkan kepada Anda perwakilan layanan yang telah disiapkan dengan "displayName": "Layanan Azure Container Instance."

Jika Anda tidak berhasil membuat perwakilan layanan:

  • konfirmasikan bahwa Anda memiliki izin untuk melakukannya di penyewa Anda
  • periksa untuk melihat apakah perwakilan layanan sudah ada di penyewa Anda untuk disebarkan ke ACI. Anda dapat melakukannya dengan menjalankan az ad sp show --id 6bb8e274-af5d-4df2-98a3-4fd78b4cafd9 dan menggunakan perwakilan layanan tersebut sebagai gantinya

Membuat sumber daya Key Vault

Buat Azure Key Vault menggunakan portal Microsoft Azure, Azure CLI, atau Azure PowerShell.

Untuk properti brankas kunci Anda, gunakan panduan berikut:

  • Nama: Nama yang unik diperlukan.
  • Langganan: Pilih langganan.
  • Di Grup Sumber Daya, pilih grup sumber daya yang sudah ada, atau buat baru dan masukkan nama grup sumber daya.
  • Di menu tarik-turun Lokasi, pilih lokasi.
  • Anda dapat meninggalkan opsi lain dengan default-nya atau memilih berdasarkan persyaratan tambahan.

Penting

Saat menggunakan kunci yang dikelola pelanggan untuk mengenkripsi templat penyebaran ACI, sebaiknya dua properti berikut diatur di brankas kunci, Penghapusan Sementara dan Jangan Dihapus Menyeluruh. Properti ini tidak diaktifkan secara default, tetapi dapat diaktifkan menggunakan PowerShell atau Azure CLI di brankas kunci baru atau yang sudah ada.

Membuat kunci baru

Setelah brankas kunci Anda dibuat, navigasi ke sumber daya di portal Microsoft Azure. Di menu navigasi kiri bilah sumber daya, di Pengaturan, klik Kunci. Di tampilan untuk "Kunci", klik "Buat/Impor" untuk membuat kunci baru. Gunakan Nama unik apa pun untuk kunci ini, dan preferensi lainnya berdasarkan persyaratan Anda.

Membuat kunci baru

Mengatur kebijakan akses

Buat kebijakan akses baru untuk memungkinkan layanan ACI mengakses Kunci Anda.

  • Setelah kunci Anda dibuat, kembali ke bilah sumber daya brankas kunci, di Pengaturan, klik Kebijakan Akses.
  • Di halaman "Kebijakan Akses" untuk brankas kunci, klik Tambahkan Kebijakan Akses.
  • Atur Izin Kunci untuk menyertakan Dapatkan dan Buka Kunci  Atur izin kunci
  • Untuk Pilih Perwakilan, pilih Layanan Azure Container Instance
  • Klik Tambahkan di bagian bawah

Kebijakan akses sekarang akan muncul di kebijakan akses brankas kunci Anda.

Membuat kebijakan akses

Memodifikasi templat penyebaran JSON Anda

Penting

Mengenkripsi data penyebaran dengan kunci yang dikelola pelanggan tersedia dalam versi API terbaru (2019-12-01) yang saat ini diluncurkan. Tetapkan versi API ini di templat penyebaran Anda. Jika Anda mengalami masalah dengan ini, silakan hubungi Dukungan Azure.

Setelah kunci brankas kunci dan kebijakan akses disiapkan, tambahkan properti berikut ke templat penyebaran ACI Anda. Pelajari selengkapnya tentang menyebarkan sumber daya ACI dengan templat dalam Tutorial: Menyebarkan grup multikontainer menggunakan templat Resource Manager.

  • Di resources, atur apiVersion ke 2019-12-01.
  • Di bagian properti grup kontainer dari templat penyebaran, tambahkan encryptionProperties, yang berisi nilai berikut:
    • vaultBaseUrl: Nama DNS dari brankas kunci Anda, dapat ditemukan di bilah gambaran umum sumber daya brankas kunci di Portal
    • keyName: nama kunci yang dibuat sebelumnya
    • keyVersion: versi kunci saat ini. Ini dapat ditemukan dengan mengklik kunci itu sendiri (di "Kunci" di bagian Pengaturan sumber daya brankas kunci Anda)
  • Di properti grup kontainer, tambahkan sku properti dengan nilai Standard. Properti sku diperlukan dalam API versi 2019-12-01.

Cuplikan templat berikut memperlihatkan properti tambahan ini untuk mengenkripsi data penyebaran:

[...]
"resources": [
    {
        "name": "[parameters('containerGroupName')]",
        "type": "Microsoft.ContainerInstance/containerGroups",
        "apiVersion": "2019-12-01",
        "location": "[resourceGroup().location]",    
        "properties": {
            "encryptionProperties": {
                "vaultBaseUrl": "https://example.vault.azure.net",
                "keyName": "acikey",
                "keyVersion": "xxxxxxxxxxxxxxxx"
            },
            "sku": "Standard",
            "containers": {
                [...]
            }
        }
    }
]

Berikut ini adalah templat lengkap, diambil dari templat di Tutorial: Menyebarkan grup multikontainer menggunakan templat Resource Manager.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "containerGroupName": {
      "type": "string",
      "defaultValue": "myContainerGroup",
      "metadata": {
        "description": "Container Group name."
      }
    }
  },
  "variables": {
    "container1name": "aci-tutorial-app",
    "container1image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
    "container2name": "aci-tutorial-sidecar",
    "container2image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar"
  },
  "resources": [
    {
      "name": "[parameters('containerGroupName')]",
      "type": "Microsoft.ContainerInstance/containerGroups",
      "apiVersion": "2019-12-01",
      "location": "[resourceGroup().location]",
      "properties": {
        "encryptionProperties": {
            "vaultBaseUrl": "https://example.vault.azure.net",
            "keyName": "acikey",
            "keyVersion": "xxxxxxxxxxxxxxxx"
        },
        "sku": "Standard",  
        "containers": [
          {
            "name": "[variables('container1name')]",
            "properties": {
              "image": "[variables('container1image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              },
              "ports": [
                {
                  "port": 80
                },
                {
                  "port": 8080
                }
              ]
            }
          },
          {
            "name": "[variables('container2name')]",
            "properties": {
              "image": "[variables('container2image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              }
            }
          }
        ],
        "osType": "Linux",
        "ipAddress": {
          "type": "Public",
          "ports": [
            {
              "protocol": "tcp",
              "port": "80"
            },
            {
                "protocol": "tcp",
                "port": "8080"
            }
          ]
        }
      }
    }
  ],
  "outputs": {
    "containerIPv4Address": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containerGroupName'))).ipAddress.ip]"
    }
  }
}

Menyebarkan sumber daya Anda

Jika file templat dibuat dan diedit di desktop, Anda dapat mengunggahnya ke direktori Cloud Shell dengan menyeret file tersebut ke dalamnya.

Buat grup sumber daya dengan perintah az group create.

az group create --name myResourceGroup --location eastus

Sebarkan templat dengan perintah az deployment group create.

az deployment group create --resource-group myResourceGroup --template-file deployment-template.json

Dalam beberapa detik, Anda akan menerima respons awal dari Azure. Setelah penyebaran selesai, semua data yang terkait dengannya yang dipertahankan oleh layanan ACI akan dienkripsi dengan kunci yang Anda berikan.