Aracılığıyla paylaş


Bekleyen Azure Service Bus verilerini şifrelemek için müşteri tarafından yönetilen anahtarları yapılandırma

Azure Service Bus Premium, Azure Depolama Hizmet Şifrelemesi (Azure SSE) ile bekleyen verilerin şifrelenmesini sağlar. Service Bus Premium, verileri depolamak için Azure Depolama kullanır. Azure Depolama ile depolanan tüm veriler Microsoft tarafından yönetilen anahtarlar kullanılarak şifrelenir. Kendi anahtarınızı (Kendi Anahtarını Getir (BYOK) veya müşteri tarafından yönetilen anahtar olarak da adlandırılır) kullanıyorsanız veriler Microsoft tarafından yönetilen anahtar kullanılarak şifrelenir, ancak ayrıca Microsoft tarafından yönetilen anahtar müşteri tarafından yönetilen anahtar kullanılarak şifrelenir. Bu özellik, Microsoft tarafından yönetilen anahtarları şifrelemek için kullanılan müşteri tarafından yönetilen anahtarlar oluşturmanızı, döndürmenizi, devre dışı bırakmanızı ve erişimi iptal etmenizi sağlar. KAG özelliğini etkinleştirmek, ad alanınızda tek seferlik bir kurulum işlemidir.

Hizmet tarafı şifrelemesi için müşteri tarafından yönetilen anahtara yönelik bazı uyarılar vardır.

  • Bu özellik Azure Service Bus Premium katmanı tarafından desteklenir. Standart katman Service Bus ad alanları için etkinleştirilemiyor.
  • Şifreleme yalnızca yeni veya boş ad alanları için etkinleştirilebilir. Ad alanı herhangi bir kuyruk veya konu içeriyorsa şifreleme işlemi başarısız olur.

Anahtarlarınızı yönetmek ve anahtar kullanımınızı denetlemek için Azure Key Vault'ı (Azure Key Vault Yönetilen HSM dahil) kullanabilirsiniz. Kendi anahtarlarınızı oluşturup bir anahtar kasasında depolayabilir veya anahtar oluşturmak için Azure Key Vault API'lerini kullanabilirsiniz. Azure Key Vault hakkında daha fazla bilgi için bkz. Azure Key Vault nedir?

Müşteri tarafından yönetilen anahtarları etkinleştirme (Azure portalı)

Azure portalında müşteri tarafından yönetilen anahtarları etkinleştirmek için şu adımları izleyin:

  1. Service Bus Premium ad alanınıza gidin.

  2. Service Bus ad alanınızın Ayarlar sayfasında Şifreleme'yi seçin.

  3. Aşağıdaki görüntüde gösterildiği gibi Bekleyen müşteri tarafından yönetilen anahtar şifrelemesini seçin.

    Müşteri tarafından yönetilen anahtarı etkinleştirme

Not

Şu anda portal aracılığıyla Azure Key Vault Yönetilen HSM'yi yapılandıramazsınız.

Anahtarlarla anahtar kasası ayarlama

Müşteri tarafından yönetilen anahtarları etkinleştirdikten sonra, müşteri tarafından yönetilen anahtarı Azure Service Bus ad alanınızla ilişkilendirmeniz gerekir. Service Bus yalnızca Azure Key Vault'un desteklemektedir. Önceki bölümde Müşteri tarafından yönetilen anahtarla şifreleme seçeneğini etkinleştirirseniz anahtarın Azure Key Vault'a aktarılmış olması gerekir. Ayrıca anahtarlar için Geçici Silme ve Temizleme'nin yapılandırılmış olması gerekir. Bu ayarlar PowerShell veya CLI kullanılarak yapılandırılabilir.

  1. Yeni bir anahtar kasası oluşturmak için Azure Key Vault Hızlı Başlangıcı'nı izleyin. Mevcut anahtarları içeri aktarma hakkında daha fazla bilgi için bkz . Anahtarlar, gizli diziler ve sertifikalar hakkında.

    Önemli

    Azure Service Bus ile müşteri tarafından yönetilen anahtarların kullanılması için anahtar kasasının iki gerekli özelliği yapılandırılmış olması gerekir. Bunlar: Geçici Silme ve Temizleme. Geçici Silme özelliği, Azure portalında yeni bir anahtar kasası oluşturduğunuzda varsayılan olarak etkinleştirilirken Temizleme Koruması isteğe bağlıdır, bu nedenle Key Vault'u oluştururken bunu seçtiğinizden emin olun. Ayrıca, mevcut bir anahtar kasasında bu özellikleri etkinleştirmeniz gerekiyorsa PowerShell veya Azure CLI kullanmanız gerekir.

  1. Kasa oluştururken hem geçici silme hem de temizleme korumasını açmak için az keyvault create komutunu kullanın.

    az keyvault create --name contoso-SB-BYOK-keyvault --resource-group ContosoRG --location westus --enable-soft-delete true --enable-purge-protection true
    
  2. Mevcut bir kasaya temizleme koruması eklemek için (geçici silme özelliği zaten etkindir), az keyvault update komutunu kullanın.

    az keyvault update --name contoso-SB-BYOK-keyvault --resource-group ContosoRG --enable-purge-protection true
    
  1. Şu adımları izleyerek anahtarlar oluşturun:

    1. Yeni bir anahtar oluşturmak için, Ayarlar altındaki Anahtarlar menüsünden Oluştur/İçeri Aktar'ı seçin.

      Oluştur/İçeri Aktar düğmesini seçin

    2. Seçenekler'i Oluştur olarak ayarlayın ve anahtara bir ad verin.

      Anahtar oluşturma

    3. Artık açılan listeden şifrelemek üzere Service Bus ad alanıyla ilişkilendirmek üzere bu anahtarı seçebilirsiniz.

      Anahtar kasasından anahtar seçme

      Not

      Yedeklilik için en fazla 3 anahtar ekleyebilirsiniz. Anahtarlardan birinin süresinin dolması veya erişilebilir olmaması durumunda, diğer anahtarlar şifreleme için kullanılır.

    4. Anahtarın ayrıntılarını doldurun ve Seç'e tıklayın. Bu, Microsoft tarafından yönetilen anahtarın anahtarınızla (müşteri tarafından yönetilen anahtar) şifrelenmesini sağlar.

    Önemli

    Coğrafi Olağanüstü Durum Kurtarma ile birlikte Müşteri tarafından yönetilen anahtarı kullanmak istiyorsanız lütfen bu bölümü gözden geçirin.

    Microsoft tarafından yönetilen anahtarın müşteri tarafından yönetilen anahtarla şifrelenmesini etkinleştirmek için, belirtilen Azure KeyVault üzerinde Service Bus'ın yönetilen kimliği için bir erişim ilkesi ayarlanır. Bu, Azure Service Bus ad alanından Azure KeyVault'a denetimli erişim sağlar.

    Bunun nedeni:

    • Service Bus ad alanı için Coğrafi Olağanüstü Durum Kurtarma zaten etkinse ve müşteri tarafından yönetilen anahtarı etkinleştirmek istiyorsanız

    • Müşteri tarafından yönetilen anahtarın zaten ayarlandığı bir Service Bus ad alanında Coğrafi Olağanüstü Durum Kurtarma'yı etkinleştirmek istiyorsanız-

    • eşlendikten sonra, ikincil ad alanı birincil ad alanı için yapılandırılan anahtar kasasını kullanır. Coğrafi Olağanüstü Durum Kurtarma eşleştirmeden önce her iki ad alanının anahtar kasası farklıysa, kullanıcının birincil ad alanıyla ilişkilendirilmiş anahtar kasasındaki ikincil ad alanının yönetilen kimliği için bir erişim ilkesi veya RBAC rolü ataması gerekir.

Yönetilen kimlikler

Service Bus ad alanına atayabileceğiniz iki tür yönetilen kimlik vardır.

  • Sistem tarafından atanan: Yönetilen kimliği doğrudan Service Bus ad alanında etkinleştirebilirsiniz. Sistem tarafından atanan yönetilen kimliği etkinleştirdiğinizde, Microsoft Entra'da bu Service Bus ad alanının yaşam döngüsüne bağlı bir kimlik oluşturulur. Bu nedenle, ad alanı silindiğinde Azure sizin için kimliği otomatik olarak siler. Tasarım gereği, bu kimliği yalnızca bu Azure kaynağı (ad alanı) Microsoft Entra Id'den belirteç istemek için kullanabilir.

  • Kullanıcı tarafından atanan: Yönetilen kimliği, kullanıcı tarafından atanan kimlik olarak adlandırılan tek başına Azure kaynağı olarak da oluşturabilirsiniz. Kullanıcı tarafından atanan bir yönetilen kimlik oluşturabilir ve bunu bir veya daha fazla Service Bus ad alanına atayabilirsiniz. Kullanıcı tarafından atanan yönetilen kimlikleri kullandığınızda, kimlik onu kullanan kaynaklardan ayrı olarak yönetilir. Bunlar ad alanının yaşam döngüsüne bağlı değildir. Kullanıcı tarafından atanan bir kimliği artık ihtiyacınız kalmadığında açıkça silebilirsiniz.

    Daha fazla bilgi için bkz. Azure kaynakları için yönetilen kimlikler nedir?.

Sistem tarafından atanan kimlikleri kullanarak şifreleme (şablon)

Bu bölüm, aşağıdaki görevlerin nasıl yapılacağını gösterir:

  1. Yönetilen hizmet kimliğiyle premium bir Service Bus ad alanı oluşturun.
  2. Bir anahtar kasası oluşturun ve hizmet kimliğine anahtar kasasına erişim verin.
  3. Service Bus ad alanını anahtar kasası bilgileriyle (anahtar/değer) güncelleştirin.

Yönetilen hizmet kimliğiyle premium Service Bus ad alanı oluşturma

Bu bölümde, Azure Resource Manager şablonu ve PowerShell kullanarak yönetilen hizmet kimliğine sahip bir Azure Service Bus ad alanı oluşturma adımları gösterilmektedir.

  1. Yönetilen hizmet kimliğiyle Service Bus premium katmanı ad alanı oluşturmak için bir Azure Resource Manager şablonu oluşturun. Dosyayı adlandırın: 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. şu adlı bir şablon parametre dosyası oluşturun: CreateServiceBusPremiumNamespaceParams.json.

    Not

    Aşağıdaki değerleri değiştirin:

    • <ServiceBusNamespaceName> - Service Bus ad alanınızın adı
    • <Location> - Service Bus ad alanınızın konumu
    {
       "$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. Premium Service Bus ad alanı oluşturmak üzere şablonu dağıtmak için aşağıdaki PowerShell komutunu çalıştırın. Daha sonra kullanmak için Service Bus ad alanının kimliğini alın. komutunu çalıştırmadan önce değerini kaynak grubunun adıyla değiştirin {MyRG} .

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

Anahtar kasasına Service Bus ad alanı kimliği erişimi verme

Service Bus ad alanının yönetilen kimliğinin anahtar kasasındaki anahtar değerine erişebilmesi için anahtar kasası erişim ilkesini ayarlayın. Önceki bölümde yer alan Service Bus ad alanının kimliğini kullanın.

$identity = (Get-AzureRmResource -ResourceId $ServiceBusNamespaceId -ExpandProperties).Identity

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

Service Bus ad alanında verileri anahtar kasasından müşteri tarafından yönetilen anahtarla şifreleme

Şu ana kadar aşağıdaki adımları gerçekleştirdiniz:

  1. Yönetilen kimlikle bir premium ad alanı oluşturuldu.
  2. Bir anahtar kasası oluşturun ve yönetilen kimliğe anahtar kasasına erişim izni verin.

Bu adımda, Service Bus ad alanını anahtar kasası bilgileriyle güncelleştirirsiniz.

  1. Aşağıdaki içeriğe sahip UpdateServiceBusNamespaceWithEncryption.json adlı bir JSON dosyası oluşturun:

    {
       "$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. Şablon parametre dosyası oluşturun: UpdateServiceBusNamespaceWithEncryptionParams.json.

    Not

    Aşağıdaki değerleri değiştirin:

    • <ServiceBusNamespaceName> - Service Bus ad alanınızın adı
    • <Location> - Service Bus ad alanınızın konumu
    • <KeyVaultName> - Anahtar kasanızın adı
    • <KeyName> - Anahtar kasasındaki anahtarın adı
    {
       "$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. Resource Manager şablonunu dağıtmak için aşağıdaki PowerShell komutunu çalıştırın. komutunu çalıştırmadan önce değerini kaynak grubunuzun adıyla değiştirin {MyRG} .

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

Kullanıcı tarafından atanan kimlikleri (şablon) kullanarak şifreleme

  1. Kullanıcı tarafından atanan bir kimlik oluşturun.
  2. Bir anahtar kasası oluşturun ve erişim ilkeleri aracılığıyla kullanıcı tarafından atanan kimliğe erişim izni verin.
  3. Yönetilen kullanıcı kimliği ve anahtar kasası bilgileriyle bir premium Service Bus ad alanı oluşturun.

Kullanıcı tarafından atanan kimlik oluşturma

Kullanıcı tarafından atanan kimlik oluşturmak için Kullanıcı tarafından atanan yönetilen kimlik oluşturma makalesindeki yönergeleri izleyin. CLI, PowerShell, Azure Resource Manager şablonu ve REST kullanarak kullanıcı tarafından atanan bir kimlik de oluşturabilirsiniz.

Not

Ad alanına en fazla 4 kullanıcı kimliği atayabilirsiniz. Bu ilişkilendirmeler, ad alanı silindiğinde veya şablonuna Nonegeçirdiğinizde identity -> type silinir.

Kullanıcı tarafından atanan kimliğe erişim izni verme

  1. Aşağıdaki PowerShell komutunu kullanarak kullanıcı kimliği için Hizmet sorumlusu kimliğini alın. Örnekte, ud1 şifreleme için kullanılacak kullanıcı tarafından atanan kimliktir.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  2. Erişim ilkesi atayarak anahtar kasasına kullanıcı tarafından atanan kimliğe erişim izni verin.

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

    Not

    En fazla 3 anahtar ekleyebilirsiniz, ancak şifreleme için kullanılan kullanıcı kimliği tüm anahtarlar için aynı olmalıdır. Şu anda yalnızca tek bir şifreleme kimliği desteklenmektedir.

Kullanıcı kimliği ve anahtar kasası bilgileriyle premium Service Bus ad alanı oluşturma

Bu bölümde, bir Azure Resource Manager şablonu kullanarak aşağıdaki görevlerin nasıl gerçekleştirildiğini gösteren bir örnek verilmiştir.

  1. Service Bus ad alanına kullanıcı tarafından yönetilen bir kimlik atayın.

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  2. Anahtar kasanızdan bir anahtar ve anahtara erişmek için kullanıcı tarafından yönetilen kimlik belirterek ad alanında şifrelemeyi etkinleştirin.

                    "encryption":{
                       "keySource":"Microsoft.KeyVault",
                       "keyVaultProperties":[
                            {
                                "keyName": "[parameters('keyName')]",
                                "keyVaultUri": "[parameters('keyVaultUri')]",
                                "identity": {
                                    "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                                }
                            }
                       ]
                    }
    
  3. Aşağıdaki içeriğe sahip CreateServiceBusNamespaceWithUserIdentityAndEncryption.json adlı bir JSON dosyası oluşturun:

    {
       "$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]"
                            }
                        }
                   ]
                }
             }
          }
       ]
    }        
    
  4. Şablon parametre dosyası oluşturun: 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>"
          }
       }
       }
    }
    

    Parametre dosyasında yer tutucuları uygun değerlerle değiştirin.

    Yer tutucu değer
    <ServiceBusNamespaceName> Service Bus ad alanının adı.
    <Location> Ad alanının oluşturulmasını istediğiniz konum.
    <KeyVaultName> Anahtar kasasının adı.
    <KeyName> Anahtar kasasındaki anahtarın adı.
    <AZURE SUBSCRIPTION ID> Azure abonelik kimliğiniz.
    <RESOURCE GROUP NAME> Kullanıcı tarafından yönetilen kimliğin kaynak grubu.
    <USER MANAGED IDENTITY NAME> Kullanıcı tarafından yönetilen kimliğin adı.
  5. Resource Manager şablonunu dağıtmak için aşağıdaki PowerShell komutunu çalıştırın. komutunu çalıştırmadan önce değerini kaynak grubunuzun adıyla değiştirin {MyRG} .

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

Hem kullanıcı tarafından atanan hem de sistem tarafından atanan kimlikleri kullanma

Ad alanı hem sistem tarafından atanan hem de kullanıcı tarafından atanan kimliklere aynı anda sahip olabilir. Bu durumda, type aşağıdaki örnekte gösterildiği gibi özelliği olacaktır UserAssigned SystemAssigned.

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

Bu senaryoda, bekleyen verileri şifrelemek için sistem tarafından atanan kimliği veya kullanıcı tarafından atanan kimliği seçebilirsiniz.

Resource Manager şablonunda bir identity öznitelik belirtmezseniz sistem tarafından yönetilen kimlik kullanılır. Burada örnek bir kod parçacığı verilmiş.

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

Şifreleme için kullanıcı tarafından yönetilen kimliği kullanmak için aşağıdaki örne bakın. Özniteliğin identity kullanıcı tarafından yönetilen kimliğe ayarlandığına dikkat edin.

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

Altyapı (çift) veri şifrelemesini etkinleştirme

Verilerinizin güvenli olduğuna dair daha yüksek düzeyde güvenceye ihtiyacınız varsa, Çift Şifreleme olarak da bilinen altyapı düzeyinde şifrelemeyi etkinleştirebilirsiniz.

Altyapı şifrelemesi etkinleştirildiğinde Azure Service Bus'taki veriler, iki farklı şifreleme algoritması ve iki farklı anahtar kullanılarak bir kez hizmet düzeyinde ve bir kez altyapı düzeyinde iki kez şifrelenir. Bu nedenle Azure Service Bus verilerinin altyapı şifrelemesi, şifreleme algoritmalarından veya anahtarlarından birinin gizliliğinin ihlal edilebileceği bir senaryoya karşı koruma sağlar.

Azure Resource Manager şablonunu aşağıda gösterildiği gibi yukarıdaki UpdateServiceBusNamespaceWithEncryption.json özelliğiyle requireInfrastructureEncryption güncelleştirerek altyapı şifrelemesini etkinleştirebilirsiniz.

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

Anahtarları döndürme, iptal etme ve önbelleğe alma

Şifreleme anahtarlarınızı döndürme

Azure Key Vaults döndürme mekanizmasını kullanarak anahtarınızı anahtar kasasında döndürebilirsiniz. Anahtar döndürmeyi otomatikleştirmek için etkinleştirme ve son kullanma tarihleri de ayarlanabilir. Service Bus hizmeti yeni anahtar sürümlerini algılar ve bunları otomatik olarak kullanmaya başlar.

Anahtarlara erişimi iptal etme

Şifreleme anahtarlarına erişimi iptal etmek, verileri Service Bus'tan temizlemez. Ancak verilere Service Bus ad alanından erişilemiyor. Erişim ilkesi aracılığıyla veya anahtarı silerek şifreleme anahtarını iptal edebilirsiniz. Güvenli erişimden anahtar kasasına erişim ilkeleri ve anahtar kasanızın güvenliğini sağlama hakkında daha fazla bilgi edinin.

Şifreleme anahtarı iptal edilirse, şifrelenmiş ad alanında Service Bus hizmeti kullanılamaz hale gelir. Anahtara erişim etkinleştirilirse veya silinen anahtar geri yüklenirse, şifrelenmiş Service Bus ad alanından verilere erişebilmeniz için Service Bus hizmeti anahtarı seçer.

Anahtarların Önbelleğe Alma

Service Bus örneği, listelenen şifreleme anahtarlarını 5 dakikada bir yoklar. 5 dakika sonra bir sonraki ankete kadar bunları önbelleğe alır ve kullanır. En az bir anahtar kullanılabildiği sürece kuyruklara ve konulara erişilebilir. Yoklama sırasında listelenen tüm anahtarlara erişilemiyorsa, tüm kuyruklar ve konular kullanılamaz duruma gelir.

Diğer ayrıntılar şunlardır:

  • Service Bus hizmeti 5 dakikada bir ad alanının kaydında listelenen tüm müşteri tarafından yönetilen anahtarları yoklar:
    • Bir anahtar döndürüldüyse, kayıt yeni anahtarla güncelleştirilir.
    • Bir anahtar iptal edildiyse, anahtar kayıttan kaldırılır.
    • Tüm anahtarlar iptal edildiyse, ad alanının şifreleme durumu İptal Edildi olarak ayarlanır. Verilere Service Bus ad alanından erişilemiyor.

Coğrafi Olağanüstü Durum Kurtarma kullanırken dikkat edilmesi gerekenler

Coğrafi Olağanüstü Durum Kurtarma - sistem tarafından atanan kimliklerle şifreleme

Microsoft tarafından yönetilen anahtarın müşteri tarafından yönetilen anahtarla şifrelenmesini etkinleştirmek için, belirtilen Azure KeyVault üzerinde sistem tarafından atanan yönetilen kimlik için bir erişim ilkesi ayarlanır. Bu adım, Azure Service Bus ad alanından Azure KeyVault'a denetimli erişim sağlar. Bu nedenle, şu adımları izlemeniz gerekir:

Coğrafi Olağanüstü Durum Kurtarma - kullanıcı tarafından atanan kimliklerle şifreleme

İşte birkaç öneri:

  1. Yönetilen kimlik oluşturun ve yönetilen kimliğinize Key Vault izinleri atayın.
  2. Kimliği kullanıcı tarafından atanan kimlik olarak ekleyin ve her iki ad alanında da kimlikle şifrelemeyi etkinleştirin.
  3. Ad alanlarını birlikte eşleştirme

Kullanıcı Tarafından Atanan Kimliklerle Coğrafi Olağanüstü Durum Kurtarma ve Şifrelemeyi etkinleştirme koşulları:

  1. Şifreleme'nin etkinleştirildiği birincil ad alanıyla eşleştirilecekse, ikincil ad alanında Kullanıcı Tarafından Atanan kimlikle Şifreleme zaten etkin olmalıdır.
  2. İkincil ad alanıyla ilişkilendirilmiş kullanıcı tarafından atanan bir kimliğe sahip olsa bile, zaten eşleştirilmiş bir birincilde Şifrelemeyi etkinleştirmek mümkün değildir.

Sorun giderme

Belirti

Şifreleme anahtarı artık geçerli olmadığından Service Bus ad alanının devre dışı bırakıldığını belirten bir hata alıyorsunuz.

Neden

Anahtarın resource_id belirli bir sürümüne bağlanan ve süresi dolmuş olabilecek veya versionkullanıyor olabilirsiniz. Belirli bir sürüm sağlanırsa, anahtar döndürülmüş olsa bile Service Bus anahtarın bu sürümünü kullanır.

Çözüm

resource__versionless_id veya versionless_id kullanmak yerine resource_id veya versionkullanın.

Sonraki adımlar

Aşağıdaki makalelere bakın: