Freigeben über


Lernprogramm: Verwenden eines Schlüsseltresorschlüssels zum Verschlüsseln von Daten in einem Media Services-Konto

Media Services-Logo v3


Warnung

Azure Media Services wird am 30. Juni 2024 eingestellt. Weitere Informationen finden Sie im AMS Retirement Guide.

Anmerkung

Verwaltete Identitäten sind nur für Media Services-Konten verfügbar, die mit der v3-API erstellt wurden. Wenn Sie die v2-API verwenden und verwaltete Identitäten verwenden möchten, migrieren Sie bitte von v2 zu v3 Migrieren von Media Services v2 zu v3 Einführung.

Wenn Sie möchten, dass Mediendienste Daten mithilfe eines Schlüssels aus Ihrem Key Vault verschlüsseln, muss das Mediendienstekonto Zugriff auf den Key Vault gewährt werden. Führen Sie die folgenden Schritte aus, um eine verwaltete Identität für das Media Services-Konto zu erstellen und dieser Identität Zugriff auf Ihren Key Vault mithilfe der Media Services CLI zu gewähren.

Media Services-Konto verwendet Key Vault mit einer verwalteten Identität

In diesem Lernprogramm wird die Mediendienste-API 2020-05-01 verwendet.

Anmelden bei Azure

Wenn Sie einen der Befehle in diesem Artikel verwenden möchten, müssen Sie sich zuerst bei dem Abonnement anmelden, das Sie verwenden möchten.

Melden Sie sich bei Azure an. Wenn Sie diesen Befehl verwenden, werden Sie zur Eingabe des Abonnements aufgefordert, das Sie verwenden möchten.

az login

Abonnement festlegen

Verwenden Sie diesen Befehl, um das Abonnement festzulegen, mit dem Sie arbeiten möchten.

Festlegen des Azure-Abonnements mit der CLI

Geben Sie im folgenden Befehl die Azure-Abonnement-ID an, die Sie für das Media Services-Konto verwenden möchten.

az account set --subscription <subscriptionName>

Ressourcennamen

Bevor Sie beginnen, entscheiden Sie sich für die Namen der Ressourcen, die Sie erstellen möchten. Sie sollten leicht als Satz identifizierbar sein, insbesondere, wenn Sie nicht planen, sie nach Abschluss des Tests zu verwenden. Benennungsregeln sind für viele Ressourcentypen unterschiedlich, daher empfiehlt es sich, bei allen Kleinbuchstaben zu bleiben. Beispiel: "mediatest1rg" für den Ressourcengruppennamen und "mediatest1stor" für den Namen Ihres Speicherkontos. Verwenden Sie für jeden Schritt in diesem Artikel dieselben Namen.

Auf diese Namen wird in den folgenden Befehlen verwiesen. Die Namen der benötigten Ressourcen sind:

  • myRG
  • myStorageAccount
  • myAmsAccount
  • myKeyVault
  • myKey
  • Ort

Anmerkung

Die vorstehenden Bindestriche werden nur zum Trennen von Leitwörtern verwendet. Verwenden Sie aufgrund der Inkonsistenz der Benennung von Ressourcen in Azure-Diensten keine Bindestriche, wenn Sie Ihre Ressourcen benennen. Außerdem erstellen Sie den Regionsnamen nicht. Der Regionsname wird von Azure bestimmt.

Azure-Regionen auflisten

Wenn Sie nicht sicher sind, dass der tatsächliche Regionsname verwendet werden soll, verwenden Sie diesen Befehl, um einen Eintrag zu erhalten:

Mit diesem Befehl können Sie die für Ihr Konto verfügbaren Regionen auflisten.

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

Reihenfolge

Jeder der folgenden Schritte erfolgt in einer bestimmten Reihenfolge, da mindestens ein Wert aus den JSON-Antworten im nächsten Schritt in der Sequenz verwendet wird.

Erstellen eines Speicherkontos

Das Mediendienste-Konto, das Sie erstellen, muss ein Speicherkonto zugeordnet sein. Erstellen Sie zuerst das Speicherkonto für das Media Services-Konto. Sie verwenden your-storage-account-name für nachfolgende Schritte.

Erstellen eines Azure Storage-Kontos mit der CLI

Verwenden Sie die folgenden Befehle, um ein Azure Storage-Konto zu erstellen.

Um ein Speicherkonto zu erstellen, müssen Sie zuerst eine Ressourcengruppe innerhalb eines Speicherorts erstellen.

Verwenden Sie den folgenden Befehl, um die verfügbaren Speicherorte auflisten zu können:

Auflisten der verfügbaren Speicherorte mit der CLI

Verwenden Sie den folgenden Befehl, um die verfügbaren Speicherorte auflisten zu können:

az account list-locations

Erstellen einer Ressourcengruppe mit der CLI

Verwenden Sie zum Erstellen einer Ressourcengruppe den folgenden Befehl:

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

Auswählen einer SKU

Sie müssen auch eine SKU für Ihr Speicherkonto auswählen. Sie können Speicherkonten auflisten.

Wählen Sie eine SKU aus der folgenden Liste aus: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS, Standard_RAGZRS.

  • Ändern Sie myStorageAccount in einen eindeutigen Namen mit einer Länge von weniger als 24 Zeichen.
  • Ändern Sie chooseLocation in die Region, in der Sie arbeiten möchten.
  • Ändern Sie chooseSKU zu Ihrer bevorzugten SKU.
az storage account create -n <myStorageAccount> -g <resourceGroup>  --location <chooseLocation> --sku <chooseSKU>

Erstellen eines Media Services-Kontos mit einem Dienstprinzipal (verwaltete Identität)

Erstellen Sie nun das Media Services-Konto mit einem Dienstprinzipal, das auch als verwaltete Identität bezeichnet wird.

Wichtig

Es ist wichtig, dass Sie daran denken, das --mi-Flag im Befehl zu verwenden. Andernfalls können Sie die principalId für einen späteren Schritt nicht finden.

Der folgende Azure CLI-Befehl erstellt ein neues Media Services-Konto. Ersetzen Sie die folgenden Werte: your-media-services-account-nameyour-storage-account-nameund your-resource-group-name durch die Namen, die Sie verwenden möchten. Der Befehl geht davon aus, dass Sie bereits eine Ressourcengruppe und ein Speicherkonto erstellt haben.

Es gibt dem Media Services-Konto eine vom System zugewiesene verwaltete Identität mit dem --mi-system-assigned Flag.


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>

Beispiel-JSON-Antwort:

{
  "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"
}

Erstellen eines Schlüsseltresors

Erstellen Sie den Schlüsseltresor. Der Key Vault wird zum Verschlüsseln von Mediendaten verwendet. Sie verwenden your-keyvault-name, um Ihren Schlüssel und spätere Schritte zu erstellen.

Verwenden Sie die folgenden Befehle, um einen Key Vault und einen Schlüssel zu erstellen. Ändern Sie your-resource-group-name, your-keyvault-name und your-key-name in die Werte, die Sie verwenden möchten. Der Befehl geht davon aus, dass Sie bereits eine Ressourcengruppe erstellt haben.

Anmerkung

Mit dem --bypass AzureServices können Mediendienste (und andere Azure-Dienste) auf den Key Vault zugreifen, wenn dieser Zugriff normalerweise durch die Key Vault-Netzwerk-ACLs blockiert würde. Die --enable-purge-protection Wenn sie nicht festgelegt ist, können Sie Ihren Schlüssel nicht verwenden.

Erstellen des Schlüsseltresors


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

Beispiel-JSON-Antwort:

{
  "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"
}

Erstellen des Schlüssels

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

Beispiel-JSON-Antwort:


{
  "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
}

Gewähren des vom Media Services-System zugewiesenen verwalteten Identitätszugriffs auf den Key Vault

Gewähren Sie den verwalteten Media Services-Identitätszugriff auf den Key Vault. Es gibt zwei Befehle:

Abrufen (anzeigen) der verwalteten Identität des Media Services-Kontos

Der erste Befehl unten zeigt die verwaltete Identität des Media Services-Kontos, bei dem es sich um die im JSON-Code aufgeführte principalId handelt, die vom Befehl zurückgegeben wird.

Dieser Befehl zeigt alle Eigenschaften eines Media Services-Kontos an.

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

Anmerkung

Wenn Sie dem Media Services-Konto Zugriffsrollen zugewiesen haben, gibt diese Zeile "storageAuthentication": "ManagedIdentity"zurück.

Beispiel-JSON-Antwort:

{
  "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"
}

Festlegen der Key Vault-Richtlinie

Der zweite Befehl gewährt der Prinzipal-ID Zugriff auf den Key Vault. Legen Sie object-id auf den Wert von principalId fest, den Sie aus dem vorherigen Schritt erhalten haben.

Um diesen Befehl zu verwenden, müssen Sie die Media Services-principalId als object-ideinschließen. Falls noch nicht geschehen, verwenden Sie az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group>, um diese ID abzurufen.

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

Beispiel-JSON-Antwort:

{
  "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"
}

Festlegen von Mediendiensten für die Verwendung des Schlüssels aus dem Key Vault

Legen Sie Mediendienste fest, um den von Ihnen erstellten Schlüssel zu verwenden. Der Wert der key-identifier-Eigenschaft stammt aus der Ausgabe, wenn der Schlüssel erstellt wurde. Dieser Befehl kann aufgrund der Zeit fehlschlagen, die zum Verteilen von Zugriffssteuerungsänderungen benötigt wird. Wenn dies der Fall ist, versuchen Sie es nach ein paar Minuten erneut.

Um diesen Befehl zu verwenden, müssen Sie bereits einen Key Vault und einen Schlüssel erstellt haben.

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>

Beispiel-JSON-Antwort:

{
  "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"
}

Validierung

Um zu überprüfen, ob das Konto mit einem vom Kunden verwalteten Schlüssel verschlüsselt ist, zeigen Sie die Kontoverschlüsselungseigenschaften an:

Anzeigen der Kontoverschlüsselung mit der CLI

Weitere Informationen zu diesem Befehl finden Sie in der Media Services-CLI-Referenz.

Die type-Eigenschaft sollte CustomerKey anzeigen, und die currentKeyIdentifier sollte auf den Pfad eines Schlüssels im Key Vault des Kunden festgelegt werden.

Bereinigen von Ressourcen

Wenn Sie nicht planen, die von Ihnen erstellten Ressourcen zu verwenden, löschen Sie die Ressourcengruppe.

Löschen einer Ressourcengruppe mit der CLI

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

Hilfe und Support erhalten

Sie können media Services mit Fragen kontaktieren oder unsere Updates mit einer der folgenden Methoden befolgen: