Lernprogramm: Verwenden eines Schlüsseltresorschlüssels zum Verschlüsseln von Daten in einem Media Services-Konto
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.
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-name
your-storage-account-name
und 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-id
einschließ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:
- Q & A
-
Stack Overflow. Markieren Sie Fragen mit
azure-media-services
. - @MSFTAzureMedia oder verwenden Sie @AzureSupport, um Support anzufordern.
- Öffnen Sie ein Supportticket über das Azure-Portal.