Tutorial: Uso de una clave de Key Vault para cifrar datos en una cuenta de Media Services
logotipo de
Advertencia
Azure Media Services se retirará el 30 de junio de 2024. Para obtener más información, consulte la Guía de retirada de AMS de .
Nota
Las identidades administradas solo están disponibles para las cuentas de Media Services creadas mediante la API v3. Si usa la API v2 y desea usar identidades administradas, migre de v2 a v3 Migración de Media Services v2 a v3.
Si desea que Media Services cifre los datos mediante una clave de Key Vault, se debe conceder a la cuenta de Media Services acceso a Key Vault. Siga los pasos siguientes para crear una identidad administrada para la cuenta de Media Services y conceder a esta identidad acceso a Key Vault mediante la CLI de Media Services.
En este tutorial se usa la API de Media Services 2020-05-01.
Inicio de sesión en Azure
Para usar cualquiera de los comandos de este artículo, primero debe iniciar sesión en la suscripción que desea usar.
Inicie sesión en Azure. Al usar este comando, se le pedirá la suscripción que desea usar.
az login
Establecer suscripción
Use este comando para establecer la suscripción con la que desea trabajar.
Establecimiento de la suscripción de Azure con la CLI
En el comando siguiente, proporcione el identificador de suscripción de Azure que desea usar para la cuenta de Media Services.
az account set --subscription <subscriptionName>
Nombres de recursos
Antes de empezar, decida los nombres de los recursos que va a crear. Deben ser fácilmente identificables como un conjunto, especialmente si no planea usarlos después de que haya terminado las pruebas. Las reglas de nomenclatura son diferentes para muchos tipos de recursos, por lo que es mejor seguir con mayúsculas y minúsculas. Por ejemplo, "mediatest1rg" para el nombre del grupo de recursos y "mediatest1stor" para el nombre de la cuenta de almacenamiento. Use los mismos nombres para cada paso de este artículo.
Verá estos nombres a los que se hace referencia en los comandos siguientes. Los nombres de los recursos que necesitará son:
- myRG
- myStorageAccount
- myAmsAccount
- myKeyVault
- myKey
- ubicación
Nota
Los guiones anteriores solo se usan para separar las palabras de guía. Debido a la incoherencia de asignar nombres a los recursos en los servicios de Azure, no use guiones al asignar un nombre a los recursos. Además, no cree el nombre de la región. Azure determina el nombre de la región.
Enumeración de regiones de Azure
Si no está seguro del nombre de región real que se va a usar, use este comando para obtener una descripción:
Use este comando para enumerar las regiones disponibles para su cuenta.
az account list-locations --query "[].{DisplayName:displayName, Name:name}" -o table
Secuencia
Cada uno de los pasos siguientes se realiza en un orden determinado porque se usan uno o varios valores de las respuestas JSON en el siguiente paso de la secuencia.
Creación de una cuenta de almacenamiento
La cuenta de Media Services que va a crear debe tener una cuenta de almacenamiento asociada. Cree primero la cuenta de almacenamiento para la cuenta de Media Services. Usará your-storage-account-name
para los pasos posteriores.
Creación de una cuenta de Azure Storage con la CLI
Use los comandos siguientes para crear una cuenta de Azure Storage.
Para crear una cuenta de almacenamiento, primero debe crear un grupo de recursos dentro de una ubicación.
Para enumerar las ubicaciones disponibles, use el siguiente comando:
Enumeración de ubicaciones disponibles con la CLI
Para enumerar las ubicaciones disponibles, use el siguiente comando:
az account list-locations
Creación de un grupo de recursos con la CLI
Para crear un grupo de recursos, use el siguiente comando:
az group create -n <resourceGroupName> --location chooseLocation
Elección de una SKU
También debe elegir una SKU para la cuenta de almacenamiento. Puede enumerar las cuentas de almacenamiento.
Elija una SKU en la lista siguiente: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS Standard_RAGZRS.
- Cambie
myStorageAccount
a un nombre único con una longitud de menos de 24 caracteres. - Cambie
chooseLocation
a la región en la que desea trabajar. - Cambie
chooseSKU
a su SKU preferida.
az storage account create -n <myStorageAccount> -g <resourceGroup> --location <chooseLocation> --sku <chooseSKU>
Creación de una cuenta de Media Services con una entidad de servicio (identidad administrada)
Ahora cree la cuenta de Media Services con una entidad de servicio, lo que se conoce como identidad administrada.
Importante
Es importante que recuerde usar la marca --mi en el comando . De lo contrario, no podrá encontrar el principalId
para un paso posterior.
El siguiente comando de la CLI de Azure crea una nueva cuenta de Media Services. Reemplace los valores siguientes: your-media-services-account-name
your-storage-account-name
y your-resource-group-name
por los nombres que desea usar. El comando supone que ya ha creado un grupo de recursos y una cuenta de almacenamiento.
Proporciona a la cuenta de Media Services una identidad administrada asignada por el sistema con la marca --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>
Respuesta JSON de ejemplo:
{
"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"
}
Creación de un almacén de claves
Cree el almacén de claves. Key Vault se usa para cifrar los datos multimedia. Usará your-keyvault-name
para crear la clave y para pasos posteriores.
Use los siguientes comandos para crear un almacén de claves y una clave. Cambie your-resource-group-name
, your-keyvault-name
y your-key-name
a los valores que desea usar. El comando supone que ya ha creado un grupo de recursos.
Nota
El --bypass AzureServices
permite que Media Services (y otros servicios de Azure) accedan a Key Vault cuando ese acceso normalmente lo bloquearán las ACL de red de Key Vault El --enable-purge-protection
Si no está establecido, no podrá usar la clave.
Creación del almacén de claves
az keyvault create --resource-group <your-resource-group-name> --bypass AzureServices --enable-purge-protection --name <your-keyvault-name>
Respuesta JSON de ejemplo:
{
"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"
}
Creación de la clave
az keyvault key create --kty RSA --name your-key-name --vault-name your-keyvault-name
Respuesta JSON de ejemplo:
{
"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
}
Concesión del acceso a la identidad administrada asignada por el sistema de Media Services al almacén de claves
Conceda a la identidad administrada de Media Services acceso a Key Vault. Hay dos comandos:
Obtener (mostrar) la identidad administrada de la cuenta de Media Services
El primer comando siguiente muestra la identidad administrada de la cuenta de Media Services, que es el principalId
que aparece en el código JSON devuelto por el comando .
Este comando muestra todas las propiedades de una cuenta de Media Services.
az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group>
Nota
Si ha asignado roles de acceso a la cuenta de Media Services, esta línea devolverá "storageAuthentication": "ManagedIdentity"
.
Respuesta JSON de ejemplo:
{
"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"
}
Establecimiento de la directiva de Key Vault
El segundo comando concede al identificador de entidad de seguridad acceso a Key Vault. Establezca object-id
en el valor de principalId
que obtuvo del paso anterior.
Para usar este comando, debe incluir el principalId
de Media Services como object-id
. Si aún no lo ha hecho, use az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group>
para obtener este identificador.
az keyvault set-policy --name <your-keyvault-name> --object-id <principalId> --key-permissions decrypt encrypt get list unwrapKey wrapKey
Respuesta JSON de ejemplo:
{
"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"
}
Establecimiento de Media Services para usar la clave de Key Vault
Establezca Media Services para usar la clave que ha creado. El valor de la propiedad key-identifier
procede de la salida cuando se creó la clave. Este comando puede producir un error debido al tiempo necesario para propagar los cambios del control de acceso. Si esto sucede, vuelva a intentarlo después de unos minutos.
Para usar este comando, ya debe haber creado una instancia de Key Vault y una clave.
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>
Respuesta JSON de ejemplo:
{
"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"
}
Validación
Para comprobar que la cuenta está cifrada mediante una clave administrada por el cliente, vea las propiedades de cifrado de la cuenta:
Mostrar el cifrado de cuenta con la CLI
Para obtener más información sobre este comando, consulte la referencia de la CLI de Media Services .
La propiedad type
debe mostrar CustomerKey
y el currentKeyIdentifier
debe establecerse en la ruta de acceso de una clave en el almacén de claves del cliente.
Limpieza de recursos
Si no planea usar los recursos que ha creado, elimine el grupo de recursos.
Eliminación de un grupo de recursos con la CLI
az group delete --name <your-resource-group-name>
Obtener ayuda y soporte técnico
Puede ponerse en contacto con Media Services con preguntas o seguir nuestras actualizaciones mediante uno de los métodos siguientes:
- Q & A
-
stack Overflow. Etiquete preguntas con
azure-media-services
. - @MSFTAzureMedia o use @AzureSupport para solicitar soporte técnico.
- Abra una incidencia de soporte técnico a través de Azure Portal.