Delen via


Zelfstudie: Een Key Vault-sleutel gebruiken om gegevens te versleutelen in een Media Services-account

Media Services-logo v3


Waarschuwing

Azure Media Services wordt op 30 juni 2024 buiten gebruik gesteld. Zie de AMS Retirement Guidevoor meer informatie.

Notitie

Beheerde identiteiten zijn alleen beschikbaar voor Media Services-accounts die zijn gemaakt met behulp van de v3-API. Als u de v2-API gebruikt en beheerde identiteiten wilt gebruiken, migreert u van v2 naar v3 Migreren van Media Services v2 naar v3 inleiding.

Als u wilt dat Media Services gegevens versleutelt met behulp van een sleutel uit uw Sleutelkluis, moet het Media Services-account worden verleend toegang tot de Key Vault. Volg de onderstaande stappen om een beheerde identiteit voor het Media Services-account te maken en deze identiteit toegang te verlenen tot uw Key Vault met behulp van de Media Services CLI.

Media Services-account maakt gebruik van Key Vault met een beheerde identiteit

In deze zelfstudie wordt de Media Services-API 2020-05-01 gebruikt.

Aanmelden bij Azure

Als u een van de opdrachten in dit artikel wilt gebruiken, moet u eerst zijn aangemeld bij het abonnement dat u wilt gebruiken.

Meld u aan bij Azure. Wanneer u deze opdracht gebruikt, wordt u gevraagd om het abonnement dat u wilt gebruiken.

az login

Abonnement instellen

Gebruik deze opdracht om het abonnement in te stellen waarmee u wilt werken.

Het Azure-abonnement instellen met de CLI

Geef in de volgende opdracht de Azure-abonnements-id op die u wilt gebruiken voor het Media Services-account.

az account set --subscription <subscriptionName>

Resourcenamen

Voordat u aan de slag gaat, moet u beslissen over de namen van de resources die u gaat maken. Ze moeten gemakkelijk te herkennen zijn als een set, vooral als u niet van plan bent om ze te gebruiken nadat u klaar bent met testen. Naamgevingsregels verschillen voor veel resourcetypen, zodat u het beste aan alle kleine letters kunt houden. Bijvoorbeeld 'mediatest1rg' voor de naam van uw resourcegroep en 'mediatest1stor' voor de naam van uw opslagaccount. Gebruik dezelfde namen voor elke stap in dit artikel.

U ziet deze namen waarnaar wordt verwezen in de onderstaande opdrachten. De namen van resources die u nodig hebt, zijn:

  • myRG
  • myStorageAccount
  • myAmsAccount
  • myKeyVault
  • myKey
  • plaats

Notitie

De bovenstaande afbreekstreepjes worden alleen gebruikt om hulpwoorden te scheiden. Vanwege de inconsistentie van naamgeving van resources in Azure-services, gebruikt u geen afbreekstreepjes wanneer u uw resources een naam geeft. U maakt ook niet de regionaam. De regionaam wordt bepaald door Azure.

Azure-regio's vermelden

Als u niet zeker weet welke regionaam u daadwerkelijk wilt gebruiken, gebruikt u deze opdracht om een vermelding op te halen:

Gebruik deze opdracht om de regio's weer te geven die beschikbaar zijn voor uw account.

az account list-locations --query "[].{DisplayName:displayName, Name:name}" -o table

Volgorde

Elk van de onderstaande stappen wordt in een bepaalde volgorde uitgevoerd, omdat een of meer waarden uit de JSON-antwoorden worden gebruikt in de volgende stap in de reeks.

Een opslagaccount maken

Aan het Media Services-account dat u maakt, moet er een opslagaccount aan zijn gekoppeld. Maak eerst het opslagaccount voor het Media Services-account. U gebruikt your-storage-account-name voor de volgende stappen.

Een Azure Storage-account maken met de CLI

Gebruik de volgende opdrachten om een Azure Storage-account te maken.

Als u een opslagaccount wilt maken, moet u eerst een resourcegroep binnen een locatie maken.

Gebruik de volgende opdracht om beschikbare locaties weer te geven:

Beschikbare locaties weergeven met de CLI

Gebruik de volgende opdracht om beschikbare locaties weer te geven:

az account list-locations

Een resourcegroep maken met de CLI

Gebruik de volgende opdracht om een resourcegroep te maken:

az group create -n <resourceGroupName> --location chooseLocation

Een SKU kiezen

U moet ook een SKU voor uw opslagaccount kiezen. U kunt opslagaccounts weergeven.

Kies een SKU in de volgende lijst: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS, Standard_RAGZRS.

  • Wijzig myStorageAccount in een unieke naam met een lengte van minder dan 24 tekens.
  • Wijzig chooseLocation in de regio waar u wilt werken.
  • Wijzig chooseSKU in de SKU van uw voorkeur.
az storage account create -n <myStorageAccount> -g <resourceGroup>  --location <chooseLocation> --sku <chooseSKU>

Een Media Services-account maken met een service-principal (beheerde identiteit)

Maak nu het Media Services-account met een service-principal, ook wel een beheerde identiteit genoemd.

Belangrijk

Het is belangrijk dat u de vlag --mi in de opdracht gebruikt. Anders kunt u de principalId niet vinden voor een latere stap.

Met de volgende Azure CLI-opdracht maakt u een nieuw Media Services-account. Vervang de volgende waarden: your-media-services-account-nameyour-storage-account-nameen your-resource-group-name door de namen die u wilt gebruiken. Bij de opdracht wordt ervan uitgegaan dat u al een resourcegroep en een opslagaccount hebt gemaakt.

Het geeft het Media Services-account een door het systeem toegewezen beheerde identiteit met de vlag --mi-system-assigned.


az ams account create --name <your-media-services-account-name> --resource-group <your-resource-group-name> --mi-system-assigned --storage-account <your-storage-account-name>

Voorbeeld van JSON-antwoord:

{
  "encryption": {
    "keyVaultProperties": null,
    "type": "SystemKey"
  },
  "id": "/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/your-resource-group/providers/Microsoft.Media/mediaservices/your-media-services-account-name",
  "identity": {
    "principalId": "00000000-0000-0000-0000-00000000",
    "tenantId": "00000000-0000-0000-0000-00000000",
    "type": "SystemAssigned"
  },
  "location": "your-region",
  "mediaServiceId": "00000000-0000-0000-0000-00000000",
  "name": "your-media-services-account-name",
  "resourceGroup": "your-resource-group",
  "storageAccounts": [
    {
      "id": "/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/mediatest1rg/providers/Microsoft.Storage/storageAccounts/your-storage-account-name",
      "resourceGroup": "your-resource-group",
      "type": "Primary"
    }
  ],
  "storageAuthentication": "System",
  "systemData": {
    "createdAt": "2021-05-14T21:25:12.3492071Z",
    "createdBy": "you@example.com",
    "createdByType": "User",
    "lastModifiedAt": "2021-05-14T21:25:12.3492071Z",
    "lastModifiedBy": "you@example.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "type": "Microsoft.Media/mediaservices"
}

Een sleutelkluis maken

Maak de Sleutelkluis. Key Vault wordt gebruikt om mediagegevens te versleutelen. U gebruikt your-keyvault-name om uw sleutel te maken en voor latere stappen.

Gebruik de volgende opdrachten om een sleutelkluis en sleutel te maken. Wijzig your-resource-group-name, your-keyvault-name en your-key-name in de waarden die u wilt gebruiken. Bij de opdracht wordt ervan uitgegaan dat u al een resourcegroep hebt gemaakt.

Notitie

Met de --bypass AzureServices kan Media Services (en andere Azure-services) toegang krijgen tot de Key Vault wanneer die toegang normaal gesproken wordt geblokkeerd door de Key Vault-netwerk-ACL's De --enable-purge-protection Als deze niet is ingesteld, kunt u uw sleutel niet gebruiken.

De sleutelkluis maken


az keyvault create --resource-group <your-resource-group-name> --bypass AzureServices --enable-purge-protection --name <your-keyvault-name>

Voorbeeld van JSON-antwoord:

{
  "id": "/subscriptions/the-subscription-id/resourceGroups/your-resource-group-name/providers/Microsoft.KeyVault/vaults/your-keyvault-name",
  "location": "your-region",
  "name": "your-keyvault-name",
  "properties": {
    "accessPolicies": [
      {
        "applicationId": null,
        "objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "permissions": {
          "certificates": [
            "get",
            "list",
            "delete",
            "create",
            "import",
            "update",
            "managecontacts",
            "getissuers",
            "listissuers",
            "setissuers",
            "deleteissuers",
            "manageissuers",
            "recover"
          ],
          "keys": [
            "get",
            "create",
            "delete",
            "list",
            "update",
            "import",
            "backup",
            "restore",
            "recover"
          ],
          "secrets": [
            "get",
            "list",
            "set",
            "delete",
            "backup",
            "restore",
            "recover"
          ],
          "storage": [
            "get",
            "list",
            "delete",
            "set",
            "update",
            "regeneratekey",
            "setsas",
            "listsas",
            "getsas",
            "deletesas"
          ]
        },
        "tenantId": "the-tenant-id"
      }
    ],
    "createMode": null,
    "enablePurgeProtection": true,
    "enableRbacAuthorization": null,
    "enableSoftDelete": true,
    "enabledForDeployment": false,
    "enabledForDiskEncryption": null,
    "enabledForTemplateDeployment": null,
    "networkAcls": null,
    "privateEndpointConnections": null,
    "provisioningState": "Succeeded",
    "sku": {
      "name": "standard"
    },
    "softDeleteRetentionInDays": 90,
    "tenantId": "the-tenant-id",
    "vaultUri": "https://your-keyvault-name.vault.azure.net/"
  },
  "resourceGroup": "your-resource-group-name",
  "tags": {},
  "type": "Microsoft.KeyVault/vaults"
}

De sleutel maken

az keyvault key create --kty RSA --name your-key-name --vault-name your-keyvault-name

Voorbeeld van JSON-antwoord:


{
  "attributes": {
    "created": "2021-05-12T22:41:29+00:00",
    "enabled": true,
    "expires": null,
    "notBefore": null,
    "recoveryLevel": "Recoverable",
    "updated": "2021-05-12T22:41:29+00:00"
  },
  "key": {
    "crv": null,
    "d": null,
    "dp": null,
    "dq": null,
    "e": "AQAB",
    "k": null,
    "keyOps": [
      "encrypt",
      "decrypt",
      "sign",
      "verify",
      "wrapKey",
      "unwrapKey"
    ],
    "kid": "https://your-keyvault-name.vault.azure.net/keys/your-key-name/your-subsription-id",
    "kty": "RSA",
    "n": "THISISTHEKEY51V9thvU7KsBUo/q1mEOcuxqt0qUcnx0IRO9YCL32fPjD/nnS8hKS5qkgUKfe2NRAtzVQ+elQAha65l7OsHu+TXmH/n/RPCgstpqSdCfiUR1JTmFYFRWdxCPwoKJMYaqlCEhn2Dkon3StTN0Id0sjRSA/YOLjgWU7YnVbntg5/048HgcTKn3PCWCuJc+P8hI/8Os5EAIpun62PffYwPX0/NIA1PY8wIB+sYEY0zxVGwWrCu7VgCo9xeqbMQEq5OenYmYpc+cjLozU/ohGhfWTpQU8d7fFypTHQraENDOFKEY",
    "p": null,
    "q": null,
    "qi": null,
    "t": null,
    "x": null,
    "y": null
  },
  "managed": null,
  "tags": null
}

Het Door het Media Services-systeem toegewezen beheerde identiteit toegang verlenen tot de Key Vault

Ververleent de beheerde identiteit van Media Services toegang tot de Key Vault. Er zijn twee opdrachten:

De beheerde identiteit van het Media Services-account ophalen (weergeven)

Met de eerste opdracht hieronder ziet u de beheerde identiteit van het Media Services-account. Dit is de principalId die worden vermeld in de JSON die door de opdracht wordt geretourneerd.

Met deze opdracht worden alle eigenschappen van een Media Services-account weergegeven.

az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group>

Notitie

Als u toegangsrollen hebt toegewezen aan het Media Services-account, retourneert deze regel "storageAuthentication": "ManagedIdentity".

Voorbeeld van JSON-antwoord:

{
  "encryption": {
    "keyVaultProperties": null,
    "type": "SystemKey"
  },
  "id": "/subscriptions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/resourceGroups/your-resource-group-name/providers/Microsoft.Media/mediaservices/your-media-services-account",
  "identity": {
    "principalId": "ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0",
    "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "type": "SystemAssigned"  //Type will show "Managed Identity" if you have assigned a role to the Media Services account.
  },
  "location": "your-region",
  "mediaServiceId": "00000000-0000-0000-0000-000000000000",
  "name": "your-media-services-account",
  "resourceGroup": "your-resource-group-name",
  "storageAccounts": [
    {
      "id": "/subscriptions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/resourceGroups/your-resource-group-name/providers/Microsoft.Storage/storageAccounts/your-storage-account-name",
      "resourceGroup": "your-resource-group-name",
      "type": "Primary"
    }
  ],
  "storageAuthentication": "System", //If you have assigned access roles to the account, this line will return storageAuthentication": "ManagedIdentity"
  "systemData": {
    "createdAt": "2021-05-14T21:25:12.3492071Z",
    "createdBy": "you@example.com",
    "createdByType": "User",
    "lastModifiedAt": "2021-05-14T21:25:12.3492071Z",
    "lastModifiedBy": "you@example.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "type": "Microsoft.Media/mediaservices"
}

Het Key Vault-beleid instellen

Met de tweede opdracht verleent u de principal-id toegang tot de Sleutelkluis. Stel object-id in op de waarde van principalId die u hebt gekregen uit de vorige stap.

Als u deze opdracht wilt gebruiken, moet u de Media Services-principalId opnemen als de object-id. Als u dat nog niet hebt gedaan, gebruikt u az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group> om deze id op te halen.

az keyvault set-policy --name <your-keyvault-name> --object-id <principalId> --key-permissions decrypt encrypt get list unwrapKey wrapKey

Voorbeeld van JSON-antwoord:

{
  "id": "/subscriptions/00000000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.KeyVault/vaults/your-keyvault-name",
  "location": "your-region",
  "name": "your-keyvault-name",
  "properties": {
    "accessPolicies": [
      {
        "applicationId": null,
        "objectId": "00000000-0000-0000-000000000000",
        "permissions": {
          "certificates": [
            "get",
            "list",
            "delete",
            "create",
            "import",
            "update",
            "managecontacts",
            "getissuers",
            "listissuers",
            "setissuers",
            "deleteissuers",
            "manageissuers",
            "recover"
          ],
          "keys": [
            "get",
            "create",
            "delete",
            "list",
            "update",
            "import",
            "backup",
            "restore",
            "recover"
          ],
          "secrets": [
            "get",
            "list",
            "set",
            "delete",
            "backup",
            "restore",
            "recover"
          ],
          "storage": [
            "get",
            "list",
            "delete",
            "set",
            "update",
            "regeneratekey",
            "setsas",
            "listsas",
            "getsas",
            "deletesas"
          ]
        },
        "tenantId": "00000000-0000-0000-000000000000"
      },
      {
        "applicationId": null,
        "objectId": "00000000-0000-0000-000000000000",
        "permissions": {
          "certificates": null,
          "keys": [
            "encrypt",
            "get",
            "list",
            "wrapKey",
            "decrypt",
            "unwrapKey"
          ],
          "secrets": null,
          "storage": null
        },
        "tenantId": "00000000-0000-0000-000000000000"
      }
    ],
    "createMode": null,
    "enablePurgeProtection": true,
    "enableRbacAuthorization": null,
    "enableSoftDelete": true,
    "enabledForDeployment": false,
    "enabledForDiskEncryption": null,
    "enabledForTemplateDeployment": null,
    "networkAcls": null,
    "privateEndpointConnections": null,
    "provisioningState": "Succeeded",
    "sku": {
      "name": "standard"
    },
    "softDeleteRetentionInDays": 90,
    "tenantId": "00000000-0000-0000-000000000000",
    "vaultUri": "https://your-keyvault-name.vault.azure.net/"
  },
  "resourceGroup": "your-resource-group-name",
  "tags": {},
  "type": "Microsoft.KeyVault/vaults"
}

Media Services instellen voor het gebruik van de sleutel uit Key Vault

Stel Media Services in om de sleutel te gebruiken die u hebt gemaakt. De waarde van de eigenschap key-identifier komt uit de uitvoer toen de sleutel werd gemaakt. Deze opdracht kan mislukken vanwege de tijd die nodig is om wijzigingen in toegangsbeheer door te geven. Als dit gebeurt, probeert u het na enkele minuten opnieuw.

Als u deze opdracht wilt gebruiken, moet u al een sleutelkluis en een sleutel hebben gemaakt.

az ams account encryption set --account-name <your-media-services-account-name> --resource-group <your-resource-group> --key-type CustomerKey --key-identifier https://<your-keyvault-name>.vault.azure.net/keys/<your-key-name>

Voorbeeld van JSON-antwoord:

{
  "id": "/subscriptions/00000000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.KeyVault/vaults/your-keyvault-name",
  "location": "your-region",
  "name": "your-keyvault-name",
  "properties": {
    "accessPolicies": [
      {
        "applicationId": null,
        "objectId": "00000000-0000-0000-000000000000",
        "permissions": {
          "certificates": [
            "get",
            "list",
            "delete",
            "create",
            "import",
            "update",
            "managecontacts",
            "getissuers",
            "listissuers",
            "setissuers",
            "deleteissuers",
            "manageissuers",
            "recover"
          ],
          "keys": [
            "get",
            "create",
            "delete",
            "list",
            "update",
            "import",
            "backup",
            "restore",
            "recover"
          ],
          "secrets": [
            "get",
            "list",
            "set",
            "delete",
            "backup",
            "restore",
            "recover"
          ],
          "storage": [
            "get",
            "list",
            "delete",
            "set",
            "update",
            "regeneratekey",
            "setsas",
            "listsas",
            "getsas",
            "deletesas"
          ]
        },
        "tenantId": "the-tenant-id"
      },
      {
        "applicationId": null,
        "objectId": "the-media-services-account-id",
        "permissions": {
          "certificates": null,
          "keys": [
            "encrypt",
            "get",
            "list",
            "wrapKey",
            "decrypt",
            "unwrapKey"
          ],
          "secrets": null,
          "storage": null
        },
        "tenantId": "the-tenant-id"
      }
    ],
    "createMode": null,
    "enablePurgeProtection": true,
    "enableRbacAuthorization": null,
    "enableSoftDelete": true,
    "enabledForDeployment": false,
    "enabledForDiskEncryption": null,
    "enabledForTemplateDeployment": null,
    "networkAcls": null,
    "privateEndpointConnections": null,
    "provisioningState": "Succeeded",
    "sku": {
      "name": "standard"
    },
    "softDeleteRetentionInDays": 90,
    "tenantId": "the-tenant-id",
    "vaultUri": "https://your-keyvault-name.vault.azure.net/"
  },
  "resourceGroup": "your-resource-group-name",
  "tags": {},
  "type": "Microsoft.KeyVault/vaults"
}

Validering

Als u wilt controleren of het account is versleuteld met behulp van een door de klant beheerde sleutel, bekijkt u de eigenschappen van de accountversleuteling:

Accountversleuteling weergeven met de CLI

Zie de Naslaginformatie over Media Services CLIvoor meer informatie over deze opdracht.

De eigenschap type moet CustomerKey weergeven en de currentKeyIdentifier moet worden ingesteld op het pad van een sleutel in de sleutelkluis van de klant.

Resources opschonen

Als u niet van plan bent om de resources te gebruiken die u hebt gemaakt, verwijdert u de resourcegroep.

Een resourcegroep verwijderen met de CLI

az group delete --name <your-resource-group-name>

Hulp en ondersteuning krijgen

U kunt contact opnemen met Media Services met vragen of onze updates volgen op een van de volgende manieren: