Mengenkripsi disk terkelola dengan kunci yang dikelola pelanggan lintas penyewa

Artikel ini membahas pembuatan solusi tempat Anda mengenkripsi disk terkelola dengan kunci yang dikelola pelanggan menggunakan Azure Key Vaults yang disimpan di penyewa Microsoft Entra yang berbeda. Konfigurasi ini dapat digunakan untuk beberapa skenario, salah satu contohnya adalah dukungan Azure untuk penyedia layanan yang ingin menawarkan kunci enkripsi bawa-milik-sendiri kepada pelanggan dengan sumber daya dari penyewa penyedia layanan yang dienkripsi dengan kunci dari penyewa pelanggan mereka.

Enkripsi disk yang diatur dengan identitas federasi dalam alur kerja CMK lintas penyewa mencakup sumber daya penyewa penyedia layanan/ISV (set enkripsi disk, identitas terkelola, dan pendaftaran aplikasi) dan sumber daya penyewa pelanggan (aplikasi perusahaan, penetapan peran pengguna, dan brankas kunci). Dalam hal ini, sumber daya Azure sumber adalah set enkripsi disk penyedia layanan.

Jika Anda memiliki pertanyaan tentang kunci yang dikelola pelanggan lintas penyewa dengan disk terkelola, email crosstenantcmkvteam@service.microsoft.com.

Pembatasan

  • Disk Terkelola dan Key Vault pelanggan harus berada pada wilayah Azure yang sama, tetapi dapat berada di langganan yang berbeda.
  • Fitur ini tidak mendukung Disk Ultra atau disk terkelola Azure Premium SSD v2.
  • Fitur ini tidak tersedia di Microsoft Azure yang dioperasikan oleh cloud 21Vianet atau Government.

Tentang kunci yang dikelola pelanggan lintas penyewa

Banyak penyedia layanan yang membuat penawaran Software as a Service (SaaS) di Azure ingin menawarkan opsi kepada pelanggan mereka untuk mengelola kunci enkripsi mereka sendiri. Kunci yang dikelola pelanggan memungkinkan penyedia layanan mengenkripsi data pelanggan menggunakan kunci enkripsi yang dikelola oleh pelanggan penyedia layanan dan yang tidak dapat diakses oleh penyedia layanan. Di Azure, pelanggan penyedia layanan dapat menggunakan Azure Key Vault untuk mengelola kunci enkripsi mereka di penyewa dan langganan Microsoft Entra mereka sendiri.

Layanan platform Azure dan sumber daya yang dimiliki oleh penyedia layanan dan yang berada di penyewa penyedia layanan memerlukan akses ke kunci dari penyewa pelanggan untuk melakukan operasi enkripsi/dekripsi.

Gambar di bawah ini menunjukkan enkripsi data tidak aktif dengan identitas federasi dalam alur kerja kunci yang dikelola pelanggan lintas penyewa yang mencakup penyedia layanan dan pelanggannya.

Screenshot showing a cross-tenant CMK with a federated identity.

Dalam contoh di atas, ada dua penyewa Microsoft Entra: penyewa penyedia layanan independen (Penyewa 1), dan penyewa pelanggan (Penyewa 2). Penyewa 1 menghosting layanan platform Azure dan Penyewa 2 menghosting brankas kunci pelanggan.

Pendaftaran aplikasi multipenyewa dibuat oleh penyedia layanan di Penyewa 1. Kredensial identitas federasi dibuat pada aplikasi ini menggunakan identitas terkelola yang ditetapkan pengguna. Lalu, ID aplikasi dan nama dari aplikasi tersebut dibagikan kepada pelanggan.

Pengguna dengan izin yang sesuai menginstal aplikasi penyedia layanan di penyewa pelanggan, Penyewa 2. Lalu pengguna memberikan perwakilan layanan yang terkait dengan akses aplikasi yang diinstal ke key vault pelanggan. Pelanggan juga menyimpan kunci enkripsi, atau kunci yang dikelola pelanggan, di key vault. Pelanggan berbagi lokasi kunci (URL kunci) dengan penyedia layanan.

Penyedia layanan kini memiliki:

  • ID aplikasi untuk aplikasi multipenyewa yang diinstal di penyewa pelanggan, yang telah diberikan akses ke kunci yang dikelola pelanggan.
  • Identitas terkelola yang dikonfigurasi sebagai kredensial pada aplikasi multipenyewa.
  • Lokasi kunci di key vault pelanggan.

Dengan ketiga parameter ini, penyedia layanan menyediakan sumber daya Azure di Penyewa 1 yang dapat dienkripsi dengan kunci yang dikelola pelanggan di Penyewa 2.

Mari kita bagi solusi menyeluruh di atas menjadi tiga fase:

  1. Penyedia layanan mengonfigurasikan identitas.
  2. Pelanggan memberikan akses aplikasi multipenyewa penyedia layanan ke kunci enkripsi di Azure Key Vault.
  3. Penyedia layanan mengenkripsi data dalam sumber daya Azure menggunakan CMK.

Operasi dalam Fase 1 akan menjadi penyiapan satu kali untuk sebagian besar aplikasi penyedia layanan. Operasi dalam Fase 2 dan 3 akan diulang untuk setiap pelanggan.

Fase 1 - Penyedia layanan mengonfigurasi aplikasi Microsoft Entra

Langkah Deskripsi Peran minimum di Azure RBAC Peran minimum dalam Microsoft Entra RBAC
1. Buat pendaftaran aplikasi Microsoft Entra multipenyewa baru atau mulailah dengan pendaftaran aplikasi yang ada. Perhatikan bahwa ID aplikasi (ID klien) pendaftaran aplikasi menggunakan portal Azure, Microsoft Graph API, Azure PowerShell, atau Azure CLI Tidak Pengembang Aplikasi
2. Buat identitas terkelola yang ditetapkan pengguna (untuk digunakan sebagai Kredensial Identitas Gabungan).
Portal Azure / Azure CLI / Azure PowerShell/ Template Azure Resource Manager
Kontributor identitas terkelola Tidak
3. Konfigurasikan identitas terkelola yang ditetapkan pengguna sebagai kredensial identitas gabungan pada aplikasi, sehingga dapat meniru identitas aplikasi.
Referensi Graph API/ portal Azure/ Azure CLI/ Azure PowerShell
Tidak Pemilik aplikasi
4. Bagikan nama aplikasi dan ID aplikasi kepada pelanggan, sehingga mereka dapat menginstal dan mengotorisasi aplikasi. Tidak Tidak

Pertimbangan untuk penyedia layanan

  • Templat Azure Resource Manager (ARM) tidak disarankan untuk membuat aplikasi Microsoft Entra.
  • Aplikasi multipenyewa yang sama dapat digunakan untuk mengakses kunci di sejumlah penyewa, seperti Penyewa 2, Penyewa 3, Penyewa 4, dan sebagainya. Di setiap penyewa, instans independen aplikasi dibuat yang memiliki ID aplikasi yang sama, tetapi ID objeknya berbeda. Dengan demikian setiap instans aplikasi ini diotorisasi secara independen. Pertimbangkan cara objek aplikasi yang digunakan untuk fitur ini digunakan guna mempartisi aplikasi Anda di semua pelanggan.
  • Dalam skenario yang jarang terjadi, penyedia layanan mungkin menggunakan satu objek Aplikasi per pelanggannya, tetapi itu memerlukan biaya pemeliharaan yang signifikan untuk mengelola aplikasi dalam skala besar di semua pelanggan.
  • Di penyewa penyedia layanan, tidak dimungkinkan untuk mengotomatiskan Verifikasi Penerbit.

Fase 2 - Pelanggan mengotorisasi akses ke key vault

Langkah Deskripsi Peran Azure RBAC dengan hak istimewa paling sedikit Peran Microsoft Entra dengan hak istimewa paling sedikit
1.
  • Disarankan: Arahkan pengguna untuk masuk ke aplikasi Anda. Jika pengguna dapat masuk, perwakilan layanan untuk aplikasi Anda ada di penyewa mereka.
  • Gunakan Microsoft Graph, Microsoft Graph PowerShell, Azure PowerShell, atau Azure CLI untuk membuat perwakilan layanan.
  • Buat URL persetujuan admin dan berikan persetujuan seluruh penyewa untuk membuat perwakilan layanan menggunakan ID aplikasi.
  • Tidak Pengguna dengan izin untuk menginstal aplikasi
    2. Buat Azure Key Vault dan kunci yang digunakan sebagai kunci yang dikelola pelanggan. Pengguna harus diberi peran Kontributor Key Vault untuk membuat brankas kunci

    Pengguna harus diberi peran Petugas Kripto Key Vault untuk menambahkan kunci ke key vault
    Tidak
    3. Berikan akses identitas aplikasi yang disetujui ke key vault Azure dengan menetapkan peran Pengguna Enkripsi Layanan Kripto Key Vault Untuk menetapkan peran Pengguna Enkripsi Layanan Kripto Key Vault ke aplikasi, Anda harus diberi peran Administrator Akses Pengguna. Tidak
    4. Salin URL key vault dan nama kunci ke dalam konfigurasi kunci yang dikelola pelanggan dari penawaran SaaS. Tidak Tidak ada

    Catatan

    Untuk mengotorisasi akses ke HSM Terkelola untuk enkripsi menggunakan CMK, lihat contoh untuk Akun Penyimpanan di sini. Untuk informasi selengkapnya tentang mengelola kunci dengan HSM Terkelola, lihat Mengelola HSM Terkelola menggunakan Azure CLI

    Pertimbangan untuk pelanggan penyedia layanan

    • Di penyewa pelanggan, Penyewa 2, admin dapat mengatur kebijakan untuk memblokir pengguna non-admin agar tidak menginstal aplikasi. Kebijakan ini dapat mencegah pengguna non-admin membuat perwakilan layanan. Jika kebijakan seperti itu dikonfigurasi, maka pengguna dengan izin untuk membuat perwakilan layanan perlu terlibat.
    • Akses ke Azure Key Vault dapat diotorisasi menggunakan Azure RBAC atau kebijakan akses. Saat memberikan akses ke key vault, pastikan untuk menggunakan mekanisme aktif untuk key vault Anda.
    • Pendaftaran aplikasi Microsoft Entra memiliki ID aplikasi (ID klien). Saat aplikasi diinstal di penyewa Anda, perwakilan layanan dibuat. Perwakilan layanan berbagi ID aplikasi yang sama dengan pendaftaran aplikasi, tetapi membuat ID objeknya sendiri. Saat Anda mengotorisasi aplikasi untuk memiliki akses ke sumber daya, Anda mungkin perlu menggunakan perwakilan Name layanan atau ObjectID properti.

    Fase 3 - Penyedia layanan mengenkripsi data dalam sumber daya Azure menggunakan kunci yang dikelola pelanggan

    Setelah fase 1 dan 2 selesai, penyedia layanan dapat mengonfigurasi enkripsi pada sumber daya Azure dengan kunci dan brankas kunci di penyewa pelanggan dan sumber daya Azure di penyewa ISV. Penyedia layanan dapat mengonfigurasi kunci yang dikelola pelanggan lintas penyewa dengan alat klien yang didukung oleh sumber daya Azure tersebut, dengan templat ARM, atau dengan REST API.

    Mengonfigurasi kunci yang dikelola pelanggan lintas penyewa

    Bagian ini menjelaskan cara mengonfigurasi kunci yang dikelola pelanggan (CMK) lintas penyewa dan mengenkripsi data pelanggan. Anda akan mempelajari cara mengenkripsi data pelanggan dalam sumber daya di Tenant1 menggunakan CMK yang disimpan dalam brankas kunci di Tenant2. Anda dapat menggunakan portal Azure, Azure PowerShell, atau Azure CLI.

    Masuk ke portal Azure dan ikuti langkah-langkah berikut.

    Penyedia layanan mengonfigurasi identitas

    Langkah-langkah berikut dilakukan oleh penyedia layanan di penyewa penyedia layanan Tenant1.

    Penyedia layanan membuat pendaftaran aplikasi multi-penyewa baru

    Anda dapat membuat pendaftaran aplikasi Microsoft Entra multi-penyewa baru atau mulai dengan pendaftaran aplikasi multi-penyewa yang ada. Jika memulai dengan pendaftaran aplikasi yang ada, perhatikan ID aplikasi (ID klien) aplikasi.

    Untuk membuat pendaftaran baru:

    1. Cari ID Microsoft Entra di kotak pencarian. Temukan dan pilih ekstensi ID Microsoft Entra.

    2. Pilih Kelola > Pendaftaran aplikasi dari panel kiri.

    3. Pilih + Pendaftaran baru.

    4. Berikan nama untuk pendaftaran aplikasi dan pilih Akun di direktori organisasi apa pun (Direktori Microsoft Entra apa pun – Multipenyewa).

    5. Pilih Daftarkan.

    6. Perhatikan ApplicationId/ClientId aplikasi.

      Screen shot showing how to create a new multi-tenant application registration.

    Penyedia layanan membuat identitas terkelola yang ditetapkan pengguna

    Buat identitas terkelola yang ditetapkan pengguna untuk digunakan sebagai kredensial identitas federasi.

    1. Cari Identitas Terkelola di kotak pencarian. Temukan dan pilih ekstensi Identitas Terkelola.

    2. Pilih + Buat.

    3. Menyediakan grup sumber daya, wilayah, dan nama untuk identitas terkelola.

    4. Pilih Tinjau + buat.

    5. Pada penyebaran yang berhasil, perhatikan Azure ResourceId dari identitas terkelola yang ditetapkan pengguna, yang tersedia di bagian Properti. Misalnya:

      /subscriptions/tttttttt-0000-tttt-0000-tttt0000tttt/resourcegroups/XTCMKDemo/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ConsotoCMKDemoUA

      Screen shot showing how to create a resource group and a user-assigned managed identity.

    Penyedia layanan mengonfigurasi identitas terkelola yang ditetapkan pengguna sebagai kredensial federasi pada aplikasi

    Konfigurasikan identitas terkelola yang ditetapkan pengguna sebagai kredensial identitas federasi pada aplikasi, sehingga dapat meniru identitas aplikasi.

    1. Navigasikan ke ID > Microsoft Entra Pendaftaran aplikasi > aplikasi Anda.

    2. Pilih Sertifikat & rahasia.

    3. Pilih Kredensial federasi.

      Screen shot showing how to navigate to Certificate and secrets.

    4. Pilih + Tambahkan kredensial.

    5. Di bagian Skenario kredensial federasi, pilih Kunci yang Dikelola Pelanggan.

    6. Klik Pilih identitas terkelola. Dari panel, pilih langganan. Di bagian Identitas terkelola, pilih Identitas terkelola yang ditetapkan pengguna. Di kotak Pilih, cari identitas terkelola yang Anda buat sebelumnya, lalu klik Pilih di bagian bawah panel.

      Screen shot showing how to select a managed identity.

    7. Di bagian Detail kredensial, berikan nama dan deskripsi opsional untuk kredensial, lalu pilih Tambahkan.

      Screen shot showing how to add a credential.

    Penyedia layanan berbagi ID aplikasi dengan pelanggan

    Temukan ID aplikasi (ID klien) aplikasi multi-penyewa dan bagikan dengan pelanggan.

    Pelanggan memberikan akses aplikasi penyedia layanan ke kunci di brankas kunci

    Langkah-langkah berikut dilakukan oleh pelanggan di penyewa pelanggan Tenant2. Pelanggan dapat menggunakan portal Azure, Azure PowerShell, atau Azure CLI.

    Pengguna yang menjalankan langkah-langkah harus menjadi administrator dengan peran istimewa seperti Administrator Aplikasi, Administrator Aplikasi Cloud, atau Administrator Global.

    Masuk ke portal Azure dan ikuti langkah-langkah berikut.

    Pelanggan menginstal aplikasi penyedia layanan di penyewa pelanggan

    Untuk menginstal aplikasi terdaftar penyedia layanan di penyewa pelanggan, buat perwakilan layanan dengan ID aplikasi dari aplikasi terdaftar. Anda dapat membuat perwakilan layanan dengan salah satu cara berikut:

    Pelanggan membuat brankas kunci

    Untuk membuat brankas kunci, akun pengguna harus diberi peran Kontributor Key Vault atau peran lain yang mengizinkan pembuatan brankas kunci.

    1. Dari menu portal Azure, atau dari halaman Beranda, pilih + Buat sumber daya. Di kotak Pencarian, masukkan Brankas kunci. Dari daftar hasil, pilih Brankas kunci. Pada halaman Brankas kunci, pilih Buat.

    2. Pada tab Dasar-dasar, pilih langganan. Di bagian Grup sumber daya, pilih Buat baru dan masukkan nama grup sumber daya.

    3. Masukkan nama unik untuk brankas kunci.

    4. Pilih wilayah dan tingkat harga.

    5. Aktifkan perlindungan penghapusan menyeluruh untuk brankas kunci baru.

    6. Pada tab Kebijakan akses, pilih Kontrol akses berbasis peran Azure untuk Model izin.

    7. Pilih Ulas + buat, lalu pilih Buat.

      Screen shot showing how to create a key vault.

    Perhatikan nama brankas kunci dan Aplikasi URI yang mengakses brankas kunci Anda harus menggunakan URI ini.

    Untuk informasi selengkapnya, lihat Mulai Cepat - Membuat Azure Key Vault dengan portal Azure.

    Pelanggan menetapkan peran Petugas Kripto Key Vault ke akun pengguna

    Langkah ini memastikan bahwa Anda dapat membuat kunci enkripsi.

    1. Buka brankas kunci Anda dan pilih Access Control (IAM) dari panel kiri.
    2. Di bagian Berikan akses ke sumber daya ini, pilih Tambahkan penetapan peran.
    3. Cari dan pilih Petugas Kripto Key Vault.
    4. Di bagian Anggota, pilih Pengguna, grup, atau perwakilan layanan.
    5. Pilih Anggota dan cari akun pengguna Anda.
    6. Pilih Tinjau + Tetapkan.

    Pelanggan membuat kunci enkripsi

    Untuk membuat kunci enkripsi, akun pengguna harus diberi peran Petugas Kripto Key Vault atau peran lain yang mengizinkan pembuatan kunci.

    1. Pada halaman properti Key Vault, pilih Kunci.
    2. Pilih Buat/impor.
    3. Pada layar Buat kunci, tentukan nama untuk kunci. Biarkan nilai lainnya mengikuti default.
    4. Pilih Buat.
    5. Salin URI kunci.

    Pelanggan memberikan akses aplikasi penyedia layanan ke brankas kunci

    Tetapkan peran Azure RBAC Pengguna Enkripsi Layanan Kripto Key Vault ke aplikasi terdaftar penyedia layanan sehingga dapat mengakses brankas kunci.

    1. Buka brankas kunci Anda dan pilih Access Control (IAM) dari panel kiri.
    2. Di bagian Berikan akses ke sumber daya ini, pilih Tambahkan penetapan peran.
    3. Cari dan pilih Pengguna Enkripsi Layanan Kripto Key Vault.
    4. Di bagian Anggota, pilih Pengguna, grup, atau perwakilan layanan.
    5. Pilih Anggota dan cari nama aplikasi di aplikasi yang Anda instal dari penyedia layanan.
    6. Pilih Tinjau + Tetapkan.

    Sekarang Anda dapat mengonfigurasi kunci yang dikelola pelanggan dengan kunci dan URI brankas kunci.

    Membuat set enkripsi disk

    Sekarang setelah Anda membuat Azure Key Vault dan melakukan konfigurasi Microsoft Entra yang diperlukan, sebarkan set enkripsi disk yang dikonfigurasi untuk bekerja di seluruh penyewa dan mengaitkannya dengan kunci di brankas kunci. Anda dapat melakukan ini menggunakan portal Azure, Azure PowerShell, atau Azure CLI. Anda juga dapat menggunakan templat ARM atau REST API.

    Untuk menggunakan portal Azure, masuk ke portal dan ikuti langkah-langkah ini.

    1. Pilih + Buat sumber daya, cari Set enkripsi disk, dan pilih Buat > set enkripsi Disk.

    2. Di bawah Detail proyek, pilih grup langganan dan sumber daya untuk membuat kumpulan enkripsi disk.

    3. Di bawah Detail instans, berikan nama untuk set enkripsi disk.

      Screenshot showing how to enter the project and instance details to create a new disk encryption set.

    4. Pilih Wilayah tempat membuat set enkripsi disk.

    5. Untuk Jenis Enkripsi, pilih Enkripsi saat istirahat dengan kunci yang dikelola pelanggan.

    6. Di bawah Kunci enkripsi, pilih tombol radio Enter dari URI , lalu masukkan URI Kunci kunci yang dibuat di penyewa pelanggan.

    7. Di bawah Identitas yang ditetapkan pengguna, pilih Pilih identitas.

    8. Pilih identitas terkelola yang ditetapkan pengguna yang Anda buat sebelumnya di penyewa ISV, lalu pilih Tambahkan.

    9. Di bawah Aplikasi multipenyewa, pilih Pilih aplikasi.

    10. Pilih aplikasi terdaftar multi-penyewa yang Anda buat sebelumnya di penyewa ISV, dan klik Pilih.

    11. Pilih Tinjau + buat.

    Gunakan templat ARM

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "desname": {
          "defaultValue": "<Enter ISV disk encryption set name>",
          "type": "String"
        },
        "region": {
          "defaultValue": "WestCentralUS",
          "type": "String"
        },
        "userassignedmicmk": {
          "defaultValue": "/subscriptions/<Enter ISV Subscription Id>/resourceGroups/<Enter ISV resource group name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<Enter ISV User Assigned Identity Name>",
          "type": "String"
        },
        "cmkfederatedclientId": {
          "defaultValue": "<Enter ISV Multi-Tenant App Id>",
          "type": "String"
        },
        "keyVaultURL": {
          "defaultValue": "<Enter Client Key URL>",
          "type": "String"
        },
        "encryptionType": {
          "defaultValue": "EncryptionAtRestWithCustomerKey",
          "type": "String"
        }
      },
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Compute/diskEncryptionSets",
          "apiVersion": "2021-12-01",
          "name": "[parameters('desname')]",
          "location": "[parameters('region')]",
          "identity": {
            "type": "UserAssigned",
            "userAssignedIdentities": {
              "[parameters('userassignedmicmk')]": {}
            }
          },
          "properties": {
            "activeKey": {
              "keyUrl": "[parameters('keyVaultURL')]"
            },
            "federatedClientId": "[parameters('cmkfederatedclientId')]",
            "encryptionType": "[parameters('encryptionType')]"
          }
        }
      ]
    }
    

    Menggunakan REST API

    Gunakan token pembawa sebagai header otorisasi dan aplikasi/JSON sebagai jenis konten di BODY. (Tab jaringan, filter ke management.azure saat melakukan permintaan ARM apa pun di portal.)

    PUT https://management.azure.com/subscriptions/<Enter ISV Subscription Id>/resourceGroups/<Enter ISV Resource Group Name>/providers/Microsoft.Compute/diskEncryptionSets/<Enter ISV Disk Encryption Set Name>?api-version=2021-12-01
    Authorization: Bearer ...
    Content-Type: application/json
    
    {
      "name": "<Enter ISV disk encryption set name>",
      "id": "/subscriptions/<Enter ISV Subscription Id>/resourceGroups/<Enter ISV resource group name>/providers/Microsoft.Compute/diskEncryptionSets/<Enter ISV disk encryption set name>/",
      "type": "Microsoft.Compute/diskEncryptionSets",
      "location": "westcentralus",
      "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
    "/subscriptions/<Enter ISV Subscription Id>/resourceGroups/<Enter ISV resource group name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<Enter ISV User Assigned Identity Name>
    ": {}
        }
      },
      "properties": {
        "activeKey": {
          "keyUrl": "<Enter Client Key URL>"
        },
        "encryptionType": "EncryptionAtRestWithCustomerKey",
        "federatedClientId": "<Enter ISV Multi-Tenant App Id>"
      }
    }
    

    Langkah berikutnya

    Lihat juga: