Door de klant beheerde sleutels configureren voor het versleutelen van Azure Service Bus-gegevens in rust

Azure Service Bus Premium biedt versleuteling van data-at-rest met Azure Storage Service Encryption (Azure SSE). Service Bus Premium maakt gebruik van Azure Storage om de gegevens op te slaan. Alle gegevens die zijn opgeslagen met Azure Storage, worden versleuteld met behulp van door Microsoft beheerde sleutels. Als u uw eigen sleutel gebruikt (ook wel Bring Your Own Key (BYOK) of door de klant beheerde sleutel genoemd), worden de gegevens nog steeds versleuteld met behulp van de door Microsoft beheerde sleutel, maar daarnaast wordt de door Microsoft beheerde sleutel versleuteld met behulp van de door de klant beheerde sleutel. Met deze functie kunt u de toegang tot door de klant beheerde sleutels maken, draaien, uitschakelen en intrekken die worden gebruikt voor het versleutelen van door Microsoft beheerde sleutels. Het inschakelen van de BYOK-functie is een eenmalig installatieproces voor uw naamruimte.

Er zijn enkele opmerkingen bij de door de klant beheerde sleutel voor versleuteling aan de servicezijde.

  • Deze functie wordt ondersteund door de Azure Service Bus Premium-laag . De service kan niet worden ingeschakeld voor Service Bus-naamruimten in de standard-laag.
  • De versleuteling kan alleen worden ingeschakeld voor nieuwe of lege naamruimten. Als de naamruimte wachtrijen of onderwerpen bevat, mislukt de versleutelingsbewerking.

U kunt Azure Key Vault gebruiken om uw sleutels te beheren en uw sleutelgebruik te controleren. U kunt uw eigen sleutels maken en deze opslaan in een sleutelkluis of u kunt de Azure Key Vault API's gebruiken om sleutels te genereren. Zie Wat is Azure Key Vault? voor meer informatie over Azure Key Vault.

Door de klant beheerde sleutels inschakelen (Azure Portal)

Voer de volgende stappen uit om door de klant beheerde sleutels in te schakelen in Azure Portal:

  1. Navigeer naar uw Service Bus Premium-naamruimte.

  2. Selecteer Versleuteling op de pagina Instellingen van uw Service Bus-naamruimte.

  3. Selecteer de versleuteling van door de klant beheerde sleutel-at-rest , zoals wordt weergegeven in de volgende afbeelding.

    Enable customer managed key

Een sleutelkluis met sleutels instellen

Nadat u door de klant beheerde sleutels hebt ingeschakeld, moet u de door de klant beheerde sleutel koppelen aan uw Azure Service Bus-naamruimte. Service Bus ondersteunt alleen Azure Key Vault. Als u de optie Versleuteling met door de klant beheerde sleutel inschakelt in de vorige sectie, moet u de sleutel importeren in Azure Key Vault. Bovendien moeten voor de sleutels Voorlopig verwijderen zijn geconfigureerd en Niet opschonen voor de sleutel zijn geconfigureerd. Deze instellingen kunnen worden geconfigureerd met behulp van PowerShell of CLI.

  1. Als u een nieuwe sleutelkluis wilt maken, volgt u de quickstart van Azure Key Vault. Zie Over sleutels, geheimen en certificaten voor meer informatie over het importeren van bestaande sleutels.

    Belangrijk

    Voor het gebruik van door de klant beheerde sleutels met Azure Service Bus is vereist dat de sleutelkluis twee vereiste eigenschappen heeft geconfigureerd. Ze zijn: Voorlopig verwijderen en niet leegmaken. De eigenschap Voorlopig verwijderen is standaard ingeschakeld wanneer u een nieuwe sleutelkluis maakt in Azure Portal, terwijl de beveiliging opschonen optioneel is, dus zorg ervoor dat u deze selecteert bij het maken van de sleutelkluis. Als u deze eigenschappen voor een bestaande sleutelkluis wilt inschakelen, moet u ook PowerShell of Azure CLI gebruiken.

  2. Als u zowel voorlopig verwijderen als opschonen wilt inschakelen bij het maken van een kluis, gebruikt u de opdracht 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. Als u beveiliging tegen opschonen wilt toevoegen aan een bestaande kluis (waarvoor voorlopig verwijderen al is ingeschakeld), gebruikt u de opdracht az keyvault update .

    az keyvault update --name contoso-SB-BYOK-keyvault --resource-group ContosoRG --enable-purge-protection true
    
  4. Maak sleutels door de volgende stappen uit te voeren:

    1. Als u een nieuwe sleutel wilt maken, selecteert u Genereren/importeren in het menu Sleutels onder Instellingen.

      Select Generate/Import button

    2. Stel Opties in om de sleutel te genereren en een naam te geven.

      Create a key

    3. U kunt deze sleutel nu selecteren om te koppelen aan de Service Bus-naamruimte voor versleuteling in de vervolgkeuzelijst.

      Select key from key vault

      Notitie

      Voor redundantie kunt u maximaal 3 sleutels toevoegen. Als een van de sleutels is verlopen of niet toegankelijk is, worden de andere sleutels gebruikt voor versleuteling.

    4. Vul de details voor de sleutel in en klik op Selecteren. Hiermee kunt u de versleuteling van de door Microsoft beheerde sleutel met uw sleutel (door de klant beheerde sleutel) inschakelen.

    Belangrijk

    Raadpleeg deze sectie als u de door de klant beheerde sleutel wilt gebruiken, samen met geo-herstel na noodgevallen.

    Als u versleuteling van door Microsoft beheerde sleutel wilt inschakelen met een door de klant beheerde sleutel, wordt een toegangsbeleid ingesteld voor de beheerde identiteit van Service Bus in de opgegeven Azure KeyVault. Dit zorgt voor gecontroleerde toegang tot Azure KeyVault vanuit de Azure Service Bus-naamruimte.

    Als gevolg hiervan:

    • Als geo-herstel na noodgevallen al is ingeschakeld voor de Service Bus-naamruimte en u de door de klant beheerde sleutel wilt inschakelen, dan

      • De koppeling verbreken
      • Stel het toegangsbeleid in voor de beheerde identiteit voor zowel de primaire als de secundaire naamruimten voor de sleutelkluis.
      • Versleuteling instellen voor de primaire naamruimte.
      • Koppel de primaire en secundaire naamruimten opnieuw.
    • Als u Geo-DR wilt inschakelen op een Service Bus-naamruimte waar de door de klant beheerde sleutel al is ingesteld, dan -

      • Stel het toegangsbeleid in voor de beheerde identiteit voor de secundaire naamruimte naar de sleutelkluis.
      • Koppel de primaire en secundaire naamruimten.
    • Zodra deze is gekoppeld, gebruikt de secundaire naamruimte de sleutelkluis die is geconfigureerd voor de primaire naamruimte. Als de sleutelkluis voor beide naamruimten verschilt voordat geo-herstel na noodgevallen wordt gekoppeld, moet de gebruiker een toegangsbeleid of RBAC-rol delegeren voor de beheerde identiteit van de secundaire naamruimte in de sleutelkluis die is gekoppeld aan de primaire naamruimte.

Beheerde identiteiten

Er zijn twee typen beheerde identiteiten die u kunt toewijzen aan een Service Bus-naamruimte.

  • Door het systeem toegewezen: u kunt een beheerde identiteit rechtstreeks inschakelen op een Service Bus-naamruimte. Wanneer u een door het systeem toegewezen beheerde identiteit inschakelt, wordt er een identiteit gemaakt in Microsoft Entra die is gekoppeld aan de levenscyclus van die Service Bus-naamruimte. Dus wanneer de naamruimte wordt verwijderd, wordt de identiteit automatisch voor u verwijderd. Alleen die Azure-resource (naamruimte) kan deze identiteit standaard gebruiken om tokens aan te vragen bij Microsoft Entra-id.

  • Door de gebruiker toegewezen: U kunt ook een beheerde identiteit maken als een zelfstandige Azure-resource, die door de gebruiker toegewezen identiteit wordt genoemd. U kunt een door de gebruiker toegewezen beheerde identiteit maken en deze toewijzen aan een of meer Service Bus-naamruimten. Wanneer u door de gebruiker toegewezen beheerde identiteiten gebruikt, wordt de identiteit afzonderlijk beheerd van de resources die deze gebruiken. Ze zijn niet gekoppeld aan de levenscyclus van de naamruimte. U kunt een door de gebruiker toegewezen identiteit expliciet verwijderen wanneer u deze niet meer nodig hebt.

    Zie Wat zijn beheerde identiteiten voor Azure-resources? voor meer informatie.

Versleutelen met door het systeem toegewezen identiteiten (sjabloon)

In deze sectie ziet u hoe u de volgende taken uitvoert:

  1. Maak een Premium Service Bus-naamruimte met een beheerde service-identiteit.
  2. Maak een sleutelkluis en ververleent de service-identiteit toegang tot de sleutelkluis.
  3. Werk de Service Bus-naamruimte bij met de sleutelkluisgegevens (sleutel/waarde).

Een Premium Service Bus-naamruimte maken met beheerde service-identiteit

In deze sectie wordt beschreven hoe u een Azure Service Bus-naamruimte met beheerde service-identiteit maakt met behulp van een Azure Resource Manager-sjabloon en PowerShell.

  1. Maak een Azure Resource Manager-sjabloon om een Service Bus Premium-laagnaamruimte te maken met een beheerde service-identiteit. Geef het bestand de naam: 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. Maak een sjabloonparameterbestand met de naam: CreateServiceBusPremiumNamespaceParams.json.

    Notitie

    Vervang de volgende waarden:

    • <ServiceBusNamespaceName> - Naam van uw Service Bus-naamruimte
    • <Location> - Locatie van uw Service Bus-naamruimte
    {
       "$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. Voer de volgende PowerShell-opdracht uit om de sjabloon te implementeren om een Premium Service Bus-naamruimte te maken. Haal vervolgens de id van de Service Bus-naamruimte op om deze later te gebruiken. Vervang {MyRG} door de naam van de resourcegroep voordat u de opdracht uitvoert.

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

Service Bus-naamruimte-identiteit toegang verlenen tot de sleutelkluis

  1. Voer de volgende opdracht uit om een sleutelkluis te maken met opschoningsbeveiliging en voorlopig verwijderen ingeschakeld.

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

    (OF)

    Voer de volgende opdracht uit om een bestaande sleutelkluis bij te werken. Geef waarden op voor resourcegroep- en sleutelkluisnamen voordat u de opdracht uitvoert.

    ($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. Stel het toegangsbeleid voor de sleutelkluis in, zodat de beheerde identiteit van de Service Bus-naamruimte toegang heeft tot de sleutelwaarde in de sleutelkluis. Gebruik de id van de Service Bus-naamruimte uit de vorige sectie.

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

Gegevens versleutelen in Service Bus-naamruimte met door de klant beheerde sleutel uit de sleutelkluis

U hebt de volgende stappen tot nu toe uitgevoerd:

  1. Er is een Premium-naamruimte gemaakt met een beheerde identiteit.
  2. Maak een sleutelkluis en verleent de beheerde identiteit toegang tot de sleutelkluis.

In deze stap werkt u de Service Bus-naamruimte bij met sleutelkluisgegevens.

  1. Maak een JSON-bestand met de naam UpdateServiceBusNamespaceWithEncryption.json met de volgende inhoud:

    {
       "$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. Maak een sjabloonparameterbestand: UpdateServiceBusNamespaceWithEncryptionParams.json.

    Notitie

    Vervang de volgende waarden:

    • <ServiceBusNamespaceName> - Naam van uw Service Bus-naamruimte
    • <Location> - Locatie van uw Service Bus-naamruimte
    • <KeyVaultName> - Naam van uw sleutelkluis
    • <KeyName> - Naam van de sleutel in de sleutelkluis
    {
       "$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. Voer de volgende PowerShell-opdracht uit om de Resource Manager-sjabloon te implementeren. Vervang {MyRG} door de naam van de resourcegroep voordat u de opdracht uitvoert.

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

Versleutelen met door de gebruiker toegewezen identiteiten (sjabloon)

  1. Maak een door de gebruiker toegewezen identiteit.
  2. Maak een sleutelkluis en verwijs toegang tot de door de gebruiker toegewezen identiteit via toegangsbeleid.
  3. Maak een Premium Service Bus-naamruimte met de beheerde gebruikersidentiteit en de sleutelkluisgegevens.

Een door de gebruiker toegewezen identiteit maken

Volg de instructies in het artikel Een door de gebruiker toegewezen beheerde identiteit maken om een door de gebruiker toegewezen identiteit te maken. U kunt ook een door de gebruiker toegewezen identiteit maken met behulp van CLI, PowerShell, Azure Resource Manager-sjabloon en REST.

Notitie

U kunt maximaal 4 gebruikersidentiteiten toewijzen aan een naamruimte. Deze koppelingen worden verwijderd wanneer de naamruimte wordt verwijderd of wanneer u de identity -> type sjabloon doorgeeft aan None.

Een sleutelkluis maken en toegang verlenen tot door de gebruiker toegewezen identiteit

  1. Voer de volgende opdracht uit om een sleutelkluis te maken met opschoningsbeveiliging en voorlopig verwijderen ingeschakeld.

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

    (OF)

    Voer de volgende opdracht uit om een bestaande sleutelkluis bij te werken. Geef waarden op voor resourcegroep- en sleutelkluisnamen voordat u de opdracht uitvoert.

    ($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. Haal de service-principal-id voor de gebruikersidentiteit op met behulp van de volgende PowerShell-opdracht. In het voorbeeld ud1 moet de door de gebruiker toegewezen identiteit worden gebruikt voor versleuteling.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  3. Verwijs de door de gebruiker toegewezen identiteit toegang tot de sleutelkluis door een toegangsbeleid toe te wijzen.

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

    Notitie

    U kunt maximaal 3 sleutels toevoegen, maar de gebruikersidentiteit die wordt gebruikt voor versleuteling moet hetzelfde zijn voor alle sleutels. Op dit moment wordt slechts één versleutelingsidentiteit ondersteund.

Een Premium Service Bus-naamruimte maken met gebruikersidentiteit en sleutelkluisgegevens

In deze sectie ziet u een voorbeeld van hoe u de volgende taken kunt uitvoeren met behulp van een Azure Resource Manager-sjabloon.

  • Wijs een door de gebruiker beheerde identiteit toe aan een Service Bus-naamruimte.

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  • Schakel versleuteling in voor de naamruimte door een sleutel op te geven uit uw sleutelkluis en de door de gebruiker beheerde identiteit voor toegang tot de sleutel.

                    "encryption":{
                       "keySource":"Microsoft.KeyVault",
                       "keyVaultProperties":[
                            {
                                "keyName": "[parameters('keyName')]",
                                "keyVaultUri": "[parameters('keyVaultUri')]",
                                "identity": {
                                    "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                                }
                            }
                       ]
                    }
    
  1. Maak een JSON-bestand met de naam CreateServiceBusNamespaceWithUserIdentityAndEncryption.json met de volgende inhoud:

    {
       "$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. Maak een sjabloonparameterbestand: 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>"
            }
         }
       }
    }
    

    Vervang in het parameterbestand tijdelijke aanduidingen door de juiste waarden.

    Tijdelijke aanduiding waarde
    <ServiceBusNamespaceName> Naam van de Service Bus-naamruimte.
    <Location> Locatie waar u de naamruimte wilt maken.
    <KeyVaultName> Naam van de sleutelkluis.
    <KeyName> Naam van de sleutel in de sleutelkluis.
    <AZURE SUBSCRIPTION ID> Uw Azure-abonnements-id.
    <RESOURCE GROUP NAME> Resourcegroep van de door de gebruiker beheerde identiteit.
    <USER MANAGED IDENTITY NAME> Naam van de door de gebruiker beheerde identiteit.
  3. Voer de volgende PowerShell-opdracht uit om de Resource Manager-sjabloon te implementeren. Vervang {MyRG} door de naam van de resourcegroep voordat u de opdracht uitvoert.

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

Zowel door de gebruiker toegewezen als door het systeem toegewezen identiteiten gebruiken

Een naamruimte kan zowel door het systeem toegewezen als door de gebruiker toegewezen identiteiten tegelijk hebben. In dit geval is SystemAssignedde type eigenschap, UserAssigned zoals wordt weergegeven in het volgende voorbeeld.

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

In dit scenario kunt u de door het systeem toegewezen identiteit of de door de gebruiker toegewezen identiteit kiezen voor het versleutelen van de data-at-rest.

Als u in de Resource Manager-sjabloon geen kenmerk opgeeft identity , wordt de door het systeem beheerde identiteit gebruikt. Hier volgt een voorbeeldfragment.

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

Zie het volgende voorbeeld voor het gebruik van de door de gebruiker beheerde identiteit voor de versleuteling. U ziet dat het identity kenmerk is ingesteld op de door de gebruiker beheerde identiteit.

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

Infrastructuurversleuteling (dubbele) versleuteling van gegevens inschakelen

Als u een hoger zekerheidsniveau nodig hebt dat uw gegevens veilig zijn, kunt u versleuteling op infrastructuurniveau inschakelen. Dit wordt ook wel dubbele versleuteling genoemd.

Wanneer infrastructuurversleuteling is ingeschakeld, worden gegevens in Azure Service Bus tweemaal versleuteld, eenmaal op serviceniveau en eenmaal op infrastructuurniveau, met behulp van twee verschillende versleutelingsalgoritmen en twee verschillende sleutels. Infrastructuurversleuteling van Azure Service Bus-gegevens beschermt daarom tegen een scenario waarin een van de versleutelingsalgoritmen of sleutels mogelijk wordt aangetast.

U kunt infrastructuurversleuteling inschakelen door de Azure Resource Manager-sjabloon met requireInfrastructureEncryption eigenschap bij te werken in de bovenstaande UpdateServiceBusNamespaceWithEncryption.json , zoals hieronder wordt weergegeven.

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

Sleutels draaien, intrekken en cachen

Uw versleutelingssleutels draaien

U kunt uw sleutel in de sleutelkluis roteren met behulp van het rotatiemechanisme van Azure Key Vaults. Activerings- en vervaldatums kunnen ook worden ingesteld om sleutelrotatie te automatiseren. De Service Bus-service detecteert nieuwe sleutelversies en begint deze automatisch te gebruiken.

Toegang tot sleutels intrekken

Als u de toegang tot de versleutelingssleutels inroept, worden de gegevens niet verwijderd uit Service Bus. De gegevens kunnen echter niet worden geopend vanuit de Service Bus-naamruimte. U kunt de versleutelingssleutel intrekken via toegangsbeleid of door de sleutel te verwijderen. Meer informatie over toegangsbeleid en het beveiligen van uw sleutelkluis vanuit Beveiligde toegang tot een sleutelkluis.

Zodra de versleutelingssleutel is ingetrokken, wordt de Service Bus-service op de versleutelde naamruimte onbruikbaar. Als de toegang tot de sleutel is ingeschakeld of de verwijderde sleutel wordt hersteld, kiest de Service Bus-service de sleutel zodat u toegang hebt tot de gegevens uit de versleutelde Service Bus-naamruimte.

Cache van sleutels

De Service Bus-instantie peilt elke 5 minuten de vermelde versleutelingssleutels. De cache slaat deze op en gebruikt deze tot de volgende poll, die na 5 minuten valt. Zolang er ten minste één sleutel beschikbaar is, zijn wachtrijen en onderwerpen toegankelijk. Als alle vermelde sleutels niet toegankelijk zijn wanneer er polls worden uitgevoerd, zijn alle wachtrijen en onderwerpen niet beschikbaar.

Hier vindt u meer informatie:

  • Elke 5 minuten peilt de Service Bus-service alle door de klant beheerde sleutels die worden vermeld in de record van de naamruimte:
    • Als een sleutel is geroteerd, wordt de record bijgewerkt met de nieuwe sleutel.
    • Als een sleutel is ingetrokken, wordt de sleutel uit de record verwijderd.
    • Als alle sleutels zijn ingetrokken, wordt de versleutelingsstatus van de naamruimte ingesteld op Ingetrokken. De gegevens kunnen niet worden geopend vanuit de Service Bus-naamruimte.

Overwegingen bij het gebruik van geo-noodherstel

Herstel na noodgevallen - versleuteling met door het systeem toegewezen identiteiten

Om versleuteling van door Microsoft beheerde sleutel met een door de klant beheerde sleutel in te schakelen, wordt een toegangsbeleid ingesteld voor een door het systeem toegewezen beheerde identiteit in de opgegeven Azure KeyVault. Deze stap zorgt voor gecontroleerde toegang tot Azure KeyVault vanuit de Azure Service Bus-naamruimte. Daarom moet u deze stappen uitvoeren:

  • Als geo-herstel na noodgevallen al is ingeschakeld voor de Service Bus-naamruimte en u de door de klant beheerde sleutel wilt inschakelen, dan
    • De koppeling verbreken.
    • Stel het toegangsbeleid in voor de door het systeem toegewezen beheerde identiteit voor zowel de primaire als de secundaire naamruimten voor de sleutelkluis.
    • Versleuteling instellen voor de primaire naamruimte.
    • Koppel de primaire en secundaire naamruimten opnieuw.
  • Als u Geo-DR wilt inschakelen in een Service Bus-naamruimte waar de door de klant beheerde sleutel al is ingesteld, voert u de volgende stappen uit:
    • Stel het toegangsbeleid in voor de beheerde identiteit voor de secundaire naamruimte naar de sleutelkluis.
    • Koppel de primaire en secundaire naamruimten.

Herstel na noodgevallen - versleuteling met door de gebruiker toegewezen identiteiten

Hier volgen enkele aanbevelingen:

  1. Maak een beheerde identiteit en wijs Key Vault-machtigingen toe aan uw beheerde identiteit.
  2. Voeg de identiteit toe als een door de gebruiker toegewezen identiteit en schakel versleuteling in met de identiteit in beide naamruimten.
  3. Naamruimten aan elkaar koppelen

Voorwaarden voor het inschakelen van Geo-DR en versleuteling met door de gebruiker toegewezen identiteiten:

  1. Secundaire naamruimte moet versleuteling al hebben ingeschakeld met een door de gebruiker toegewezen identiteit als deze moet worden gekoppeld aan een primaire naamruimte waarvoor Versleuteling is ingeschakeld.
  2. Het is niet mogelijk om versleuteling in te schakelen op een al gekoppelde primaire, zelfs als de secundaire een door de gebruiker toegewezen identiteit heeft die is gekoppeld aan de naamruimte.

Problemen oplossen

Symptoom

Er wordt een foutbericht weergegeven waarin wordt aangegeven dat de Service Bus-naamruimte is uitgeschakeld omdat de versleutelingssleutel niet meer geldig is.

Oorzaak

Mogelijk gebruikt u de resource_id of version, die koppelingen naar een specifieke versie van de sleutel, die mogelijk is verlopen. Als er een specifieke versie wordt opgegeven, gebruikt Service Bus die versie van de sleutel, zelfs als de sleutel wordt gedraaid.

Oplossing

Gebruik de resource__versionless_id of versionless_id in plaats van het te gebruiken resource_id of version.

Volgende stappen

Zie de volgende artikelen: