Mengonfigurasi kunci yang dikelola pelanggan untuk mengenkripsi data tidak aktif Azure Event Hubs

Azure Event Hubs memberikan enkripsi data tidak aktif dengan Layanan Enkripsi Azure Storage (Azure SSE). Layanan Pusat Aktivitas 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 akan 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.

Penting

  • Kemampuan BYOK didukung oleh tingkat premium dan khusus dari Azure Event Hubs.
  • Enkripsi hanya bisa diaktifkan untuk namespace layanan baru atau kosong. Jika namespace layanan berisi pusat aktivitas, operasi enkripsi akan 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?

Artikel ini memperlihatkan cara mengonfigurasi brankas kunci dengan kunci yang dikelola pelanggan dengan menggunakan portal Microsoft Azure. Untuk mempelajari cara membuat brankas kunci menggunakan portal Azure, lihat Mulai Cepat: Membuat Azure Key Vault menggunakan portal Azure.

Mengaktifkan kunci yang dikelola pelanggan (portal Microsoft Azure)

Untuk mengaktifkan kunci yang dikelola pelanggan di portal Microsoft Azure, ikuti langkah-langkah berikut. Jika Anda menggunakan tingkat khusus, buka klaster Azure Event Hubs Dedicated terlebih dahulu.

  1. Pilih namespace layanan tempat Anda ingin mengaktifkan BYOK.

  2. Pada halaman Pengaturan namespace layanan Microsoft Azure Event Hubs 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 layanan Azure Event Hubs Anda. Pusat Aktivitas 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 Event Hubs memerlukan brankas kunci memiliki dua properti yang diperlukan dikonfigurasi. Properti itu adalah: Hapus Sementara dan Jangan Hapus Menyeluruh. Properti ini diaktifkan secara default saat Anda membuat brankas kunci baru di portal Microsoft Azure. Namun, 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 ContosoVault --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 ContosoVault --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 berasosiasi dengan namespace layanan Pusat Aktivitas 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 akan mengaktifkan enkripsi kunci yang dikelola Microsoft dengan kunci Anda (kunci yang dikelola pelanggan).

Identitas Terkelola

Ada dua jenis identitas terkelola yang dapat Anda tetapkan ke namespace Azure Event Hubs.

  • Ditetapkan sistem: Anda dapat mengaktifkan identitas terkelola langsung pada namespace Azure Event Hubs. Saat Anda mengaktifkan identitas terkelola yang ditetapkan sistem, identitas dibuat di Microsoft Entra yang terkait dengan siklus hidup namespace Layanan Pusat Aktivitas 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 Azure Event Hubs. Dalam kasus identitas terkelola yang ditetapkan pengguna, identitas dikelola secara terpisah dari sumber daya yang menggunakannya. Mereka tidak terikat dengan siklus hidup namespace. 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 menggunakan templat Azure Resource Manager.

  1. Buat ruang namespace layanan Pusat Aktivitas dengan identitas layanan terkelola.
  2. Buat brankas kunci dan berikan akses identitas layanan ke brankas kunci.
  3. Perbarui namespace layanan Pusat Aktivitas dengan informasi brankas kunci (kunci/nilai).

Membuat kluster dan namespace layanan Pusat Aktivitas dengan identitas layanan terkelola

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

  1. Buat templat Azure Resource Manager untuk membuat namespace layanan Pusat Aktivitas dengan identitas layanan terkelola. Beri nama file: CreateEventHubClusterAndNamespace.json:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Event Hub cluster."
             }
          },
          "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."
             }
          }
       },
       "resources":[
          {
             "type":"Microsoft.EventHub/clusters",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('clusterName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Dedicated",
                "capacity":1
             }
          },
          {
             "type":"Microsoft.EventHub/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Standard",
                "tier":"Standard",
                "capacity":1
             },
             "properties":{
                "isAutoInflateEnabled":false,
                "maximumThroughputUnits":0,
                "clusterArmId":"[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]"
             },
             "dependsOn":[
                "[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]"
             ]
          }
       ],
       "outputs":{
          "EventHubNamespaceId":{
             "type":"string",
             "value":"[resourceId('Microsoft.EventHub/namespaces',parameters('namespaceName'))]"
          }
       }
    }
    
  2. Membuat file parameter template bernama: CreateEventHubClusterAndNamespaceParams.json.

    Catatan

    Ganti nilai berikut:

    • <EventHubsClusterName> - Nama kluster Pusat Aktivitas Anda
    • <EventHubsNamespaceName> - Nama namespace layanan Pusat Aktivitas Anda
    • <Location> - Lokasi namespace layanan Pusat Aktivitas Anda
    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "value":"<EventHubsClusterName>"
          },
          "namespaceName":{
             "value":"<EventHubsNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          }
       }
    }
    
    
  3. Eksekusi perintah PowerShell berikut untuk menggunakan templat untuk membuat namespace layanan Pusat Aktivitas. Kemudian, ambil ID namespace layanan Pusat Aktivitas untuk menggunakannya nanti. Ganti {MyRG} dengan nama grup sumber daya sebelum menjalankan perintah.

    $outputs = New-AzResourceGroupDeployment -Name CreateEventHubClusterAndNamespace -ResourceGroupName {MyRG} -TemplateFile ./CreateEventHubClusterAndNamespace.json -TemplateParameterFile ./CreateEventHubClusterAndNamespaceParams.json
    
    $EventHubNamespaceId = $outputs.Outputs["eventHubNamespaceId"].value
    

Memberikan akses identitas namespace layanan Pusat Aktivitas ke brankas kunci

  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 brankas kunci sehingga identitas terkelola namespace layanan Pusat Aktivitas dapat mengakses nilai kunci dalam brankas kunci. Gunakan ID namespace layanan Pusat Aktivitas dari bagian sebelumnya.

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

Mengenkripsi data di namespace layanan Pusat Aktivitas dengan kunci yang dikelola pelanggan dari brankas kunci

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 akan memperbarui namespace layanan Pusat Aktivitas dengan informasi brankas kunci.

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

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Event Hub cluster."
             }
          },
          "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.EventHub/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Standard",
                "tier":"Standard",
                "capacity":1
             },
             "properties":{
                "isAutoInflateEnabled":false,
                "maximumThroughputUnits":0,
                "clusterArmId":"[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]",
                "encryption":{
                   "keySource":"Microsoft.KeyVault",
                   "keyVaultProperties":[
                      {
                         "keyName":"[parameters('keyName')]",
                         "keyVaultUri":"[parameters('keyVaultUri')]"
                      }
                   ]
                }
             }
          }
       ]
    }
    
  2. Membuat file parameter templat: UpdateEventHubClusterAndNamespaceParams.json.

    Catatan

    Ganti nilai berikut:

    • <EventHubsClusterName> - Nama kluster Pusat Aktivitas Anda.
    • <EventHubsNamespaceName> - Nama namespace layanan Pusat Aktivitas Anda
    • <Location> - Lokasi namespace layanan Pusat Aktivitas 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":{
          "clusterName":{
             "value":"<EventHubsClusterName>"
          },
          "namespaceName":{
             "value":"<EventHubsNamespaceName>"
          },
          "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 UpdateEventHubNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./UpdateEventHubClusterAndNamespace.json -TemplateParameterFile ./UpdateEventHubClusterAndNamespaceParams.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 namespace Azure Event Hubs 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 namespace Azure Event Hubs 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 Azure Event Hubs.

                "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 CreateEventHubsNamespaceWithUserIdentityAndEncryption.json dengan konten berikut:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
        "clusterName":{
            "type":"string",
             "metadata":{
                "description":"Name for the Event Hub cluster."
             }
          },
          "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.EventHub/clusters",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('clusterName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Dedicated",
                "capacity":1
             }
          },
          {
             "type":"Microsoft.EventHub/namespaces",
             "apiVersion":"2021-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Standard",
                "tier":"Standard",
                "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: CreateEventHubsNamespaceWithUserIdentityAndEncryptionParams.json.

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "value":"<EventHubsNamespaceName>"
          },
          "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
    <EventHubsNamespaceName> Pilih namespace Azure Event Hubs Anda.
    <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 CreateEventHubsNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./ CreateEventHubsNamespaceWithUserIdentityAndEncryption.json -TemplateParameterFile ./ CreateEventHubsNamespaceWithUserIdentityAndEncryptionParams.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 (atau ganda) untuk enkripsi data

Jika 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 akun namespace Azure Event Hubs dienkripsi dua kali, sekali di tingkat layanan dan sekali di tingkat infrastruktur, dengan dua algoritme enkripsi yang berbeda dan dua kunci yang berbeda. Oleh karena itu, enkripsi infrastruktur data Azure Event Hubs melindungi dari skenario di mana salah satu algoritme atau kunci enkripsi mungkin disusupi.

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

"properties":{
   "isAutoInflateEnabled":false,
   "maximumThroughputUnits":0,
   "clusterArmId":"[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]",
   "encryption":{
      "keySource":"Microsoft.KeyVault",
      "requireInfrastructureEncryption":true,
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]"
         }
      ]
   }
}

Memutar, mencabut, dan menyimpan kunci enkripsi

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 Pusat Aktivitas akan mendeteksi versi baru kunci dan mulai menggunakannya secara otomatis.

Mencabut akses ke kunci

Mencabut akses ke kunci enkripsi tidak akan menghapus data dari Pusat Aktivitas secara menyeluruh. Namun, data tidak dapat diakses dari namespace layanan Pusat Aktivitas. 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 Pusat Aktivitas pada namespace layanan terenkripsi menjadi tidak bisa dioperasikan. Jika akses ke kunci diaktifkan atau kunci yang dihapus dipulihkan, layanan Pusat Aktivitas akan memilih kunci sehingga Anda dapat mengakses data dari namespace layanan Pusat Aktivitas terenkripsi.

Caching kunci

Instans Azure Event Hubs (pusat aktivitas) melakukan polling kunci enkripsi yang terdaftar setiap 5 menit. Ini menyinggahkan dan menggunakannya sampai polling berikutnya, yaitu setelah 5 menit. Selama setidaknya satu kunci tersedia, pusat aktivitas dapat diakses. Jika semua kunci yang tercantum tidak dapat diakses ketika polling, semua pusat aktivitas akan menjadi tidak tersedia.

Berikut adalah perincian lebih lanjut:

  • Setiap 5 menit, layanan Azure Event Hubs 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. Namun, data tidak dapat diakses dari namespace Azure Event Hubs.'

Pertimbangan saat menggunakan pemulihan geo-bencana

Penting

Untuk mengaktifkan Geo-DR pada namespace yang menggunakan enkripsi BYOK, namespace sekunder untuk pemasangan harus memiliki identitas terkelola yang ditetapkan sistem dan pengguna yang aktif di dalamnya.

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. Hal ini memastikan akses terkontrol ke Azure KeyVault dari namespace Azure Event Hubs.

Karena ini:

  • Jika Pemulihan bencana Geo sudah diaktifkan untuk namespace Layanan Pusat Aktivitas 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 Layanan Pusat Aktivitas 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 sekunder harus sudah mengaktifkan Enkripsi dengan identitas yang Ditetapkan Pengguna jika ingin dipasangkan dengan namespace utama yang mengaktifkan Enkripsi.
  2. Tidak mungkin untuk mengaktifkan Enkripsi pada namespace layanan utama yang sudah dipasangkan, bahkan jika namespace layanan sekunder memiliki identitas yang Ditetapkan Pengguna yang terkait dengan namespace layanan.

Menyiapkan log diagnostik

Mengatur log diagnostik untuk namespace layanan yang diaktifkan BYOK memberi Anda informasi yang diperlukan tentang operasi. Log ini dapat diaktifkan dan kemudian dialirkan ke pusat aktivitas atau dianalisis melalui analitik log atau dialirkan ke penyimpanan untuk melakukan analitik yang disesuaikan. Untuk mempelajari selengkapnya tentang log diagnostik, lihat Gambaran Umum log Diagnostik Azure. Untuk skema, lihat Referensi data monitor.

Langkah berikutnya

Lihat artikel berikut: