Compartilhar via


Tutorial: Usar uma chave do Key Vault para criptografar dados em uma conta dos Serviços de Mídia

logotipo dos Serviços de Mídia v3


Aviso

Os Serviços de Mídia do Azure serão desativados em 30 de junho de 2024. Para obter mais informações, consulte o guia de desativação do AMS.

Nota

As identidades gerenciadas só estão disponíveis para contas dos Serviços de Mídia criadas usando a API v3. Se você estiver usando a API v2 e quiser usar identidades gerenciadas, migre de v2 para v3 Migrar dos Serviços de Mídia v2 para a introdução v3.

Se você quiser que os Serviços de Mídia criptografem dados usando uma chave do Key Vault, a conta dos Serviços de Mídia deverá receber acesso ao Key Vault. 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 Key Vault usando a CLI dos Serviços de Mídia.

conta dos Serviços de Mídia usa o Key Vault com um de Identidade Gerenciada

Este tutorial usa a API de Serviços de Mídia 2020-05-01.

Entrar no Azure

Para usar qualquer um dos comandos neste artigo, primeiro você precisa ser conectado à assinatura que deseja usar.

Entre no Azure. Ao usar esse comando, você será solicitado a usar a assinatura que deseja usar.

az login

Definir assinatura

Use este comando para definir a assinatura com a qual você deseja 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 sobre 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 que terminar de testar. As regras de nomenclatura são diferentes para muitos tipos de recursos, portanto, é melhor manter todas as letras minúsculas. Por exemplo, "mediatest1rg" para o nome do grupo de recursos e "mediatest1stor" para o nome da sua conta de armazenamento. Use os mesmos nomes para cada etapa neste artigo.

Você verá esses nomes referenciados nos comandos abaixo. Os nomes dos recursos que você precisará são:

  • myRG
  • myStorageAccount
  • myAmsAccount
  • myKeyVault
  • myKey
  • localização

Nota

Os hifens acima são usados apenas para separar palavras de orientação. Devido à inconsistência de nomenclatura de recursos nos serviços do Azure, não use hifens quando você 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 da região real 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

Seqüenciar

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 na sequência.

Criar uma conta de armazenamento

A conta dos Serviços de Mídia que você criará deve ter uma conta de armazenamento associada a ela. Crie a conta de armazenamento para a conta dos Serviços de Mídia primeiro. 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, primeiro você deve criar um grupo de recursos em 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

Escolher um SKU

Você também precisa escolher um SKU para sua conta de armazenamento. Você pode listar contas de armazenamento.

Escolha uma SKU na seguinte lista: 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 em que você deseja trabalhar.
  • Altere chooseSKU para sua SKU preferida.
az storage account create -n <myStorageAccount> -g <resourceGroup>  --location <chooseLocation> --sku <chooseSKU>

Criar uma conta dos 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 poderá encontrar o principalId para uma etapa posterior.

O comando da CLI do Azure a seguir cria uma nova conta dos Serviços de Mídia. Substitua os seguintes valores: your-media-services-account-nameyour-storage-account-namee your-resource-group-name pelos nomes que você deseja usar. O comando pressupõe que você já criou um grupo de recursos e uma conta de Armazenamento.

Ele fornece à conta dos Serviços de Mídia uma identidade gerenciada atribuída pelo 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 Key Vault

Crie o Key Vault. O Key Vault é usado para criptografar dados de mídia. Você usará your-keyvault-name para criar sua chave e para etapas posteriores.

Use os comandos a seguir para criar um Key Vault e uma chave. Altere your-resource-group-name, your-keyvault-name e your-key-name para os valores que você deseja usar. O comando pressupõe que você já criou um grupo de recursos.

Nota

O --bypass AzureServices permite que os Serviços de Mídia (e outros Serviços do Azure) acessem o Key Vault quando esse acesso normalmente seria bloqueado pelas ACLs de rede do Key Vault O --enable-purge-protection Se ele não estiver definido, você não poderá usar sua chave.

Criar o Key Vault


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
}

Conceder ao Sistema de Serviços de Mídia acesso à Identidade Gerenciada Atribuída ao Cofre de Chaves

Conceda aos Serviços de Mídia acesso à Identidade Gerenciada ao Key Vault. Há 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 dos Serviços de Mídia.

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

Nota

Se você atribuiu 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 Key Vault

O segundo comando concede acesso à ID da Entidade de Segurança ao Key Vault. Defina object-id com o valor de principalId que você obteve da etapa anterior.

Para usar esse comando, você deve incluir os Serviços de Mídia principalId como o object-id. se ainda não tiver feito isso, use az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group> para obter essa 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 serviços de mídia para usar a chave do Key Vault

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 necessário 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 Key Vault 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 a referência da CLI dos Serviços de Mídia .

A propriedade type deve mostrar CustomerKey e o currentKeyIdentifier deve ser definido como o caminho de uma chave no Key Vault 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>

Obter ajuda e suporte

Você pode entrar em contato com os Serviços de Mídia com perguntas ou seguir nossas atualizações por um dos seguintes métodos: