Konfigurera kundhanterade nycklar för kryptering av Azure Service Bus-data i vila

Azure Service Bus Premium tillhandahåller kryptering av vilande data med Azure Storage Service Encryption (Azure SSE). Service Bus Premium använder Azure Storage för att lagra data. Alla data som lagras med Azure Storage krypteras med hjälp av Microsoft-hanterade nycklar. Om du använder din egen nyckel (kallas även BYOK (Bring Your Own Key) eller kundhanterad nyckel krypteras data fortfarande med hjälp av den Microsoft-hanterade nyckeln, men dessutom krypteras den Microsoft-hanterade nyckeln med hjälp av den kundhanterade nyckeln. Med den här funktionen kan du skapa, rotera, inaktivera och återkalla åtkomst till kundhanterade nycklar som används för kryptering av Microsoft-hanterade nycklar. Att aktivera BYOK-funktionen är en engångskonfigurationsprocess i ditt namnområde.

Det finns vissa varningar till den kundhanterade nyckeln för kryptering på tjänstsidan.

  • Den här funktionen stöds av Azure Service Bus Premium-nivån . Det kan inte aktiveras för Service Bus-namnområden på standardnivå.
  • Krypteringen kan bara aktiveras för nya eller tomma namnområden. Om namnområdet innehåller köer eller ämnen misslyckas krypteringsåtgärden.

Du kan använda Azure Key Vault för att hantera dina nycklar och granska din nyckelanvändning. Du kan antingen skapa egna nycklar och lagra dem i ett nyckelvalv, eller så kan du använda Azure Key Vault-API:erna för att generera nycklar. Mer information om Azure Key Vault finns i Vad är Azure Key Vault?

Aktivera kundhanterade nycklar (Azure-portalen)

Följ dessa steg för att aktivera kundhanterade nycklar i Azure-portalen:

  1. Gå till Service Bus Premium-namnområdet.

  2. På sidan Inställningar i Service Bus-namnområdet väljer du Kryptering.

  3. Välj den kundhanterade nyckelkryptering i vila som visas i följande bild.

    Enable customer managed key

Konfigurera ett nyckelvalv med nycklar

När du har aktiverat kundhanterade nycklar måste du associera den kundhanterade nyckeln med ditt Azure Service Bus-namnområde. Service Bus stöder endast Azure Key Vault. Om du aktiverar alternativet Kryptering med kundhanterad nyckel i föregående avsnitt måste nyckeln importeras till Azure Key Vault. Dessutom måste nycklarna ha Mjuk borttagning och Rensa inte konfigurerat för nyckeln. De här inställningarna kan konfigureras med PowerShell eller CLI.

  1. Om du vill skapa ett nytt nyckelvalv följer du snabbstarten för Azure Key Vault. Mer information om hur du importerar befintliga nycklar finns i Om nycklar, hemligheter och certifikat.

    Viktigt!

    Användning av kundhanterade nycklar med Azure Service Bus kräver att nyckelvalvet har två nödvändiga egenskaper konfigurerade. De är: Mjuk borttagning och Rensa inte. Egenskapen Mjuk borttagning är aktiverad som standard när du skapar ett nytt nyckelvalv i Azure-portalen medan rensningsskyddet är valfritt, så se till att välja det när du skapar Nyckelvalvet. Om du behöver aktivera dessa egenskaper i ett befintligt nyckelvalv måste du använda antingen PowerShell eller Azure CLI.

  2. Om du vill aktivera både mjukt borttagnings- och rensningsskydd när du skapar ett valv använder du kommandot 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. Om du vill lägga till rensningsskydd i ett befintligt valv (som redan har mjuk borttagning aktiverat) använder du kommandot az keyvault update .

    az keyvault update --name contoso-SB-BYOK-keyvault --resource-group ContosoRG --enable-purge-protection true
    
  4. Skapa nycklar genom att följa dessa steg:

    1. Om du vill skapa en ny nyckel väljer du Generera/importeramenyn Nycklar under Inställningar.

      Select Generate/Import button

    2. Ange Alternativ till Generera och ge nyckeln ett namn.

      Create a key

    3. Nu kan du välja den här nyckeln som ska associeras med Service Bus-namnområdet för kryptering från listrutan.

      Select key from key vault

      Kommentar

      För redundans kan du lägga till upp till 3 nycklar. Om en av nycklarna har upphört att gälla eller inte är tillgänglig används de andra nycklarna för kryptering.

    4. Fyll i informationen för nyckeln och klicka på Välj. Detta möjliggör kryptering av den Microsoft-hanterade nyckeln med din nyckel (kundhanterad nyckel).

    Viktigt!

    Om du vill använda kundhanterad nyckel tillsammans med geo-haveriberedskap kan du läsa det här avsnittet.

    För att aktivera kryptering av Microsoft-hanterad nyckel med en kundhanterad nyckel konfigureras en åtkomstprincip för Service Bus hanterade identitet på den angivna Azure KeyVault. Detta säkerställer kontrollerad åtkomst till Azure KeyVault från Azure Service Bus-namnområdet.

    På grund av detta:

    • Om geo-haveriberedskap redan är aktiverat för Service Bus-namnområdet och du vill aktivera kundhanterad nyckel, så

      • Bryt parkopplingen
      • Konfigurera åtkomstprincipen för den hanterade identiteten för både de primära och sekundära namnrymderna till nyckelvalvet.
      • Konfigurera kryptering på det primära namnområdet.
      • Koppla om de primära och sekundära namnrymderna.
    • Om du vill aktivera Geo-DR på ett Service Bus-namnområde där kundhanterad nyckel redan har konfigurerats, så -

      • Konfigurera åtkomstprincipen för den hanterade identiteten för det sekundära namnområdet till nyckelvalvet.
      • Koppla ihop de primära och sekundära namnrymderna.
    • När det sekundära namnområdet är kopplat använder det nyckelvalv som konfigurerats för det primära namnområdet. Om nyckelvalvet för båda namnrymderna skiljer sig före Geo-DR-parkoppling måste användaren delegera en åtkomstprincip eller RBAC-roll för den hanterade identiteten för det sekundära namnområdet i nyckelvalvet som är associerat med det primära namnområdet.

Hanterade identiteter

Det finns två typer av hanterade identiteter som du kan tilldela till ett Service Bus-namnområde.

  • Systemtilldelad: Du kan aktivera en hanterad identitet direkt på ett Service Bus-namnområde. När du aktiverar en systemtilldelad hanterad identitet skapas en identitet i Microsoft Entra som är kopplad till livscykeln för service bus-namnområdet. Så när namnområdet tas bort tar Azure automatiskt bort identiteten åt dig. Avsiktligt kan endast den Azure-resursen (namnområdet) använda den här identiteten för att begära token från Microsoft Entra-ID.

  • Användartilldelad: Du kan också skapa en hanterad identitet som en fristående Azure-resurs, som kallas användartilldelad identitet. Du kan skapa en användartilldelad hanterad identitet och tilldela den till en eller flera Service Bus-namnområden. När du använder användartilldelade hanterade identiteter hanteras identiteten separat från de resurser som använder den. De är inte knutna till namnområdets livscykel. Du kan uttryckligen ta bort en användartilldelad identitet när du inte längre behöver den.

    Mer information finns i Vad är hanterade identiteter för Azure-resurser?

Kryptera med systemtilldelade identiteter (mall)

Det här avsnittet visar hur du utför följande uppgifter:

  1. Skapa ett Premium Service Bus-namnområde med en hanterad tjänstidentitet.
  2. Skapa ett nyckelvalv och ge tjänstidentiteten åtkomst till nyckelvalvet.
  3. Uppdatera Service Bus-namnområdet med information om nyckelvalvet (nyckel/värde).

Skapa ett Premium Service Bus-namnområde med hanterad tjänstidentitet

Det här avsnittet visar hur du skapar ett Azure Service Bus-namnområde med hanterad tjänstidentitet med hjälp av en Azure Resource Manager-mall och PowerShell.

  1. Skapa en Azure Resource Manager-mall för att skapa ett Service Bus Premium-nivånamnområde med en hanterad tjänstidentitet. Ge filen namnet: 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. Skapa en mallparameterfil med namnet: CreateServiceBusPremiumNamespaceParams.json.

    Kommentar

    Ersätt följande värden:

    • <ServiceBusNamespaceName> – Namn på Service Bus-namnområdet
    • <Location> – Plats för Service Bus-namnområdet
    {
       "$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. Kör följande PowerShell-kommando för att distribuera mallen för att skapa ett Premium Service Bus-namnområde. Hämta sedan ID:t för Service Bus-namnområdet för att använda det senare. Ersätt {MyRG} med namnet på resursgruppen innan du kör kommandot.

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

Bevilja Service Bus-namnområdesidentitet åtkomst till nyckelvalvet

  1. Kör följande kommando för att skapa ett nyckelvalv med rensningsskydd och mjuk borttagning aktiverat.

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

    (ELLER)

    Kör följande kommando för att uppdatera ett befintligt nyckelvalv. Ange värden för resursgrupps- och nyckelvalvsnamn innan du kör kommandot.

    ($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. Ange åtkomstprincipen för nyckelvalvet så att den hanterade identiteten för Service Bus-namnområdet kan komma åt nyckelvärdet i nyckelvalvet. Använd ID:t för Service Bus-namnområdet från föregående avsnitt.

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

Kryptera data i Service Bus-namnområdet med kundhanterad nyckel från nyckelvalvet

Du har gjort följande hittills:

  1. Skapade ett premiumnamnområde med en hanterad identitet.
  2. Skapa ett nyckelvalv och bevilja den hanterade identiteten åtkomst till nyckelvalvet.

I det här steget uppdaterar du Service Bus-namnområdet med information om nyckelvalvet.

  1. Skapa en JSON-fil med namnet UpdateServiceBusNamespaceWithEncryption.json med följande innehåll:

    {
       "$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. Skapa en mallparameterfil: UpdateServiceBusNamespaceWithEncryptionParams.json.

    Kommentar

    Ersätt följande värden:

    • <ServiceBusNamespaceName> – Namn på Service Bus-namnområdet
    • <Location> – Plats för Service Bus-namnområdet
    • <KeyVaultName> – Namnet på ditt nyckelvalv
    • <KeyName> – Namnet på nyckeln i nyckelvalvet
    {
       "$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. Kör följande PowerShell-kommando för att distribuera Resource Manager-mallen. Ersätt {MyRG} med namnet på resursgruppen innan du kör kommandot.

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

Kryptera med användartilldelade identiteter (mall)

  1. Skapa en användartilldelad identitet.
  2. Skapa ett nyckelvalv och bevilja åtkomst till den användartilldelade identiteten via åtkomstprinciper.
  3. Skapa ett Premium Service Bus-namnområde med den hanterade användaridentiteten och nyckelvalvsinformationen.

Skapa en användartilldelad identitet

Följ anvisningarna i artikeln Skapa en användartilldelad hanterad identitet för att skapa en användartilldelad identitet. Du kan också skapa en användartilldelad identitet med hjälp av CLI, PowerShell, Azure Resource Manager-mall och REST.

Kommentar

Du kan tilldela upp till 4 användaridentiteter till ett namnområde. Dessa associationer tas bort när namnområdet tas bort eller när du skickar identity -> type i mallen till None.

Skapa ett nyckelvalv och bevilja åtkomst till användartilldelad identitet

  1. Kör följande kommando för att skapa ett nyckelvalv med rensningsskydd och mjuk borttagning aktiverat.

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

    (ELLER)

    Kör följande kommando för att uppdatera ett befintligt nyckelvalv. Ange värden för resursgrupps- och nyckelvalvsnamn innan du kör kommandot.

    ($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. Hämta tjänstens huvudnamns-ID för användaridentiteten med hjälp av följande PowerShell-kommando. I exemplet ud1 är den användartilldelade identiteten som ska användas för kryptering.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  3. Ge den användartilldelade identiteten åtkomst till nyckelvalvet genom att tilldela en åtkomstprincip.

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

    Kommentar

    Du kan lägga till upp till tre nycklar, men användaridentiteten som används för kryptering bör vara densamma för alla nycklar. För närvarande stöds endast en enda krypteringsidentitet.

Skapa ett Premium Service Bus-namnområde med information om användaridentitet och nyckelvalv

Det här avsnittet innehåller ett exempel som visar hur du utför följande uppgifter med hjälp av en Azure Resource Manager-mall.

  • Tilldela en användarhanterad identitet till ett Service Bus-namnområde.

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  • Aktivera kryptering på namnområdet genom att ange en nyckel från nyckelvalvet och den användarhanterade identiteten för att få åtkomst till nyckeln.

                    "encryption":{
                       "keySource":"Microsoft.KeyVault",
                       "keyVaultProperties":[
                            {
                                "keyName": "[parameters('keyName')]",
                                "keyVaultUri": "[parameters('keyVaultUri')]",
                                "identity": {
                                    "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                                }
                            }
                       ]
                    }
    
  1. Skapa en JSON-fil med namnet CreateServiceBusNamespaceWithUserIdentityAndEncryption.json med följande innehåll:

    {
       "$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. Skapa en mallparameterfil: 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>"
            }
         }
       }
    }
    

    Ersätt platshållarna med lämpliga värden i parameterfilen.

    Platshållare värde
    <ServiceBusNamespaceName> Namn på Service Bus-namnområdet.
    <Location> Plats där du vill att namnområdet ska skapas.
    <KeyVaultName> Namnet på nyckelvalvet.
    <KeyName> Namnet på nyckeln i nyckelvalvet.
    <AZURE SUBSCRIPTION ID> ditt prenumerations-ID för Azure
    <RESOURCE GROUP NAME> Resursgrupp för den användarhanterade identiteten.
    <USER MANAGED IDENTITY NAME> Namnet på den användarhanterade identiteten.
  3. Kör följande PowerShell-kommando för att distribuera Resource Manager-mallen. Ersätt {MyRG} med namnet på resursgruppen innan du kör kommandot.

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

Använda både användartilldelade och systemtilldelade identiteter

Ett namnområde kan ha både systemtilldelade och användartilldelade identiteter samtidigt. I det här fallet skulle egenskapen type vara SystemAssigned, UserAssigned som du ser i följande exempel.

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

I det här scenariot kan du välja antingen den systemtilldelade identiteten eller den användartilldelade identiteten för kryptering av vilande data.

Om du inte anger något identity attribut i Resource Manager-mallen används den systemhanterade identiteten. Här är ett exempelfragment.

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

Se följande exempel för att använda den användarhanterade identiteten för krypteringen. identity Observera att attributet är inställt på den användarhanterade identiteten.

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

Aktivera infrastrukturkryptering (dubbel) av data

Om du behöver en högre säkerhetsnivå för att dina data är säkra kan du aktivera kryptering på infrastrukturnivå, vilket även kallas dubbelkryptering.

När infrastrukturkryptering är aktiverat krypteras data i Azure Service Bus två gånger, en gång på tjänstnivå och en gång på infrastrukturnivå, med hjälp av två olika krypteringsalgoritmer och två olika nycklar. Därför skyddar infrastrukturkryptering av Azure Service Bus-data mot ett scenario där en av krypteringsalgoritmerna eller nycklarna kan komprometteras.

Du kan aktivera infrastrukturkryptering genom att uppdatera Azure Resource Manager-mallen med requireInfrastructureEncryption egenskapen i ovanstående UpdateServiceBusNamespaceWithEncryption.json enligt nedan.

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

Rotera, återkalla och cachelagrade nycklar

Rotera krypteringsnycklarna

Du kan rotera nyckeln i nyckelvalvet med hjälp av rotationsmekanismen för Azure Key Vaults. Aktiverings- och förfallodatum kan också anges för att automatisera nyckelrotation. Service Bus-tjänsten identifierar nya nyckelversioner och börjar använda dem automatiskt.

Återkalla åtkomst till nycklar

Om du återkallar åtkomsten till krypteringsnycklarna rensas inte data från Service Bus. Data kan dock inte nås från Service Bus-namnområdet. Du kan återkalla krypteringsnyckeln via åtkomstprincipen eller genom att ta bort nyckeln. Läs mer om åtkomstprinciper och hur du skyddar ditt nyckelvalv från Säker åtkomst till ett nyckelvalv.

När krypteringsnyckeln har återkallats blir Service Bus-tjänsten i det krypterade namnområdet obrukbar. Om åtkomsten till nyckeln är aktiverad eller om den borttagna nyckeln har återställts väljer Service Bus-tjänsten nyckeln så att du kan komma åt data från det krypterade Service Bus-namnområdet.

Cachelagring nycklar

Service Bus-instansen avsöker sina listade krypteringsnycklar var 5:e minut. Den cachelagrar och använder dem till nästa omröstning, vilket är efter 5 minuter. Så länge minst en nyckel är tillgänglig är köer och ämnen tillgängliga. Om alla listade nycklar är otillgängliga när de avsöker blir alla köer och ämnen otillgängliga.

Här är mer information:

  • Var 5:e minut avsöker Service Bus-tjänsten alla kundhanterade nycklar som anges i namnområdets post:
    • Om en nyckel har roterats uppdateras posten med den nya nyckeln.
    • Om en nyckel har återkallats tas nyckeln bort från posten.
    • Om alla nycklar har återkallats är namnområdets krypteringsstatus inställd på Återkallad. Det går inte att komma åt data från Service Bus-namnområdet.

Överväganden vid användning av geo-haveriberedskap

Geo-haveriberedskap – kryptering med systemtilldelade identiteter

För att aktivera kryptering av Microsoft-hanterad nyckel med en kundhanterad nyckel konfigureras en åtkomstprincip för en systemtilldelad hanterad identitet på den angivna Azure KeyVault. Det här steget säkerställer kontrollerad åtkomst till Azure KeyVault från Azure Service Bus-namnområdet. Därför måste du följa dessa steg:

  • Om Geo-haveriberedskap redan är aktiverat för Service Bus-namnområdet och du vill aktivera kundhanterad nyckel, så
    • Bryt parkopplingen.
    • Konfigurera åtkomstprincipen för den systemtilldelade hanterade identiteten för både de primära och sekundära namnrymderna till nyckelvalvet.
    • Konfigurera kryptering på det primära namnområdet.
    • Koppla om de primära och sekundära namnrymderna.
  • Om du vill aktivera Geo-DR på ett Service Bus-namnområde där kundhanterad nyckel redan har konfigurerats följer du dessa steg:
    • Konfigurera åtkomstprincipen för den hanterade identiteten för det sekundära namnområdet till nyckelvalvet.
    • Koppla ihop de primära och sekundära namnrymderna.

Geo-haveriberedskap – kryptering med användartilldelade identiteter

Här är några rekommendationer:

  1. Skapa en hanterad identitet och tilldela Key Vault-behörigheter till din hanterade identitet.
  2. Lägg till identiteten som en användartilldelad identitet och aktivera kryptering med identiteten på båda namnrymderna.
  3. Koppla ihop namnområden

Villkor för att aktivera Geo-DR och kryptering med användartilldelade identiteter:

  1. Det sekundära namnområdet måste redan ha Kryptering aktiverat med en användartilldelad identitet om den ska paras ihop med ett primärt namnområde som har Kryptering aktiverat.
  2. Det går inte att aktivera Kryptering på en redan parad primär, även om den sekundära har en användartilldelad identitet som är associerad med namnområdet.

Felsöka

Symptom

Du får ett felmeddelande om att Service Bus-namnområdet är inaktiverat eftersom krypteringsnyckeln inte längre är giltig.

Orsak

Du kanske använder resource_id eller version, som länkar till en viss version av nyckeln, som kan ha upphört att gälla. Om en specifik version tillhandahålls använder Service Bus den versionen av nyckeln, även om nyckeln roteras.

Åtgärd

resource__versionless_id Använd eller versionless_id i stället för att använda resource_id eller version.

Nästa steg

Mer information finns i följande artiklar: