Tutorial: Verschlüsseln von Daten in einem Media Services-Konto mithilfe eines Key Vault-Schlüssels
Warnung
Azure Media Services wird am 30. Juni 2024 eingestellt. Weitere Informationen finden Sie im Leitfaden zur Einstellung von AMS.
Hinweis
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 von v2 zu v3 Einführung in die Migration von Media Services V2 zu V3.
Wenn von Media Services Daten mithilfe eines Schlüssels aus Ihrer Key Vault-Instanz verschlüsselt werden sollen, muss dem Media Services-Konto Zugriff auf die Key Vault-Instanz gewährt werden. Führen Sie die folgenden Schritte aus, um mithilfe der Media Services-CLI eine verwaltete Identität für das Media Services-Konto zu erstellen und dieser Identität Zugriff auf Ihre Key Vault-Instanz zu gewähren.
In diesem Tutorial wird die Media Services-API 2020-05-01 verwendet.
Anmelden bei Azure
Um die Befehle in diesem Artikel verwenden zu können, müssen Sie bei dem Abonnement angemeldet sein, 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
Festlegen des Abonnements
Verwenden Sie den folgenden Befehl, um das Abonnement festzulegen, mit dem Sie arbeiten möchten.
Festlegen des Azure-Abonnements mit der CLI
Geben Sie im folgenden Befehle die ID des Azure-Abonnements an, das Sie für das Media Services-Konto verwenden möchten.
az account set --subscription <subscriptionName>
Ressourcennamen
Überlegen Sie sich zunächst, wie die von Ihnen erstellten Ressourcen heißen sollen. Sie sollten problemlos als Gruppe identifizierbar sein – insbesondere, wenn Sie nicht vorhaben, sie nach dem Testen weiter zu verwenden. Da sich Benennungsregeln für viele Ressourcentypen unterscheiden, empfiehlt es sich, nur Kleinbuchstaben zu verwenden. Beispiel: „mediatest1rg“ für den Namen Ihrer Ressourcengruppe und „mediatest1stor“ für den Namen Ihres Speicherkontos. Verwenden Sie für jeden Schritt in diesem Artikel die gleichen Namen.
Auf diese Namen wird in den Befehlen weiter unten verwiesen. Sie benötigen Namen für folgende Ressourcen:
- myRG
- myStorageAccount
- myAmsAccount
- myKeyVault
- myKey
- location
Hinweis
Die Bindestriche dienen lediglich zur besseren Lesbarkeit. Verwenden Sie aufgrund der Inkonsistenz bei der Benennung von Ressourcen in Azure-Diensten keine Bindestriche in Ihren Ressourcennamen. Der Regionsname wird außerdem nicht von Ihnen erstellt, sondern von Azure bestimmt.
Auflisten der Azure-Regionen
Falls Sie nicht genau wissen, welchen Regionsnamen Sie verwenden sollen, können Sie mithilfe des folgenden Befehls eine Liste abrufen:
Verwenden Sie diesen Befehl, um die für Ihr Konto verfügbaren Regionen aufzulisten.
az account list-locations --query "[].{DisplayName:displayName, Name:name}" -o table
Sequenz
Die folgenden Schritte werden in einer bestimmten Reihenfolge ausgeführt, da jeweils einzelne oder mehrere Werte aus den JSON-Antworten im nächsten Schritt der Sequenz verwendet werden.
Erstellen eines Speicherkontos
Dem von Ihnen erstellten Media Services-Konto muss ein Speicherkonto zugeordnet sein. Erstellen Sie zuerst das Speicherkonto für das Media Services-Konto. In nachfolgenden Schritten wird your-storage-account-name
verwendet.
Erstellen eines Azure Storage-Kontos mit der CLI
Erstellen Sie mit den folgenden Befehlen ein Azure-Speicherkonto.
Um ein Speicherkonto zu erstellen, müssen Sie zuerst eine Ressourcengruppe an einem Standort erstellen.
Zur Auflistung der verfügbaren Standorte verwenden Sie den folgenden Befehl:
Auflisten verfügbarer Standorte mit der CLI
Zur Auflistung der verfügbaren Standorte verwenden Sie den folgenden Befehl:
az account list-locations
Erstellen einer Ressourcengruppe mit der CLI
Führen Sie den folgenden Befehl aus, um eine Ressourcengruppe zu erstellen:
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
in Ihre bevorzugte 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. Dieser wird auch als verwaltete Identität bezeichnet.
Wichtig
Wichtig: In dem Befehl muss das Flag „--mi“ verwendet werden. Andernfalls finden Sie die für einen späteren Schritt benötigte Prinzipal-ID (principalId
) nicht.
Der folgende Azure CLI-Befehl erstellt ein neues Media Services-Konto. Ersetzen Sie die Werte your-media-services-account-name
, your-storage-account-name
und your-resource-group-name
durch die Namen, die Sie verwenden möchten. Der Befehl setzt voraus, dass Sie bereits eine Ressourcengruppe und ein Speicherkonto erstellt haben.
Durch ihn erhält das Media Services-Konto eine systemseitig zugewiesene verwaltete Identität mit dem Flag --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>
JSON-Beispielantwort:
{
"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 die Key Vault-Instanz. Die Key Vault-Instanz wird zum Verschlüsseln von Mediendaten verwendet. your-keyvault-name
wird für die Schlüsselerstellung sowie für spätere Schritte verwendet.
Erstellen Sie mit den folgenden Befehlen eine Key Vault-Instanz und einen Schlüssel. Ersetzen Sie die Werte your-resource-group-name
, your-keyvault-name
und your-key-name
durch die Werte, die Sie verwenden möchten. Der Befehl setzt voraus, dass Sie bereits eine Ressourcengruppe erstellt haben.
Hinweis
--bypass AzureServices
ermöglicht Media Services (und anderen Azure-Diensten) den Zugriff auf die Key Vault-Instanz, der durch die ACLs des Key Vault-Netzwerks normalerweise blockiert wird. Wenn --enable-purge-protection
nicht festgelegt ist, können Sie Ihren Schlüssel nicht verwenden.
Key Vault-Instanz erstellen
az keyvault create --resource-group <your-resource-group-name> --bypass AzureServices --enable-purge-protection --name <your-keyvault-name>
JSON-Beispielantwort:
{
"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": "00000000-0000-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"
}
],
"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"
}
Schlüssel erstellen
az keyvault key create --kty RSA --name your-key-name --vault-name your-keyvault-name
JSON-Beispielantwort:
{
"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 von Zugriff auf die Key Vault-Instanz für die systemseitig zugewiesene verwaltete Media Services-Identität
Gewähren Sie der verwalteten Media Services-Identität Zugriff auf die Key Vault-Instanz. Es gibt zwei Befehle:
Abrufen (Anzeigen) der verwalteten Identität des Media Services-Kontos
Der erste Befehl zeigt die verwaltete Identität des Media Services-Kontos an. Hierbei handelt es sich um die Prinzipal-ID (principalId
) aus der JSON-Rückgabe des Befehls.
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>
Hinweis
Wenn Sie dem Media Services-Konto Zugriffsrollen zugewiesen haben, gibt diese Zeile "storageAuthentication": "ManagedIdentity"
zurück.
JSON-Beispielantwort:
{
"encryption": {
"keyVaultProperties": null,
"type": "SystemKey"
},
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.Media/mediaservices/your-media-services-account",
"identity": {
"principalId": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"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/00000000-0000-0000-0000-000000000000/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
Durch den zweiten Befehl wird der Prinzipal-ID Zugriff auf Key Vault gewährt. Legen Sie object-id
auf den Wert von principalId
fest, den Sie im vorherigen Schritt erhalten haben.
Um diesen Befehl verwenden zu können, müssen Sie principalId
von Media Services als object-id
einschließen. Falls noch nicht erfolgt, 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
JSON-Beispielantwort:
{
"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"
}
Konfigurieren von Media Services für die Verwendung des Schlüssels aus Key Vault
Konfigurieren Sie Media Services für die Verwendung des erstellten Schlüssels. Der Wert der Eigenschaft key-identifier
stammt aus der Ausgabe der Schlüsselerstellung. Wenn das Auffüllen der Zugriffssteuerungsänderungen zu lange dauert, kann es vorkommen, dass der Befehl nicht erfolgreich ausgeführt wird. Versuchen Sie es in diesem Fall nach einigen Minuten erneut.
Um diesen Befehl verwenden zu können, müssen Sie bereits eine Key Vault-Instanz 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>
JSON-Beispielantwort:
{
"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"
}
Überprüfung
Überprüfen Sie anhand der Kontoverschlüsselungseigenschaften, ob das Konto mit einem kundenseitig verwalteten Schlüssel verschlüsselt ist:
Anzeigen der Kontoverschlüsselung mit der CLI
Weitere Informationen zu diesem Befehl finden Sie in der CLI-Referenz für Media Services.
Für die Eigenschaft type
sollte CustomerKey
angezeigt werden, und der aktuelle Schlüsselbezeichner (currentKeyIdentifier
) sollte auf den Pfad eines Schlüssels in der Key Vault-Instanz des Kunden festgelegt sein.
Bereinigen von Ressourcen
Wenn Sie die von Ihnen erstellten Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe.
Löschen einer Ressourcengruppe mit der Befehlszeilenschnittstelle
az group delete --name <your-resource-group-name>
Anfordern von Hilfe und Support
Sie können Media Services mit Fragen kontaktieren oder unsere Updates mit einer der folgenden Methoden verfolgen:
- Q & A
- Stack Overflow. Markieren Sie Fragen mit
azure-media-services
. - @MSFTAzureMedia oder verwenden Sie @AzureSupport , um Support anzufordern.
- Öffnen Sie ein Supportticket über die Azure-Portal.