Azure Managed Application maken waarmee opslagaccount wordt geïmplementeerd dat is versleuteld met door de klant beheerde sleutel

In dit artikel wordt beschreven hoe u een door Azure beheerde toepassing maakt waarmee een opslagaccount wordt geïmplementeerd dat is versleuteld met behulp van een door de klant beheerde sleutel. Opslagaccount, Cosmos DB en Azure Database for Postgres ondersteunen data-at-rest gegevensversleuteling met behulp van door de klant beheerde sleutels of door Microsoft beheerde sleutels. U kunt uw eigen versleutelingssleutel gebruiken om de gegevens in uw opslagaccount te beveiligen. Wanneer u een door klant beheerde sleutel opgeeft, wordt die sleutel gebruikt voor het beveiligen en beheren van de toegang tot de sleutel waarmee uw gegevens worden versleuteld. Door de klant beheerde sleutels bieden meer flexibiliteit om toegangsbeheer te beheren.

Vereisten

Beheerde identiteiten

Voor het configureren van een door de klant beheerde sleutel voor een opslagaccount dat door de beheerde toepassing als een resource in de beheerde resourcegroep is geïmplementeerd, is een door de gebruiker toegewezen beheerde identiteit vereist. Deze door de gebruiker toegewezen beheerde identiteit kan worden gebruikt om de beheerde toepassing toegang te verlenen tot andere bestaande resources. Als u wilt weten hoe u uw beheerde toepassing configureert met een door de gebruiker toegewezen beheerde identiteit, gaat u naar azure Managed Application met een beheerde identiteit.

Aan uw toepassing kunnen twee typen identiteiten worden toegekend:

  • Een door het systeem toegewezen beheerde identiteit wordt toegewezen aan uw toepassing en wordt verwijderd als uw app wordt verwijderd. Een app kan slechts één door het systeem toegewezen beheerde identiteit hebben.
  • Een door de gebruiker toegewezen beheerde identiteit is een zelfstandige Azure-resource die kan worden toegewezen aan uw app. Een app kan meerdere door de gebruiker toegewezen beheerde identiteiten hebben.

Als u een opslagaccount wilt implementeren in de beheerde resourcegroep van uw beheerde toepassing die is versleuteld met klantsleutels uit bestaande sleutelkluis, is er meer configuratie vereist. De beheerde identiteit die is geconfigureerd met uw beheerde toepassing, heeft het ingebouwde op rollen gebaseerde toegangsbeheer van Azure nodig voor beheerde identiteiten via de beheerde identiteit die toegang heeft tot de sleutelkluis. Ga naar de rol Managed Identity Operator voor meer informatie.

Een sleutelkluis maken met beveiliging tegen opschonen

  1. Meld u aan bij de Azure-portal.
  2. Selecteer een resource maken in het menu van Azure Portal of op de startpagina.
  3. Typ Sleutelkluis in het zoekvak.
  4. Selecteer Key Vault in de lijst met resultaten.
  5. Selecteer Maken in de sectie Key Vault.
  6. Geef in de sectie Sleutelkluis maken de volgende informatie op:
    • Abonnement: selecteer uw abonnement.
    • Resourcegroep: Selecteer Nieuwe maken en voer een naam in, zoals demo-cmek-rg.
    • Naam: Er is een unieke naam vereist, zoals demo-keyvault-cmek.
    • Regio: Selecteer een locatie zoals VS - oost.
    • Prijscategorie: Selecteer Standard in de vervolgkeuzelijst.
    • Beveiliging tegen opschonen: selecteer Beveiliging tegen opschonen inschakelen.
  7. Selecteer Volgende en ga naar het tabblad Toegangsbeleid .
    • Toegangsconfiguratie: Selecteer op rollen gebaseerd toegangsbeheer van Azure.
    • Accepteer de standaardwaarden voor alle andere opties.
  8. Selecteer Controleren + maken.
  9. Controleer of de instellingen juist zijn en selecteer Maken.

Nadat de implementatie is geslaagd, selecteert u Ga naar de resource. Noteer op het tabblad Overzicht de volgende eigenschappen:

  • Kluisnaam: In het voorbeeld is de naam van de kluis demo-keyvault-cmek. U gebruikt deze naam voor andere stappen.
  • Kluis-URI: In het voorbeeld is https://demo-keyvault-cmek.vault.azure.net/de kluis-URI.

Een door de gebruiker toegewezen beheerde identiteit maken

Als u een door de gebruiker toegewezen beheerde identiteit wilt maken, heeft uw account de roltoewijzing Inzender voor beheerde identiteit nodig.

  1. Voer in het zoekvak beheerde identiteiten in.
  2. Selecteer beheerde identiteiten onder Services.
  3. Selecteer Maken en voer de volgende waarden in op het tabblad Basisbeginselen :
    • Abonnement: selecteer uw abonnement.
    • Resourcegroep: Selecteer de demo-cmek-rg van de resourcegroep die u in de vorige stappen hebt gemaakt.
    • Regio: Selecteer een regio zoals VS - oost.
    • Naam: Voer de naam in voor uw door de gebruiker toegewezen beheerde identiteit, zoals demokeyvaultmi.
  4. Selecteer Controleren + maken.
  5. Nadat validatie is geslaagd , selecteert u Maken.

Na een geslaagde implementatie selecteert u Ga naar de resource.

Maak roltoewijzingen

U moet twee roltoewijzingen maken voor uw sleutelkluis. Zie Azure-rollen toewijzen met behulp van Azure Portal voor meer informatie.

Sleutelmachtigingen verlenen aan de beheerde identiteit

Maak een roltoewijzing voor de door de sleutelkluis beheerde identiteit demokeyvaultmi om sleutels in te pakken en uit te pakken.

  1. Ga naar de demo-cmek-keyvault van uw sleutelkluis.
  2. Klik op Toegangsbeheer (IAM) .
  3. Selecteer Toevoegen>Roltoewijzing toevoegen.
  4. Wijs de volgende rol toe:
    • Rol: Key Vault Crypto Service Encryption User
    • Toegang toewijzen aan: Beheerde identiteit
    • Lid: demokeyvaultmi
  5. Selecteer Controleren en toewijzen om uw instellingen weer te geven.
  6. Selecteer Beoordelen en toewijzen om de roltoewijzing te maken.

Een roltoewijzing maken voor uw account

Maak een andere roltoewijzing zodat uw account een nieuwe sleutel in uw sleutelkluis kan maken.

  1. Wijs de volgende rol toe:
    • Rol: Key Vault Crypto Officer
    • Toegang toewijzen aan: Gebruiker, groep of service-principal
    • Lid: Uw Microsoft Entra-account
  2. Selecteer Controleren en toewijzen om uw instellingen weer te geven.
  3. Selecteer Beoordelen en toewijzen om de roltoewijzing te maken.

U kunt de roltoewijzingen van de sleutelkluis controleren in roltoewijzingen voor toegangsbeheer (IAM).>

Een sleutel maken

U moet een sleutel maken die door uw sleutelkluis wordt gebruikt om een opslagaccount te versleutelen.

  1. Ga naar uw sleutelkluis, demo-cmek-keyvault.
  2. Selecteer Sleutels.
  3. Selecteer Genereren/Importeren.
  4. Selecteer op de pagina Een sleutel maken de volgende waarden:
    • Opties: Genereren
    • Naam: demo-cmek-key
  5. Accepteer de standaardwaarden voor de andere opties.
  6. Selecteer Maken.

Noteer de sleutelnaam. U gebruikt deze wanneer u de beheerde toepassing implementeert.

Een door de gebruiker toegewezen beheerde identiteit maken voor de beheerde toepassing

Maak een door de gebruiker toegewezen beheerde identiteit die moet worden gebruikt als de beheerde identiteit voor de beheerde toepassing.

  1. Voer in het zoekvak Beheerde identiteiten in.
  2. Selecteer beheerde identiteiten onder Services.
  3. Selecteer Maken.
    • Abonnement: selecteer uw abonnement.
    • Resourcegroep: Selecteer de demo-cmek-rg van de resourcegroep.
    • Regio: Selecteer een regio zoals VS - oost.
    • Naam: Voer de naam in voor uw door de gebruiker toegewezen beheerde identiteit, zoals demomanagedappmi.
  4. Selecteer Controleren + maken.
  5. Nadat validatie is geslaagd , selecteert u Maken.

Na een geslaagde implementatie selecteert u Ga naar de resource.

Rolmachtiging toewijzen aan beheerde identiteit

Wijs de rol Managed Identity Operator toe aan de beheerde identiteit op het bereik van de door de gebruiker toegewezen beheerde identiteit met de naam demokeyvaultmi.

  1. Ga naar de door de gebruiker toegewezen beheerde identiteit met de naam demokeyvaultmi.
  2. Klik op Toegangsbeheer (IAM) .
  3. Selecteer Toevoegen>Roltoewijzing toevoegen om het deelvenster Roltoewijzing toevoegen te openen.
  4. Wijs de volgende rol toe.
    • Rol: Operator voor beheerde identiteit
    • Toegang toewijzen aan: Beheerde identiteit
    • Lid: demomanagedappmi
  5. Selecteer Controleren en toewijzen om uw instellingen weer te geven.
  6. Selecteer Beoordelen en toewijzen om de roltoewijzing te maken.

U kunt de roltoewijzing voor demokeyvaultmi controleren in roltoewijzingen voor toegangsbeheer (IAM).>

Voorbeeldsjabloon voor beheerde toepassing

Maak een beheerde toepassing waarmee een opslagaccount in een beheerde resourcegroep wordt geïmplementeerd en een vooraf bestaande sleutelkluissleutel wordt gebruikt om de gegevens in het opslagaccount te versleutelen.

Voer de volgende taken uit om een beheerde toepassing te publiceren in uw servicecatalogus:

  1. Maak het bestand creatUIDefinition.json uit het voorbeeld in dit artikel. De sjabloon definieert de gebruikersinterface-elementen van de portal bij het implementeren van de beheerde toepassing.
  2. Maak een Azure Resource Manager-sjabloon met de naam mainTemplate.json door het Bicep-bestand in dit artikel te converteren naar JSON. De sjabloon definieert de resources die moeten worden geïmplementeerd met de beheerde toepassing.
  3. Maak een ZIP-pakket met de vereiste JSON-bestanden: createUiDefinition.json en mainTemplate.json.
  4. Publiceer de definitie van de beheerde toepassing zodat deze beschikbaar is in uw servicecatalogus. Ga voor meer informatie naar quickstart: Een definitie van een beheerde Azure-toepassing maken en publiceren.

Sjabloon createUiDefinition.json maken

Met de volgende sjabloon maakt u een door de gebruiker toegewezen beheerde identiteit voor de beheerde toepassing. In dit voorbeeld schakelen we de door het systeem toegewezen beheerde identiteit uit, omdat we onze door de gebruiker toegewezen beheerde identiteit vooraf moeten configureren met de machtigingen van managed Identity Operator voor de beheerde identiteit van de sleutelkluis.

  1. Maak een nieuw bestand in Visual Studio Code met de naam creatUIDefinition.json.
  2. Kopieer en plak de volgende code in het bestand.
  3. Sla het bestand op.
{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [],
    "steps": [
      {
        "name": "managedApplicationSetting",
        "label": "Application Settings",
        "subLabel": {
          "preValidation": "Configure your application settings and Managed Identity for the application",
          "postValidation": "Done"
        },
        "bladeTitle": "Application Settings - Config",
        "elements": [
          {
            "name": "appIdentity",
            "type": "Microsoft.ManagedIdentity.IdentitySelector",
            "label": "Managed Identity Configuration for the Application (Needs Managed Identity Operator permissions over KV Managed Identity).",
            "toolTip": {
              "systemAssignedIdentity": "Enable system assigned identity to grant the managed application access to additional existing resources.",
              "userAssignedIdentity": "Add user assigned identities to grant the managed application access to additional existing resources."
            },
            "defaultValue": {
              "systemAssignedIdentity": "Off"
            },
            "options": {
              "hideSystemAssignedIdentity": true,
              "hideUserAssignedIdentity": false,
              "readOnlySystemAssignedIdentity": true
            },
            "visible": true
          }
        ]
      },
      {
        "name": "configuration",
        "type": "Microsoft.Common.Section",
        "label": "Configuration",
        "elements": [
          {
            "name": "cmek",
            "type": "Microsoft.Common.Section",
            "label": "Customer Managed Encryption Key (CMEK)",
            "elements": [
              {
                "name": "cmekEnable",
                "type": "Microsoft.Common.CheckBox",
                "label": "Enable CMEK",
                "toolTip": "Enable to provide a CMEK",
                "constraints": {
                  "required": false
                }
              },
              {
                "name": "cmekKeyVaultUrl",
                "type": "Microsoft.Common.TextBox",
                "label": "Key Vault URL",
                "toolTip": "Specify the CMEK Key Vault URL",
                "defaultValue": "",
                "constraints": {
                  "required": "[steps('configuration').cmek.cmekEnable]",
                  "regex": ".*",
                  "validationMessage": "The value must not be empty."
                },
                "visible": "[steps('configuration').cmek.cmekEnable]"
              },
              {
                "name": "cmekKeyName",
                "type": "Microsoft.Common.TextBox",
                "label": "Key Name",
                "toolTip": "Specify the key name from your key vault.",
                "defaultValue": "",
                "constraints": {
                  "required": "[steps('configuration').cmek.cmekEnable]",
                  "regex": ".*",
                  "validationMessage": "The value must not be empty."
                },
                "visible": "[steps('configuration').cmek.cmekEnable]"
              },
              {
                "name": "cmekKeyIdentity",
                "type": "Microsoft.ManagedIdentity.IdentitySelector",
                "label": "Managed Identity Configuration for Key Vault Access",
                "toolTip": {
                  "systemAssignedIdentity": "Enable system assigned identity to grant the managed application access to additional existing resources.",
                  "userAssignedIdentity": "Add user assigned identities to grant the managed application access to additional existing resources."
                },
                "defaultValue": {
                  "systemAssignedIdentity": "Off"
                },
                "options": {
                  "hideSystemAssignedIdentity": true,
                  "hideUserAssignedIdentity": false,
                  "readOnlySystemAssignedIdentity": true
                },
                "visible": "[steps('configuration').cmek.cmekEnable]"
              }
            ],
            "visible": true
          }
        ]
      }
    ],
    "outputs": {
      "location": "[location()]",
      "managedIdentity": "[steps('managedApplicationSetting').appIdentity]",
      "cmekConfig": {
        "kvUrl": "[if(empty(steps('configuration').cmek.cmekKeyVaultUrl), '', steps('configuration').cmek.cmekKeyVaultUrl)]",
        "keyName": "[if(empty(steps('configuration').cmek.cmekKeyName), '', steps('configuration').cmek.cmekKeyName)]",
        "identityId": "[if(empty(steps('configuration').cmek.cmekKeyIdentity), '', steps('configuration').cmek.cmekKeyIdentity)]"
      }
    }
  }
}

Sjabloon mainTemplate.json maken

Het volgende Bicep-bestand is de broncode voor uw mainTemplate.json. De sjabloon maakt gebruik van de door de gebruiker toegewezen beheerde identiteit die is gedefinieerd in het bestand createUiDefinition.json .

  1. Maak een nieuw bestand in Visual Studio Code met de naam mainTemplate.bicep.
  2. Kopieer en plak de volgende code in het bestand.
  3. Sla het bestand op.
param cmekConfig object = {
  kvUrl: ''
  keyName: ''
  identityId: {}
}
@description('Specify the Azure region to place the application definition.')
param location string = resourceGroup().location
/////////////////////////////////
// Common Resources Configuration
/////////////////////////////////
var commonproperties = {
  name: 'cmekdemo'
  displayName: 'Common Resources'
  storage: {
    sku: 'Standard_LRS'
    kind: 'StorageV2'
    accessTier: 'Hot'
    minimumTlsVersion: 'TLS1_2'

  }
}
var identity = items(cmekConfig.identityId.userAssignedIdentities)[0].key

resource storage 'Microsoft.Storage/storageAccounts@2022-05-01' = {
  name: '${commonproperties.name}${uniqueString(resourceGroup().id)}'
  location: location
  sku: {
    name: commonproperties.storage.sku
  }
  kind: commonproperties.storage.kind
  identity: cmekConfig.identityId
  properties: {
    accessTier: commonproperties.storage.accessTier
    minimumTlsVersion: commonproperties.storage.minimumTlsVersion
    encryption: {
      identity: {
        userAssignedIdentity: identity
      }
      services: {
        blob: {
          enabled: true
        }
        table: {
          enabled: true
        }
        file: {
          enabled: true
        }
      }
      keySource: 'Microsoft.Keyvault'
      keyvaultproperties: {
        keyname: '${cmekConfig.keyName}'
        keyvaulturi: '${cmekConfig.kvUrl}'
      }
    }
  }
}

Gebruik PowerShell of Azure CLI om het bestand mainTemplate.json te bouwen. Ga naar de map waarin u uw Bicep-bestand hebt opgeslagen en voer de build opdracht uit.

bicep build mainTemplate.bicep

Nadat het Bicep-bestand is geconverteerd naar JSON, moet het bestand mainTemplate.json overeenkomen met het volgende voorbeeld. Mogelijk hebt u verschillende waarden in de metadata eigenschappen voor version en templateHash.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.16.2.56959",
      "templateHash": "1234567891234567890"
    }
  },
  "parameters": {
    "cmekConfig": {
      "type": "object",
      "defaultValue": {
        "kvUrl": "",
        "keyName": "",
        "identityId": {}
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specify the Azure region to place the application definition."
      }
    }
  },
  "variables": {
    "commonproperties": {
      "name": "cmekdemo",
      "displayName": "Common Resources",
      "storage": {
        "sku": "Standard_LRS",
        "kind": "StorageV2",
        "accessTier": "Hot",
        "minimumTlsVersion": "TLS1_2"
      }
    },
    "identity": "[items(parameters('cmekConfig').identityId.userAssignedIdentities)[0].key]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-05-01",
      "name": "[format('{0}{1}', variables('commonproperties').name, uniqueString(resourceGroup().id))]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[variables('commonproperties').storage.sku]"
      },
      "kind": "[variables('commonproperties').storage.kind]",
      "identity": "[parameters('cmekConfig').identityId]",
      "properties": {
        "accessTier": "[variables('commonproperties').storage.accessTier]",
        "minimumTlsVersion": "[variables('commonproperties').storage.minimumTlsVersion]",
        "encryption": {
          "identity": {
            "userAssignedIdentity": "[variables('identity')]"
          },
          "services": {
            "blob": {
              "enabled": true
            },
            "table": {
              "enabled": true
            },
            "file": {
              "enabled": true
            }
          },
          "keySource": "Microsoft.Keyvault",
          "keyvaultproperties": {
            "keyname": "[format('{0}', parameters('cmekConfig').keyName)]",
            "keyvaulturi": "[format('{0}', parameters('cmekConfig').kvUrl)]"
          }
        }
      }
    }
  ]
}

De beheerde toepassing implementeren

Nadat de definitie van de servicecatalogus is gemaakt, kunt u de beheerde toepassing implementeren. Ga naar Quickstart: Een beheerde toepassing voor een servicecatalogus implementeren voor meer informatie.

Tijdens de implementatie gebruikt u de door de gebruiker toegewezen beheerde identiteiten, de naam van de sleutelkluis, de URL van de sleutelkluis, de sleutelnaam van de sleutelkluis. Het bestand createUiDefinition.json maakt de use-interface.

In een portalimplementatie voegt u bijvoorbeeld op het tabblad Toepassing Instellingen de demomanagedappmi toe.

Screenshot of the Application Settings tab to add a user-assigned managed identity.

Op het tabblad Configuratie schakelt u de door de klant beheerde sleutel in en voegt u de door de gebruiker toegewezen beheerde identiteit toe voor de sleutelkluis, demokeyvaultmi. U geeft ook de URL van de sleutelkluis en de sleutelnaam van de sleutelkluis op die u hebt gemaakt.

Screenshot of the Configuration to enable the customer-managed key, add key vault URL and key name, and add a user-assigned managed identity.

De implementatie controleren

Nadat de implementatie is voltooid, kunt u de identiteitstoewijzing van de beheerde toepassing controleren. De door de gebruiker toegewezen beheerde identiteit demomanagedappmi wordt toegewezen aan de beheerde toepassing.

  1. Ga naar de resourcegroep waar u de beheerde toepassing hebt geïmplementeerd.
  2. Selecteer onder Instellingen> Identity De gebruiker toegewezen (preview).

U kunt ook controleren of het opslagaccount dat door de beheerde toepassing is geïmplementeerd. Op het tabblad Versleuteling ziet u de sleuteldemo-cmek-sleutel en de resource-id voor de door de gebruiker toegewezen beheerde identiteit.

  1. Ga naar de beheerde resourcegroep waarin het opslagaccount van de beheerde toepassing is geïmplementeerd.
  2. Selecteer Versleuteling onder Beveiliging en netwerken.

Volgende stappen