Tutorial: Usar uma chave do Cofre da Chave para criptografar dados em uma conta de Serviços de Mídia
Advertência
Os Serviços de Mídia do Azure serão desativados em 30 de junho de 2024. Para obter mais informações, consulte o AMS Retirement Guide.
Observação
As identidades gerenciadas só estão disponíveis para contas de Serviços de Mídia criadas usando a API v3. Se você estiver usando a API v2 e quiser usar identidades gerenciadas, migre da v2 para a v3 Migrar dos Serviços de Mídia v2 para v3 introdução.
Se você quiser que os Serviços de Mídia criptografem dados usando uma chave do Cofre da Chave, a conta dos Serviços de Mídia deverá receber acesso ao Cofre da Chave. Siga as etapas abaixo para criar uma Identidade Gerenciada para a conta dos Serviços de Mídia e conceder a essa identidade acesso ao Cofre da Chave usando a CLI dos Serviços de Mídia.
de Identidade Gerenciada
Este tutorial usa a API de Serviços de Mídia 2020-05-01.
Entrar no Azure
Para utilizar qualquer um dos comandos neste artigo, primeiro tem de iniciar sessão na subscrição que pretende utilizar.
Entre no Azure. Quando utilizar este comando, ser-lhe-á solicitada a subscrição que pretende utilizar.
az login
Definir subscrição
Utilize este comando para definir a subscrição com a qual pretende trabalhar.
Definir a assinatura do Azure com a CLI
No comando a seguir, forneça a ID de assinatura do Azure que você deseja usar para a conta dos Serviços de Mídia.
az account set --subscription <subscriptionName>
Nomes de recursos
Antes de começar, decida os nomes dos recursos que você criará. Eles devem ser facilmente identificáveis como um conjunto, especialmente se você não estiver planejando usá-los depois de terminar o teste. As regras de nomenclatura são diferentes para muitos tipos de recursos, por isso é melhor ficar com todas as letras minúsculas. Por exemplo, "mediatest1rg" para o nome do grupo de recursos e "mediatest1stor" para o nome da conta de armazenamento. Use os mesmos nomes para cada etapa deste artigo.
Você verá esses nomes referenciados nos comandos abaixo. Os nomes dos recursos de que você precisará são:
- minhaRG
- myStorageAccount
- myAmsAccount
- myKeyVault
- myKey
- Localização
Observação
Os hífenes acima são usados apenas para separar palavras de orientação. Devido à inconsistência de nomear recursos nos serviços do Azure, não use hífenes quando nomear seus recursos. Além disso, você não cria o nome da região. O nome da região é determinado pelo Azure.
Listar regiões do Azure
Se você não tiver certeza do nome real da região a ser usado, use este comando para obter uma listagem:
Use este comando para listar as regiões disponíveis para sua conta.
az account list-locations --query "[].{DisplayName:displayName, Name:name}" -o table
Sequência
Cada uma das etapas abaixo é feita em uma ordem específica porque um ou mais valores das respostas JSON são usados na próxima etapa da sequência.
Criar uma conta de armazenamento
A conta de Serviços de Mídia que você criará deve ter uma conta de armazenamento associada a ela. Crie primeiro a conta de armazenamento para a conta dos Serviços de Multimédia. Você usará your-storage-account-name
para as etapas subsequentes.
Criar uma conta de Armazenamento do Azure com a CLI
Use os comandos a seguir para criar uma conta de Armazenamento do Azure.
Para criar uma conta de armazenamento, você deve primeiro criar um grupo de recursos dentro de um local.
Para listar os locais disponíveis, use o seguinte comando:
Listar locais disponíveis com a CLI
Para listar os locais disponíveis, use o seguinte comando:
az account list-locations
Criar um grupo de recursos com a CLI
Para criar um grupo de recursos, use o seguinte comando:
az group create -n <resourceGroupName> --location chooseLocation
Escolha uma SKU
Você também precisa escolher um SKU para sua conta de armazenamento. Você pode listar contas de armazenamento.
Escolha uma SKU na lista a seguir: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS Standard_RAGZRS.
- Altere
myStorageAccount
para um nome exclusivo com um comprimento inferior a 24 caracteres. - Altere
chooseLocation
para a região na qual você deseja trabalhar. - Mude
chooseSKU
para o seu SKU preferido.
az storage account create -n <myStorageAccount> -g <resourceGroup> --location <chooseLocation> --sku <chooseSKU>
Criar uma conta de Serviços de Mídia com uma Entidade de Serviço (Identidade Gerenciada)
Agora, crie a conta dos Serviços de Mídia com uma Entidade de Serviço, também conhecida como Identidade Gerenciada.
Importante
É importante que você se lembre de usar o sinalizador --mi no comando. Caso contrário, você não será capaz de encontrar o principalId
para uma etapa posterior.
O comando da CLI do Azure a seguir cria uma nova conta de Serviços de Mídia. Substitua os seguintes valores: your-media-services-account-name
your-storage-account-name
e your-resource-group-name
pelos nomes que deseja usar. O comando pressupõe que você já tenha criado um grupo de recursos e uma conta de armazenamento.
Ele fornece à conta de Serviços de Mídia uma identidade gerenciada atribuída ao sistema com o sinalizador --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>
Exemplo de resposta JSON:
{
"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"
}
Criar um Cofre de Chaves
Crie o Cofre da Chave. O Cofre da Chave é usado para criptografar dados de mídia. Você usará your-keyvault-name
para criar sua chave e para etapas posteriores.
Use os seguintes comandos para criar um Cofre da Chave e uma chave. Altere your-resource-group-name
, your-keyvault-name
e your-key-name
para os valores que deseja usar. O comando pressupõe que você já tenha criado um grupo de recursos.
Observação
O --bypass AzureServices
permite que os Serviços de Mídia (e outros Serviços do Azure) acessem o Cofre da Chave quando esse acesso normalmente seria bloqueado pelas ACLs de rede do Cofre da Chave O --enable-purge-protection
Se não estiver definido, não poderá utilizar a sua chave.
Criar o Cofre da Chave
az keyvault create --resource-group <your-resource-group-name> --bypass AzureServices --enable-purge-protection --name <your-keyvault-name>
Exemplo de resposta JSON:
{
"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"
}
Criar a chave
az keyvault key create --kty RSA --name your-key-name --vault-name your-keyvault-name
Exemplo de resposta JSON:
{
"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
}
Conceda ao Sistema de Serviços de Mídia acesso de Identidade Gerenciada Atribuída ao Cofre da Chave
Conceda à Identidade Gerenciada dos Serviços de Mídia acesso ao Cofre da Chave. Existem dois comandos:
Obter (mostrar) a Identidade Gerenciada da conta dos Serviços de Mídia
O primeiro comando abaixo mostra a Identidade Gerenciada da conta dos Serviços de Mídia, que é a principalId
listada no JSON retornado pelo comando.
Este comando mostra todas as propriedades de uma conta de Serviços de Mídia.
az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group>
Observação
Se você tiver atribuído funções de acesso à conta dos Serviços de Mídia, essa linha retornará "storageAuthentication": "ManagedIdentity"
.
Exemplo de resposta JSON:
{
"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"
}
Definir a política do Cofre da Chave
O segundo comando concede ao ID Principal acesso ao Cofre da Chave. Defina object-id
para o valor de principalId
que você obteve da etapa anterior.
Para usar esse comando, você deve incluir o principalId
Serviços de Mídia como o object-id
. se ainda não o fez, utilize az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group>
para obter este ID.
az keyvault set-policy --name <your-keyvault-name> --object-id <principalId> --key-permissions decrypt encrypt get list unwrapKey wrapKey
Exemplo de resposta JSON:
{
"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"
}
Definir os Serviços de Mídia para usar a chave do Cofre da Chave
Defina os Serviços de Mídia para usar a chave que você criou. O valor da propriedade key-identifier
vem da saída quando a chave foi criada. Esse comando pode falhar devido ao tempo que leva para propagar alterações de controle de acesso. Se isso acontecer, tente novamente após alguns minutos.
Para usar esse comando, você já deve ter criado um Cofre da Chave e uma chave.
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>
Exemplo de resposta JSON:
{
"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"
}
Validação
Para verificar se a conta está criptografada usando uma Chave Gerenciada pelo Cliente, exiba as propriedades de criptografia da conta:
Mostrar criptografia de conta com a CLI
Para obter mais informações sobre esse comando, consulte ode referência da CLI do Media Services
A propriedade type
deve mostrar CustomerKey
e a currentKeyIdentifier
deve ser definida como o caminho de uma chave no Cofre de Chaves do cliente.
Limpar recursos
Se você não estiver planejando usar os recursos criados, exclua o grupo de recursos.
Excluir um grupo de recursos com a CLI
az group delete --name <your-resource-group-name>
Obtenha ajuda e suporte
Você pode entrar em contato com os Serviços de Mídia com perguntas ou acompanhar nossas atualizações por um dos seguintes métodos:
- Q & A
-
Estouro de pilha. Marque as perguntas com
azure-media-services
. - @MSFTAzureMedia ou use @AzureSupport para solicitar suporte.
- Abra um tíquete de suporte por meio do portal do Azure.