Mengonfigurasi kunci yang dikelola pelanggan untuk mengenkripsi data tidak aktif Microsoft Azure Service Bus

Azure Service Bus Premium menyediakan enkripsi data tidak aktif dengan Azure Storage Service Encryption (Azure SSE). Service Bus Premium menggunakan Azure Storage untuk menyimpan data. Semua data yang disimpan dengan Azure Storage dienkripsi menggunakan kunci yang dikelola Microsoft. Jika Anda menggunakan kunci Anda sendiri (juga disebut sebagai Bring Your Own Key (BYOK) atau kunci yang dikelola pelanggan), data masih dienkripsi menggunakan kunci yang dikelola Microsoft, tetapi selain itu kunci yang dikelola Microsoft dienkripsi menggunakan kunci yang dikelola pelanggan. Fitur ini memungkinkan Anda membuat, memutar, menonaktifkan, dan mencabut akses ke kunci yang dikelola pelanggan yang digunakan untuk mengenkripsi kunci yang dikelola Microsoft. Mengaktifkan fitur BYOK adalah proses penyiapan satu kali pada namespace layanan Anda.

Ada beberapa peringatan untuk kunci yang dikelola pelanggan untuk enkripsi sisi layanan.

  • Fitur ini didukung oleh Azure Service Bus tingkat premium. Ini tidak dapat diaktifkan untuk tingkat standar Bus Layanan namespace layanan.
  • Enkripsi hanya bisa difungsikan untuk namespace baru atau kosong. Jika namespace berisi antrean atau topik apa pun, maka operasi enkripsi gagal.

Anda dapat menggunakan Azure Key Vault untuk mengelola kunci dan mengaudit penggunaan kunci Anda. Anda dapat membuat kunci Anda sendiri dan menyimpannya di brankas kunci, atau Anda dapat menggunakan Azure Key Vault API untuk membuat kunci. Untuk informasi selengkapnya tentang Azure Key Vault, lihat Apa itu Azure Key Vault?

Mengaktifkan kunci yang dikelola pelanggan (portal Microsoft Azure)

Untuk mengaktifkan kunci yang dikelola pelanggan di portal Azure, ikuti langkah-langkah berikut:

  1. Buka namespace Microsoft Azure Service Bus Premium Anda.

  2. Pada halaman Pengaturan namespace Microsoft Azure Service Bus Anda, pilih Enkripsi.

  3. Pilih Enkripsi kunci yang dikelola pelanggan saat tidak aktif seperti yang ditunjukkan pada gambar berikut.

    Enable customer managed key

Menyiapkan brankas kunci dengan kunci

Setelah mengaktifkan kunci yang dikelola pelanggan, Anda perlu mengaitkan kunci yang dikelola pelanggan dengan namespace Azure Service Bus Anda. Service Bus hanya mendukung Azure Key Vault. Jika Anda mengaktifkan opsi Enkripsi dengan kunci yang dikelola pelanggan di bagian sebelumnya, Anda harus mengimpor kunci ke Azure Key Vault. Selain itu, kunci harus memiliki Hapus Sementara dan Jangan Hapus Menyeluruh dikonfigurasi untuk kunci. Pengaturan ini dapat dikonfigurasi menggunakan PowerShell atau CLI.

  1. Untuk membuat brankas kunci baru, ikuti Mulai Cepat Azure Key Vault. Untuk informasi selengkapnya tentang mengimpor kunci yang sudah ada, lihat Tentang kunci, rahasia, dan sertifikat.

    Penting

    Menggunakan kunci yang dikelola pelanggan dengan Azure Service Bus mengharuskan key vault memiliki dua properti yang diperlukan yang dikonfigurasi. Properti itu adalah: Hapus Sementara dan Jangan Hapus Menyeluruh. Properti Hapus Lembut diaktifkan secara default saat Anda membuat brankas kunci baru di portal Microsoft Azure sedangkan Perlindungan Terhadap Penghapusan Menyeluruh bersifat opsional, jadi pastikan untuk memilihnya saat membuat Key Vault. Selain itu, jika Anda perlu mengaktifkan properti ini pada brankas kunci yang sudah ada, Anda harus menggunakan PowerShell atau Azure CLI.

  2. Untuk mengaktifkan penghapusan sementara dan perlindungan penghapusan menyeluruh saat membuat vault, gunakan perintah az keyvault create.

    az keyvault create --name contoso-SB-BYOK-keyvault --resource-group ContosoRG --location westus --enable-soft-delete true --enable-purge-protection true
    
  3. Untuk menambahkan perlindungan penghapusan menyeluruh ke vault yang ada (yang sudah mengaktifkan penghapusan sementara), gunakan perintah az keyvault update.

    az keyvault update --name contoso-SB-BYOK-keyvault --resource-group ContosoRG --enable-purge-protection true
    
  4. Buat kunci dengan mengikuti langkah-langkah berikut:

    1. Untuk membuat kunci baru, pilih Buat/Impor dari menu Kunci di bawah Pengaturan.

      Select Generate/Import button

    2. Atur Opsi ke Buat dan beri nama kunci.

      Create a key

    3. Sekarang Anda dapat memilih kunci ini untuk diasosiasikan dengan namespace Microsoft Azure Service Bus untuk dienkripsi dari menu drop-down.

      Select key from key vault

      Catatan

      Untuk redundansi, Anda dapat menambahkan hingga 3 kunci. Jika salah satu kunci telah kedaluwarsa, atau tidak dapat diakses, kunci lainnya akan digunakan untuk enkripsi.

    4. Isi detail untuk kunci dan klik Pilih. Ini memungkinkan enkripsi kunci yang dikelola Microsoft dengan kunci Anda (kunci yang dikelola pelanggan).

    Penting

    Jika Anda ingin menggunakan kunci yang dikelola Pelanggan bersama dengan pemulihan bencana Geo, silakan tinjau bagian ini.

    Untuk mengaktifkan enkripsi kunci yang dikelola Microsoft dengan kunci yang dikelola pelanggan, kebijakan akses disiapkan untuk identitas terkelola Bus Layanan pada Azure KeyVault yang ditentukan. Ini memastikan akses terkontrol ke Azure KeyVault dari namespace Azure Service Bus.

    Karena ini:

    • Jika pemulihan bencana Geo sudah diaktifkan untuk namespace Microsoft Azure Service Bus dan Anda ingin mengaktifkan kunci yang dikelola pelanggan, maka

      • Memutuskan pemasangan
      • Siapkan kebijakan akses untuk identitas terkelola untuk namespace utama dan sekunder ke key vault.
      • Menyiapkan enkripsi pada namespace utama.
      • Pasangkan kembali namespace utama dan sekunder.
    • Jika Anda mencari untuk mengaktifkan Geo-DR pada namespace Microsoft Azure Service Bus di mana kunci yang dikelola pelanggan sudah disiapkan, maka -

      • Siapkan kebijakan akses untuk identitas terkelola untuk namespace sekunder ke key vault.
      • Pasangkan namespace utama dan sekunder.
    • Setelah dipasangkan, namespace sekunder akan menggunakan brankas kunci yang dikonfigurasi untuk namespace utama. Jika brankas kunci untuk kedua namespace berbeda sebelum pemasangan Geo-DR, pengguna harus mendelegasikan kebijakan akses atau peran RBAC untuk identitas terkelola namespace sekunder di brankas kunci yang terkait dengan namespace layanan utama.

Identitas Terkelola

Ada dua jenis identitas terkelola yang dapat Anda tetapkan ke namespace layanan Azure Service Bus.

  • Ditetapkan sistem: Anda dapat mengaktifkan identitas terkelola langsung pada namespace layanan Azure Service Bus. Saat Anda mengaktifkan identitas terkelola yang ditetapkan sistem, identitas dibuat di Microsoft Entra yang terkait dengan siklus hidup namespace Bus Layanan tersebut. Jadi, ketika namespace dihapus, Azure secara otomatis menghapus identitas untuk Anda. Secara desain, hanya sumber daya Azure (namespace) yang dapat menggunakan identitas ini untuk meminta token dari ID Microsoft Entra.

  • Ditetapkan pengguna: Anda juga dapat membuat identitas terkelola sebagai sumber daya Azure mandiri, yang disebut identitas yang ditetapkan pengguna. Anda dapat membuat identitas terkelola yang ditetapkan pengguna dan menetapkannya ke satu atau beberapa namespace layanan Azure Service Bus. Saat Anda menggunakan identitas terkelola yang ditetapkan pengguna, identitas dikelola secara terpisah dari sumber daya yang menggunakannya. Mereka tidak terikat dengan siklus hidup namespace layanan. Anda dapat menghapus identitas yang ditetapkan pengguna secara eksplisit saat Anda tak lagi memerlukannya.

    Untuk informasi selengkapnya, lihat Apa yang dimaksud dengan identitas terkelola untuk sumber daya Azure?.

Mengenkripsi menggunakan identitas yang ditetapkan sistem (templat)

Bagian ini memperlihatkan cara melakukan tugas berikut:

  1. Buat namespace Microsoft Azure Service Bus premium dengan identitas layanan terkelola.
  2. Buat brankas kunci dan berikan akses identitas layanan ke brankas kunci.
  3. Perbarui namespace Service Bus dengan informasi key vault (kunci/nilai).

Membuat namespace Microsoft Azure Service Bus premium dengan identitas layanan terkelola

Bagian ini memperlihatkan kepada Anda cara membuat namespace Azure Service Bus dengan identitas layanan terkelola dengan menggunakan templat Azure Resource Manager dan PowerShell.

  1. Buat templat Azure Resource Manager untuk membuat namespace tingkat premium Service Bus dengan identitas layanan terkelola. Beri nama file: CreateServiceBusPremiumNamespace.json:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Namespace."
             }
          },
          "location":{
             "type":"string",
             "defaultValue":"[resourceGroup().location]",
             "metadata":{
                "description":"Specifies the Azure location for all resources."
             }
          }
       },
       "resources":[
          {
             "type":"Microsoft.ServiceBus/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Premium",
                "tier":"Premium",
                "capacity":1
             },
             "properties":{
    
             }
          }
       ],
       "outputs":{
          "ServiceBusNamespaceId":{
             "type":"string",
             "value":"[resourceId('Microsoft.ServiceBus/namespaces',parameters('namespaceName'))]"
          }
       }
    }
    
  2. Membuat file parameter templat bernama: CreateServiceBusPremiumNamespaceParams.json.

    Catatan

    Ganti nilai berikut:

    • <ServiceBusNamespaceName> - Nama namespace Microsoft Azure Service Bus Anda
    • <Location> - Lokasi namespace Microsoft Azure Service Bus Anda
    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "value":"<ServiceBusNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          }
       }
    }
    
  3. Jalankan perintah PowerShell berikut untuk menggunakan templat untuk membuat namespace Microsoft Azure Service Bus premium. Kemudian, ambil ID namespace Microsoft Azure Service Bus untuk menggunakannya nanti. Ganti {MyRG} dengan nama grup sumber daya sebelum menjalankan perintah.

    $outputs = New-AzResourceGroupDeployment -Name CreateServiceBusPremiumNamespace -ResourceGroupName {MyRG} -TemplateFile ./CreateServiceBusPremiumNamespace.json -TemplateParameterFile ./CreateServiceBusPremiumNamespaceParams.json
    
    $ServiceBusNamespaceId = $outputs.Outputs["serviceBusNamespaceId"].value
    

Memberikan akses identitas namespace Microsoft Azure Service Bus ke key vault

  1. Jalankan perintah berikut untuk membuat key vault dengan perlindungan penghapusan menyeluruh dan penghapusan sementara diaktifkan.

    New-AzureRmKeyVault -Name "{keyVaultName}" -ResourceGroupName {RGName}  -Location "{location}" -EnableSoftDelete -EnablePurgeProtection    
    

    (ATAU)

    Jalankan perintah berikut untuk memperbarui brankas kunci yang sudah ada. Tentukan nilai untuk grup sumber daya dan nama key vault sebelum menjalankan perintah.

    ($updatedKeyVault = Get-AzureRmResource -ResourceId (Get-AzureRmKeyVault -ResourceGroupName {RGName} -VaultName {keyVaultName}).ResourceId).Properties| Add-Member -MemberType "NoteProperty" -Name "enableSoftDelete" -Value "true"-Force | Add-Member -MemberType "NoteProperty" -Name "enablePurgeProtection" -Value "true" -Force
    
  2. Tetapkan kebijakan akses key vault sehingga identitas terkelola namespace Microsoft Azure Service Bus dapat mengakses nilai kunci dalam key vault. Gunakan ID namespace Microsoft Azure Service Bus dari bagian sebelumnya.

    $identity = (Get-AzureRmResource -ResourceId $ServiceBusNamespaceId -ExpandProperties).Identity
    
    Set-AzureRmKeyVaultAccessPolicy -VaultName {keyVaultName} -ResourceGroupName {RGName} -ObjectId $identity.PrincipalId -PermissionsToKeys get,wrapKey,unwrapKey,list
    

Mengenkripsi data di namespace Microsoft Azure Service Bus dengan kunci yang dikelola pelanggan dari key vault

Anda telah melakukan langkah-langkah berikut sejauh ini:

  1. Membuat namespace layanan premium dengan identitas terkelola.
  2. Membuat key vault dan memberikan akses identitas terkelola ke brankas kunci.

Dalam langkah ini, Anda memperbarui namespace Bus Layanan dengan informasi brankas kunci.

  1. Buat file JSON bernama UpdateServiceBusNamespaceWithEncryption.json dengan konten berikut:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Namespace to be created in cluster."
             }
          },
          "location":{
             "type":"string",
             "defaultValue":"[resourceGroup().location]",
             "metadata":{
                "description":"Specifies the Azure location for all resources."
             }
          },
          "keyVaultUri":{
             "type":"string",
             "metadata":{
                "description":"URI of the KeyVault."
             }
          },
          "keyName":{
             "type":"string",
             "metadata":{
                "description":"KeyName."
             }
          }
       },
       "resources":[
          {
             "type":"Microsoft.ServiceBus/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Premium",
                "tier":"Premium",
                "capacity":1
             },
             "properties":{
                "encryption":{
                   "keySource":"Microsoft.KeyVault",
                   "keyVaultProperties":[
                      {
                         "keyName":"[parameters('keyName')]",
                         "keyVaultUri":"[parameters('keyVaultUri')]"
                      }
                   ]
                }
             }
          }
       ]
    }
    
  2. Buat file parameter templat: UpdateServiceBusNamespaceWithEncryptionParams.json.

    Catatan

    Ganti nilai berikut:

    • <ServiceBusNamespaceName> - Nama namespace Microsoft Azure Service Bus Anda
    • <Location> - Lokasi namespace Microsoft Azure Service Bus Anda
    • <KeyVaultName> - Nama brankas kunci Anda
    • <KeyName> - Nama kunci dalam brankas kunci
    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "value":"<ServiceBusNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          },
          "keyName":{
             "value":"<KeyName>"
          },
          "keyVaultUri":{
             "value":"https://<KeyVaultName>.vault.azure.net"
          }
       }
    }
    
  3. Jalankan perintah PowerShell berikut ini untuk menggunakan templat Resource Manager. Ganti {MyRG} dengan nama kelompok sumber daya Anda sebelum menjalankan perintah.

    New-AzResourceGroupDeployment -Name UpdateServiceBusNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./UpdateServiceBusNamespaceWithEncryption.json -TemplateParameterFile ./UpdateServiceBusNamespaceWithEncryptionParams.json
    

Mengenkripsi menggunakan identitas yang ditetapkan pengguna (templat)

  1. Membuat identitas yang ditetapkan pengguna.
  2. Membuat brankas kunci dan memberikan akses ke identitas yang ditetapkan pengguna melalui kebijakan akses.
  3. Membuat namepsace layanan Azure Service Bus premium dengan identitas pengguna terkelola dan informasi brankas kunci.

Membuat identitas terkelola yang ditetapkan pengguna

Ikuti instruksi dari artikel Membuat identitas terkelola yang ditetapkan pengguna untuk membuat identitas terkelola yang ditetapkan pengguna. Anda juga dapat membuat identitas yang ditetapkan pengguna menggunakan CLI, PowerShell, templat Azure Resource Manager, dan REST.

Catatan

Anda dapat menetapkan hingga 4 identitas pengguna ke namespace. Asosiasi ini dihapus ketika namespace layanan dihapus atau ketika Anda meneruskan identity -> type dalam templat ke None.

Membuat brankas kunci dan memberikan akses ke identitas yang ditetapkan pengguna

  1. Jalankan perintah berikut untuk membuat brankas kunci dengan perlindungan penghapusan menyeluruh dan penghapusan sementara diaktifkan.

    New-AzureRmKeyVault -Name "{keyVaultName}" -ResourceGroupName {RGName} -Location "{location}" -EnableSoftDelete -EnablePurgeProtection           
    

    (ATAU)

    Jalankan perintah berikut untuk memperbarui brankas kunci yang sudah ada. Tentukan nilai untuk grup sumber daya dan nama key vault sebelum menjalankan perintah.

    ($updatedKeyVault = Get-AzureRmResource -ResourceId (Get-AzureRmKeyVault -ResourceGroupName {RGName} -VaultName {keyVaultName}).ResourceId).Properties| Add-Member -MemberType "NoteProperty" -Name "enableSoftDelete" -Value "true"-Force | Add-Member -MemberType "NoteProperty" -Name "enablePurgeProtection" -Value "true" -Force            
    
  2. Dapatkan ID perwakilan layanan untuk identitas pengguna menggunakan perintah PowerShell berikut. Dalam contoh, ud1 adalah identitas yang ditetapkan pengguna yang akan digunakan untuk enkripsi.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  3. Berikan akses identitas yang ditetapkan pengguna ke brankas kunci dengan menetapkan kebijakan akses.

    Set-AzureRmKeyVaultAccessPolicy -VaultName {keyVaultName} -ResourceGroupName {RGName} -ObjectId $servicePrincipal.Id -PermissionsToKeys get,wrapKey,unwrapKey,list    
    

    Catatan

    Anda dapat menambahkan hingga 3 kunci tetapi identitas pengguna yang digunakan untuk enkripsi harus sama untuk semua kunci. Saat ini, hanya identitas enkripsi tunggal yang didukung.

Membuat namepsace layanan Azure Service Bus premium dengan identitas pengguna dan informasi brankas kunci

Bagian ini memberikan contoh yang menunjukkan kepada Anda cara melakukan tugas berikut menggunakan templat Azure Resource Manager.

  • Tetapkan identitas yang dikelola pengguna ke namespace layanan Azure Service Bus.

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  • Aktifkan enkripsi di namespace dengan menentukan kunci dari brankas kunci Anda dan identitas yang dikelola pengguna untuk mengakses kunci.

                    "encryption":{
                       "keySource":"Microsoft.KeyVault",
                       "keyVaultProperties":[
                            {
                                "keyName": "[parameters('keyName')]",
                                "keyVaultUri": "[parameters('keyVaultUri')]",
                                "identity": {
                                    "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                                }
                            }
                       ]
                    }
    
  1. Buat file JSON bernama CreateServiceBusNamespaceWithUserIdentityAndEncryption.json dengan konten berikut:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Namespace to be created in cluster."
             }
          },
          "location":{
             "type":"string",
             "defaultValue":"[resourceGroup().location]",
             "metadata":{
                "description":"Specifies the Azure location for all resources."
             }
          },
          "keyVaultUri":{
             "type":"string",
             "metadata":{
                "description":"URI of the KeyVault."
             }
          },
          "keyName":{
             "type":"string",
             "metadata":{
                "description":"KeyName."
             },
         "identity": {
            "type": "Object",
            "defaultValue": {
                "userAssignedIdentity": ""
            },
            "metadata": {
                "description": "user-assigned identity."
            }
         }
       },
       "resources":[
          {
             "type":"Microsoft.ServiceBus/namespaces",
             "apiVersion":"2021-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Premium",
                "tier":"Premium",
                "capacity":1
             },
            "identity": {
                "type": "UserAssigned",
                "userAssignedIdentities": {
                    "[parameters('identity').userAssignedIdentity]": {}
                }
            },
             "properties":{
                "encryption":{
                   "keySource":"Microsoft.KeyVault",
                   "keyVaultProperties":[
                        {
                            "keyName": "[parameters('keyName')]",
                            "keyVaultUri": "[parameters('keyVaultUri')]",
                            "identity": {
                                "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                            }
                        }
                   ]
                }
             }
          }
       ]
    }        
    
  2. Buat file parameter templat: CreateServiceBusNamespaceWithUserIdentityAndEncryptionParams.json.

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "value":"<ServiceBusNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          },
          "keyVaultUri":{
             "value":"https://<KeyVaultName>.vault.azure.net"
          },
          "keyName":{
             "value":"<KeyName>"
          },
          "identity": {
            "value": {
                "userAssignedIdentity": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER MANAGED IDENTITY NAME>"
            }
         }
       }
    }
    

    Pada file parameter, ganti tempat penampung dengan nilai yang sesuai.

    Placeholder value
    <ServiceBusNamespaceName> Nama dari namespace layanan Azure Service Bus.
    <Location> Lokasi di mana Anda ingin namespace dibuat.
    <KeyVaultName> Nama brankas kunci.
    <KeyName> Nama kunci dalam brankas kunci.
    <AZURE SUBSCRIPTION ID> ID langganan Azure Anda.
    <RESOURCE GROUP NAME> Kelompok sumber daya dari identitas yang dikelola pengguna.
    <USER MANAGED IDENTITY NAME> Nama identitas yang dikelola pengguna.
  3. Jalankan perintah PowerShell berikut ini untuk menggunakan templat Resource Manager. Ganti {MyRG} dengan nama kelompok sumber daya Anda sebelum menjalankan perintah.

    New-AzResourceGroupDeployment -Name CreateServiceBusNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./ CreateServiceBusNamespaceWithUserIdentityAndEncryption.json -TemplateParameterFile ./ CreateServiceBusNamespaceWithUserIdentityAndEncryptionParams.json        
    

Menggunakan identitas yang ditetapkan pengguna dan yang ditetapkan sistem

Sebuah aplikasi dapat memiliki identitas yang ditetapkan sistem dan identitas yang ditetapkan pengguna secara bersamaan. Dalam kasus ini, properti type adalah SystemAssigned, UserAssigned seperti yang ditunjukkan dalam contoh berikut.

"identity": {
    "type": "SystemAssigned, UserAssigned",
    "userAssignedIdentities": {
        "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userIdentity1>" : {}
    }
}

Dalam skenario ini, Anda dapat memilih identitas yang ditetapkan sistem atau identitas yang ditetapkan pengguna untuk mengenkripsi data tidak aktif.

Pada templat Azure Resource Manager, jika Anda tidak menentukan atribut identity, identitas yang dikelola sistem akan digunakan. Berikut contoh dari cuplikannya.

"properties":{
   "encryption":{
      "keySource":"Microsoft.KeyVault",
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]"
         }
      ]
   }
}

Lihat contoh berikut untuk menggunakan identitas yang dikelola pengguna untuk enkripsi. Perhatikan atribut identity yang diatur ke identitas yang dikelola pengguna.

"properties":{
   "encryption":{
      "keySource":"Microsoft.KeyVault",
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]",
            "identity": {
                "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
            }
         }
      ]
   }
}

Mengaktifkan enkripsi infrastruktur (ganda) data

Jika Anda memerlukan tingkat jaminan yang lebih tinggi bahwa data Anda aman, Anda dapat mengaktifkan enkripsi tingkat infrastruktur, yang juga dikenal sebagai Enkripsi Ganda.

Saat enkripsi infrastruktur diaktifkan, data di Azure Service Bus dienkripsi dua kali, satu kali di tingkat layanan dan sekali di tingkat infrastruktur, menggunakan dua algoritme enkripsi yang berbeda dan dua kunci yang berbeda. Oleh karena itu, enkripsi ganda data Azure Service Bus melindungi dari skenario di mana salah satu algoritme atau kunci enkripsi mungkin dikompromikan.

Anda dapat mengaktifkan enkripsi infrastruktur dengan memperbarui templat Azure Resource Manager dengan properti requireInfrastructureEncryption di atas UpdateServiceBusNamespaceWithEncryption.json seperti yang ditunjukkan di bawah ini.

"properties":{
   "encryption":{
      "keySource":"Microsoft.KeyVault",    
      "requireInfrastructureEncryption":true,         
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]"
         }
      ]
   }
}

Memutar, mencabut, dan menembolok kunci

Memutar kunci enkripsi Anda

Anda dapat memutar kunci di brankas kunci dengan menggunakan mekanisme rotasi Azure Key Vaults. Tanggal aktivasi dan kedaluwarsa juga dapat diatur untuk mengotomatiskan rotasi kunci. Layanan Bus Layanan mendeteksi versi kunci baru dan mulai menggunakannya secara otomatis.

Mencabut akses ke kunci

Mencabut akses ke kunci enkripsi tidak akan menghapus menyeluruh data dari Microsoft Azure Service Bus. Namun, data tidak dapat diakses dari namespace Microsoft Azure Service Bus. Anda dapat mencabut kunci enkripsi melalui kebijakan akses atau dengan menghapus kunci. Pelajari selengkapnya tentang kebijakan akses dan mengamankan key vault Anda dari Amankan akses ke key vault.

Setelah kunci enkripsi dicabut, layanan Bus Layanan pada namespace layanan terenkripsi menjadi tidak dapat dioperasikan. Jika akses ke kunci diaktifkan atau kunci yang dihapus dipulihkan, layanan Bus Layanan memilih kunci sehingga Anda dapat mengakses data dari namespace Bus Layanan terenkripsi.

Caching kunci

Instans Microsoft Azure Service Bus melakukan polling kunci enkripsi yang terdaftar setiap 5 menit. Ini menyinggahkan dan menggunakannya sampai polling berikutnya, yaitu setelah 5 menit. Selama setidaknya ada satu kunci, antrean dan topik dapat diakses. Jika semua kunci yang tercantum tidak dapat diakses saat melakukan polling, semua antrean dan topik menjadi tidak tersedia.

Berikut adalah perincian lebih lanjut:

  • Setiap 5 menit, layanan Bus Layanan melakukan polling semua kunci yang dikelola pelanggan yang tercantum dalam catatan namespace:
    • Jika kunci telah diputar, rekaman diperbarui dengan kunci baru.
    • Jika kunci telah dicabut, kunci akan dihapus dari rekaman.
    • Jika semua kunci telah dicabut, status enkripsi namespace diatur ke Dicabut. Data tidak dapat diakses dari namespace layanan Microsoft Azure Service Bus.

Pertimbangan saat menggunakan pemulihan geo-bencana

Pemulihan bencana geografis - enkripsi dengan identitas yang ditetapkan sistem

Untuk mengaktifkan enkripsi kunci yang dikelola Microsoft dengan kunci yang dikelola pelanggan, kebijakan akses disiapkan untuk identitas terkelola yang ditetapkan sistem pada Azure KeyVault tertentu. Langkah ini memastikan akses terkontrol ke Azure KeyVault dari namespace azure Bus Layanan. Oleh karena itu, Anda perlu mengikuti langkah-langkah berikut:

  • Jika Pemulihan bencana Geo sudah diaktifkan untuk namespace Bus Layanan dan Anda ingin mengaktifkan kunci yang dikelola pelanggan, maka
    • Putuskan pemasangan.
    • Siapkan kebijakan akses untuk identitas terkelola yang ditetapkan sistem untuk namespace utama dan sekunder ke brankas kunci.
    • Menyiapkan enkripsi pada namespace utama.
    • Pasangkan kembali namespace utama dan sekunder.
  • Jika Anda ingin mengaktifkan Geo-DR pada namespace Bus Layanan tempat kunci yang dikelola pelanggan sudah disiapkan, ikuti langkah-langkah berikut:
    • Siapkan kebijakan akses untuk identitas terkelola untuk namespace sekunder ke key vault.
    • Pasangkan namespace utama dan sekunder.

Pemulihan geo-bencana - enkripsi dengan identitas yang ditetapkan pengguna

Berikut ini beberapa rekomendasi:

  1. Buat identitas terkelola dan tetapkan izin Key Vault ke identitas terkelola Anda.
  2. Tambahkan identitas sebagai identitas yang ditetapkan pengguna, dan aktifkan enkripsi dengan identitas di kedua namespace.
  3. Pasangkan namespaces bersama-sama

Persyaratan untuk mengaktifkan Geo-DR dan Enkripsi dengan Identitas yang Ditetapkan Pengguna:

  1. Namespace layanan sekunder harus sudah mengaktifkan Enkripsi dengan identitas Yang Ditetapkan Pengguna jika akan dipasangkan dengan namespace utama yang mengaktifkan Enkripsi.
  2. Tidak dimungkinkan untuk mengaktifkan Enkripsi pada primer yang sudah dipasangkan, bahkan jika sekunder memiliki identitas Yang Ditetapkan Pengguna yang terkait dengan namespace.

Pemecahan Masalah

Gejala

Anda mendapatkan kesalahan yang menyatakan bahwa namespace Bus Layanan dinonaktifkan karena kunci enkripsi tidak lagi valid.

Penyebab

Anda mungkin menggunakan resource_id atau version, yang menautkan ke versi kunci tertentu, yang mungkin telah kedaluwarsa. Jika versi tertentu disediakan, Bus Layanan menggunakan versi kunci tersebut, bahkan jika kunci diputar.

Resolusi

resource__versionless_id Gunakan atauversionless_idalih-alih menggunakan resource_id atau version.

Langkah berikutnya

Lihat artikel berikut: