Tutorial: Usar uma VM/VMSS do Linux para acessar recursos do Azure

Identidades gerenciadas para recursos do Azure é um recurso do Microsoft Entra ID. Cada um dos serviços do Azure que dão suporte a identidades gerenciadas para recursos do Azure está sujeito à própria linha do tempo. Não deixe de examinar o status de disponibilidade das identidades gerenciadas do seu recurso e os problemas conhecidos antes de começar.

Pré-requisitos

Usar uma identidade gerenciada atribuída pelo sistema da VM do Linux para acessar o Azure Data Lake Storage

Este tutorial mostra como usar uma identidade gerenciada atribuída pelo sistema para uma VM (máquina virtual) do Linux para acessar o Azure Data Lake Storage.

Você aprenderá a:

  • Conceder à sua VM acesso ao Azure Data Lake Store.
  • Obtenha um token de acesso usando a identidade gerenciada atribuída pelo sistema da VM para acessar o Azure Data Lake Storage.

Conceder acesso

Esta seção agora mostra como permitir acesso à sua VM a arquivos e pastas no Azure Data Lake Storage. Para esta etapa, você pode usar uma instância Data Lake Store existente ou criar uma nova. Para criar uma nova instância Data Lake Store usando o portal do Azure, siga o Guia de início rápido do Azure Data Lake Store. Também há guias de início rápido que usam a CLI do Azure e o Azure PowerShell na documentação do Azure Data Lake Store.

No Data Lake Store, crie uma nova pasta e conceda permissão à identidade gerenciada da VM do Linux atribuída pelo sistema para ler, gravar e executar arquivos nessa pasta:

  1. No portal do Azure, selecione Data Lake Store no painel esquerdo.
  2. Selecione a instância Data Lake Store que você deseja usar.
  3. Selecione Data Explorer na barra de comandos.
  4. A pasta raiz da instância Data Lake Store é selecionada. Selecione Acesso na barra de comandos.
  5. Selecione Adicionar. Na caixa Selecionar, insira o nome da sua VM, por exemplo, DevTestVM. Selecione sua VM nos resultados da pesquisa e, a seguir, escolha Selecionar.
  6. Clique em Selecionar permissões. Selecione Leitura e Execução, adicione a Essa pasta, adicione como Somente permissão de acesso e, a seguir, selecione Ok. A permissão deverá ser adicionada com êxito.
  7. Feche o painel Acesso.
  8. Crie uma nova pasta e, a seguir, selecione Nova Pasta na barra de comandos e dê um nome à nova pasta, por exemplo, TestFolder. Em seguida, selecione Ok.
  9. Selecione a pasta que você criou e, a seguir, selecione Acesso na barra de comandos.
  10. Selecione Adicionar e a seguir, na caixa Selecionar, insira o nome da sua VM.
  11. Selecione sua VM nos resultados da pesquisa e, a seguir, escolha Selecionar.
  12. Selecione Selecionar Permissões, em seguida selecione Leitura e, a seguir, Gravar e Executar.
  13. Selecione para adicionar a Essa pasta, em seguida adicione como Uma entrada de permissão de acesso e uma entrada de permissão padrão e selecione Ok. A permissão deverá ser adicionada com êxito.

Identidades gerenciadas para recursos do Azure agora podem executar todas as operações em arquivos na pasta que você criou. Para saber mais sobre como gerenciar acesso ao Data Lake Store, confira Controle de acesso no Data Lake Store.

Obter um token de acesso

Esta seção mostra como obter um token de acesso e chamar o sistema de arquivos do Data Lake Storage. O Azure Data Lake Storage tem suporte nativo para autenticação do Microsoft Entra, de modo que pode aceitar diretamente os tokens de acesso obtidos usando identidades gerenciadas para recursos do Azure.

Para autenticar para o sistema de arquivos do Data Lake Store, você envia um token de acesso emitido pelo Microsoft Entra ID para o ponto de extremidade do sistema de arquivos do Data Lake Store. O token de acesso está em um cabeçalho de autorização no formato Bearer \<ACCESS_TOKEN_VALUE\>. Para saber mais sobre o suporte do Data Lake Store à autenticação do Microsoft Entra ID, confira Autenticação com o Data Lake Store usando o Microsoft Entra ID.

A seguir, você vai se autenticar na API REST do sistema de arquivos do Data Lake Store usando o cURL para fazer solicitações REST.

Observação

Os SDKs do cliente para o sistema de arquivos do Data Lake Storage ainda não têm suporte para identidades gerenciadas para recursos do Azure.

Para concluir essas etapas, você precisará do cliente SSH. Se você estiver usando o Windows, poderá usar o cliente SSH no Subsistema do Windows para Linux. Se precisar de ajuda para configurar as chaves do cliente SSH, confira Como usar chaves SSH com o Windows no Azure ou Como criar e usar um par de chaves SSH pública e privada para VMs Linux no Azure.

  1. No portal, navegue até sua VM do Linux e, na seção Visão geral, selecione Conectar.

  2. Conecte-se à VM usando um cliente SSH de sua escolha.

  3. Na janela de terminal, usando o cURL, faça uma solicitação às identidades gerenciadas locais para o ponto de extremidade de recursos do Azure para obter um token de acesso para o sistema de arquivos do Data Lake Store. O identificador de recursos para Data Lake Storage é https://datalake.azure.net/. É importante incluir a barra à direita no identificador de recursos.

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -H Metadata:true   
    

    Uma resposta bem-sucedida retorna o token de acesso que você usará para autenticar-se no Data Lake Store:

    {"access_token":"eyJ0eXAiOiJ...",
     "refresh_token":"",
     "expires_in":"3599",
     "expires_on":"1508119757",
     "not_before":"1508115857",
     "resource":"https://datalake.azure.net/",
     "token_type":"Bearer"}
    
  4. Usando o cURL, faça uma solicitação para o ponto de extremidade REST do sistema de arquivos do Data Lake Store para listar as pastas na pasta raiz. Essa é melhor maneira de verificar se tudo está configurado corretamente. Copie o valor do token de acesso da etapa anterior. É importante que a cadeia de caracteres Bearer no cabeçalho de Autorização tenha um “B” maiúsculo. Você pode encontrar o nome da sua instância do Data Lake Store na seção Visão geral do painel Data Lake Store no Portal do Azure.

    curl https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -H "Authorization: Bearer <ACCESS_TOKEN>"
    

    Uma resposta bem-sucedida tem a aparência a seguir:

    {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY","blockSize":0,"accessTime":1507934941392,"modificationTime":1508105430590,"replication":0,"permission":"770","owner":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071","group":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071"}]}}
    
  5. Agora, carregue um arquivo na sua instância do Data Lake Store. Primeiramente, crie um arquivo para ser carregado.

    echo "Test file." > Test1.txt
    
  6. Usando o cURL, faça uma solicitação para o ponto de extremidade REST do sistema de arquivos do Data Lake Store para carregar o arquivo para a pasta que você criou anteriormente. O carregamento envolve um redirecionamento, e o cURL segue o redirecionamento automaticamente.

    curl -i -X PUT -L -T Test1.txt -H "Authorization: Bearer <ACCESS_TOKEN>" 'https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/<FOLDER_NAME>/Test1.txt?op=CREATE' 
    

    Uma resposta bem-sucedida tem a seguinte aparência:

    HTTP/1.1 100 Continue
    HTTP/1.1 307 Temporary Redirect
    Cache-Control: no-cache, no-cache, no-store, max-age=0
    Pragma: no-cache
    Expires: -1
    Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true
    x-ms-request-id: 756f6b24-0cca-47ef-aa12-52c3b45b954c
    ContentLength: 0
    x-ms-webhdfs-version: 17.04.22.00
    Status: 0x0
    X-Content-Type-Options: nosniff
    Strict-Transport-Security: max-age=15724800; includeSubDomains
    Date: Sun, 15 Oct 2017 22:10:30 GMT
    Content-Length: 0
    
    HTTP/1.1 100 Continue
    
    HTTP/1.1 201 Created
    Cache-Control: no-cache, no-cache, no-store, max-age=0
    Pragma: no-cache
    Expires: -1
    Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true
    x-ms-request-id: af5baa07-3c79-43af-a01a-71d63d53e6c4
    ContentLength: 0
    x-ms-webhdfs-version: 17.04.22.00
    Status: 0x0
    X-Content-Type-Options: nosniff
    Strict-Transport-Security: max-age=15724800; includeSubDomains
    Date: Sun, 15 Oct 2017 22:10:30 GMT
    Content-Length: 0
    

Para terminar, agora você pode usar outras APIs para o sistema de arquivos do Data Lake Store anexar aos arquivos, baixar arquivos e muito mais.

Usar uma identidade gerenciada atribuída pelo sistema da VM do Linux para acessar o Armazenamento do Azure

Este tutorial mostra como usar uma identidade gerenciada atribuída pelo sistema para uma VM (máquina virtual) do Linux para acessar o Armazenamento do Azure.

Você aprenderá a:

  • Criar uma conta de armazenamento
  • Criar um contêiner de blobs em uma conta de armazenamento
  • Conceder acesso de Identidade Gerenciada de Linux VM em um contêiner de Armazenamento do Azure
  • Obter um token de acesso e usá-lo para chamar o Armazenamento do Azure

Criar uma conta de armazenamento

Para executar os scripts da CLI nesse exemplo, você tem duas opções:

Primeiro, crie uma conta de armazenamento.

  1. Selecione o botão Criar um recurso, localizado no canto superior esquerdo do portal do Azure.

  2. Clique em Armazenamento e, em seguida, Conta de armazenamento – blob, arquivo, tabela, fila.

  3. Sob Nome, insira um nome para a conta de armazenamento.

  4. Modelo de implantação e Tipo de conta devem ser definidos como Resource manager e Armazenamento (uso geral v1) .

  5. Verifique se a Assinatura e o Grupo de Recursos correspondem ao que você especificou quando criou sua VM na etapa anterior.

  6. Selecione Criar.

    Captura de tela mostrando a nova tela de criação da conta de armazenamento.

Criar um contêiner de blob e carregar um arquivo na conta de armazenamento

Arquivos exigem armazenamento de blobs, então é preciso criar um contêiner de blobs para armazenar o arquivo. Em seguida, você carrega um arquivo no contêiner de blobs na nova conta de armazenamento.

  1. Navegue para a sua conta de armazenamento recém-criada.

  2. Selecione Serviço de Blob e, em seguida, Contêineres.

  3. Selecione + Contêiner na parte superior da página.

  4. Selecione Novo contêiner e, em seguida, insira um nome para o contêiner.

  5. Certifique-se de que o Nível de acesso público esteja no valor padrão.

    Captura de tela mostrando a tela de criação do contêiner de armazenamento.

  6. Usando um editor de sua escolha, crie um arquivo denominado hello world.txt em seu computador local. Abra o arquivo e adicione o texto Olá, mundo!. Em seguida, salve.

  7. Selecione o nome do contêiner e, em seguida Carregar. Essa opção irá carregar o arquivo no contêiner recém-criado.

  8. No painel Carregar blob, na seção Arquivos, selecione o ícone de pasta e navegue até o arquivo hello_world.txt no seu computador local.

  9. Selecione o arquivo e, a seguir, selecione Carregar.

    Captura de tela mostrando a seção carregar arquivo de texto.

Conceder à sua VM acesso a um contêiner do Armazenamento do Azure

Você pode usar a identidade gerenciada da VM para recuperar os dados no Azure Storage Blob. As identidades gerenciadas para recursos do Azure podem ser usadas para autenticar com os recursos que são compatíveis com a autenticação do Microsoft Entra. Conceda acesso atribuindo a função storage-blob-data-reader à identidade gerenciada no escopo do grupo de recursos que contém a sua conta de armazenamento.

Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.

Observação

Para obter mais informações sobre as várias funções que você pode usar para conceder permissões para o armazenamento, reviseAutorizar o acesso a blobs e filas usando o Microsoft Entra ID

Obter um token de acesso e usá-lo para chamar o Armazenamento do Azure

O Armazenamento do Azure tem suporte nativo para autenticação do Microsoft Entra, de modo que ele pode aceitar diretamente os tokens de acesso obtidos por meio da identidade gerenciada. Isso faz parte da integração do Armazenamento do Azure com o Microsoft Entra ID, e é diferente de fornecer as credenciais na cadeia de conexão.

Para concluir as etapas a seguir, você precisará trabalhar da VM criada anteriormente e precisará de um cliente SSH para se conectar a ela.

Se você estiver usando o Windows, poderá usar o cliente SSH no Subsistema do Windows para Linux. Se precisar de ajuda para configurar as chaves do cliente SSH, confira Como usar chaves SSH com o Windows no Azure, ou Como criar e usar um par de chaves SSH pública e privada para VMs Linux no Azure.

  1. No portal do Azure, navegue até Máquinas Virtuais, vá para a sua máquina virtual do Linux e, na página Visão geral, selecione Conectar. Copie a cadeia de caracteres para conectar-se à VM.

  2. Conecte-se à VM com um cliente SSH de sua escolha.

  3. Na janela de terminal, use o CURL, para fazer uma solicitação para o ponto de extremidade da Identidade Gerenciada local para obter um token de acesso para o Armazenamento do Azure.

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true
    
  4. Use o token de acesso para acessar o Armazenamento do Azure. Por exemplo, para ler o conteúdo da amostra de arquivo que você carregou no contêiner anteriormente, substitua os valores de <STORAGE ACCOUNT>, <CONTAINER NAME> e <FILE NAME> pelos valores que você especificou anteriormente e <ACCESS TOKEN> pelo token retornado na etapa anterior.

    curl https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME> -H "x-ms-version: 2017-11-09" -H "Authorization: Bearer <ACCESS TOKEN>"
    

    A resposta tem o conteúdo do arquivo:

    Hello world! :)
    

Para terminar, você também pode armazenar o token em uma variável e repassá-lo para o segundo comando, conforme mostrado:

# Run the first curl command and capture its output in a variable
access_token=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true | jq -r '.access_token')

# Run the second curl command with the access token
curl "https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME>" \
  -H "x-ms-version: 2017-11-09" \
  -H "Authorization: Bearer $access_token"

Use uma identidade gerenciada da VM do Linux atribuída pelo sistema para acessar o Armazenamento do Azure usando uma credencial de SAS

Esse tutorial mostra como você pode usar uma identidade gerenciada de uma máquina virtual (VM) do Linux atribuída pelo sistema para obter uma credencial de Assinatura de Acesso Compartilhado (SAS) de armazenamento — especificamente, uma credencial de SAS de Serviço.

Observação

A chave SAS gerada neste tutorial não será restrita/limitada à VM.

Uma SAS de serviço concede acesso limitado a objetos em uma conta de armazenamento sem expor uma chave de acesso à conta. O acesso pode ser concedido por tempo limitado e um serviço específico. Você pode usar uma credencial de SAS como de costume quando realizar operações de armazenamento, como, por exemplo, ao usar o SDK de Armazenamento. Nesse tutorial, você irá carregar e baixar um blob usando a CLI do Armazenamento do Azure.

Você aprenderá a:

  • Criar uma conta de armazenamento
  • Criar um contêiner de blobs na conta de armazenamento
  • Conceda à sua VM acesso a SAS de conta de armazenamento no Resource Manager
  • Obter um token de acesso usando a identidade da VM e usá-lo para recuperar SAS do Resource Manager

Criar uma conta de armazenamento

Se ainda não tiver uma conta de armazenamento, você precisará criá-la. Você também pode optar por ignorar essa etapa e conceder à identidade gerenciada da sua VM atribuída pelo sistema acesso às chaves de uma conta de armazenamento existente.

  1. Selecione o botão +/Criar novo serviço localizado no canto superior esquerdo do portal do Azure.

  2. Selecione Armazenamento e, em seguida, Conta de Armazenamento. A seguir, o painel Criar conta de armazenamento será exibido.

  3. Insira um Nome para a conta de armazenamento. Lembre-se desse nome, porque você precisará dele mais tarde.

  4. Verifique se o Modelo de implantação está definido como Resource Manager e se o Tipo de conta está definido como Uso geral.

  5. Certifique-se de que a Assinatura e o Grupo de Recursos correspondem aos que você especificou quando criou sua VM.

  6. Selecione Criar para concluir a criação de uma conta de armazenamento.

    Captura de tela mostrando a nova tela de criação da conta de armazenamento.

Criar um contêiner de blobs na conta de armazenamento

Mais à frente, no tutorial, você irá carregar e baixar um arquivo para a nova conta de armazenamento. Como arquivos exigem armazenamento de blobs, é preciso criar um contêiner de blobs para armazenar o arquivo.

  1. Navegue para a sua conta de armazenamento recém-criada.

  2. Selecione o link Contêineres no painel do lado esquerdo, na guia Serviço de blob.

  3. Selecione + Contêiner na parte superior da página e, em seguida, um painel Novo contêiner será exibido.

  4. Forneça um nome ao contêiner, selecione um nível de acesso e selecione OK. Mais à frente nesse tutorial, você vai precisar do nome que especificou.

    Captura de tela mostrando a tela de criação do contêiner de armazenamento.

Conceder à identidade gerenciada atribuída pelo sistema da VM acesso para usar um SAS de armazenamento

O Armazenamento do Microsoft Azure suporta nativamente a autenticação do Microsoft Entra, então você pode usar a identidade gerenciada da sua VM atribuída pelo sistema para recuperar uma SAS de armazenamento do Resource Manager. Em seguida, você poderá usar a SAS para acessar o armazenamento.

Nessa seção, você concederá à identidade gerenciada da sua VM atribuída pelo sistema acesso à SAS da sua conta de armazenamento. Atribua a função Colaborador da Conta de Armazenamento à identidade gerenciada no escopo do grupo de recursos que contém a sua conta de armazenamento.

Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.

Observação

Para obter mais informações sobre as várias funções que você pode usar para conceder permissões para o armazenamento, reviseAutorizar o acesso a blobs e filas usando o Microsoft Entra ID.

Obter um token de acesso usando a identidade da máquina virtual e usá-la para chamar o Azure Resource Manager

No restante desse tutorial, você irá trabalhar na VM que criou anteriormente.

Você precisará de um cliente SSH para concluir essas etapas. Se estiver usando o Windows, você poderá usar o cliente SSH no Subsistema do Windows para Linux. Se precisar de ajuda para configurar as chaves do seu cliente SSH, consulte:

Assim que tiver seu cliente SSH, siga essas etapas:

  1. No portal do Azure, navegue até Máquinas Virtuais e, a seguir, vá para a sua máquina virtual do Linux.
  2. Na página Visão geral, selecione Conectar na parte superior da tela.
  3. Copie a cadeia de caracteres para conectar-se à VM.
  4. Conecte-se à VM usando um cliente SSH.
  5. Insira a Senha que você adicionou quando criou a VM do Linux. Assim, você deve se conectar com êxito.
  6. Use o CURL para obter um token de acesso para o Azure Resource Manager.

A solicitação CURL e a resposta para o token de acesso está abaixo:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true    

Observação

Na solicitação anterior, o valor do parâmetro resource precisa ter uma correspondência exata com o que é esperado pelo Microsoft Entra ID. Ao usar a ID de recurso do Azure Resource Manager, você deve incluir a barra à direita no URI.

Na resposta seguinte, o elemento access_token foi reduzido para fins de brevidade.

{
  "access_token":"eyJ0eXAiOiJ...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

Obter uma credencial SAS do Azure Resource Manager para fazer chamadas de armazenamento

Em seguida, use o cURL para chamar o Resource Manager usando o token de acesso que recuperamos na seção anterior. Use isso para criar uma credencial de SAS de armazenamento. Assim que tiver a credencial de SAS, você poderá chamar as operações carregar/baixar do armazenamento.

Para essa solicitação, use os seguintes parâmetros de solicitação HTTP para criar a credencial de SAS:

{
    "canonicalizedResource":"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>",
    "signedResource":"c",              // The kind of resource accessible with the SAS, in this case a container (c).
    "signedPermission":"rcw",          // Permissions for this SAS, in this case (r)ead, (c)reate, and (w)rite.  Order is important.
    "signedProtocol":"https",          // Require the SAS be used on https protocol.
    "signedExpiry":"<EXPIRATION TIME>" // UTC expiration time for SAS in ISO 8601 format, for example 2017-09-22T00:06:00Z.
}

Inclua esses parâmetros no corpo da solicitação POST para a credencial SAS. Para obter mais informações sobre os parâmetros para a criação de uma credencial SAS, consulte Referência REST de SAS do Serviço de Lista.

Use a seguinte solicitação CURL para obter a credencial SAS. Substitua os valores dos parâmetros <SUBSCRIPTION ID>, <RESOURCE GROUP>, <STORAGE ACCOUNT NAME>, <CONTAINER NAME> e <EXPIRATION TIME> pelos seus próprios valores. Substitua o valor <ACCESS TOKEN> pelo token de acesso que você recuperou anteriormente:

curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listServiceSas/?api-version=2017-06-01 -X POST -d "{\"canonicalizedResource\":\"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>\",\"signedResource\":\"c\",\"signedPermission\":\"rcw\",\"signedProtocol\":\"https\",\"signedExpiry\":\"<EXPIRATION TIME>\"}" -H "Authorization: Bearer <ACCESS TOKEN>"

Observação

O texto na URL anterior diferencia maiúsculas de minúsculas, então certifique-se de estar usando maiúsculas e minúsculas para que seus grupos de recursos as reflitam adequadamente. Também é importante saber que essa é uma solicitação POST, não uma solicitação GET.

A resposta de CURL retorna a credencial SAS:

{"serviceSasToken":"sv=2015-04-05&sr=c&spr=https&st=2017-09-22T00%3A10%3A00Z&se=2017-09-22T02%3A00%3A00Z&sp=rcw&sig=QcVwljccgWcNMbe9roAJbD8J5oEkYoq%2F0cUPlgriBn0%3D"} 

Em uma VM do Linux, crie um arquivo de blob de exemplo para carregar em seu contêiner de armazenamento de blobs usando o seguinte comando:

echo "This is a test file." > test.txt

A seguir, autentique com o comando az storage da CLI usando a credencial de SAS e, em seguida, carregue o arquivo para o contêiner de blob. Nesta etapa, você precisará instalar a CLI do Azure mais recente na sua VM, caso ainda não tenha feito isso.

 az storage blob upload --container-name 
                        --file 
                        --name
                        --account-name 
                        --sas-token

Resposta:

Finished[#############################################################]  100.0000%
{
  "etag": "\"0x8D4F9929765C139\"",
  "lastModified": "2017-09-21T03:58:56+00:00"
}

Você também pode baixar o arquivo usando a CLI do Azure e autenticá-lo com a credencial de SAS.

Solicitação:

az storage blob download --container-name
                         --file 
                         --name 
                         --account-name
                         --sas-token

Resposta:

{
  "content": null,
  "metadata": {},
  "name": "testblob",
  "properties": {
    "appendBlobCommittedBlockCount": null,
    "blobType": "BlockBlob",
    "contentLength": 16,
    "contentRange": "bytes 0-15/16",
    "contentSettings": {
      "cacheControl": null,
      "contentDisposition": null,
      "contentEncoding": null,
      "contentLanguage": null,
      "contentMd5": "Aryr///Rb+D8JQ8IytleDA==",
      "contentType": "text/plain"
    },
    "copy": {
      "completionTime": null,
      "id": null,
      "progress": null,
      "source": null,
      "status": null,
      "statusDescription": null
    },
    "etag": "\"0x8D4F9929765C139\"",
    "lastModified": "2017-09-21T03:58:56+00:00",
    "lease": {
      "duration": null,
      "state": "available",
      "status": "unlocked"
    },
    "pageBlobSequenceNumber": null,
    "serverEncrypted": false
  },
  "snapshot": null
}

Usar uma identidade gerenciada atribuída pelo sistema da VM do Linux para acessar o Armazenamento do Azure por meio da chave de acesso

Este tutorial mostra como usar uma identidade gerenciada atribuída pelo sistema de uma VM (máquina virtual) do Linux para recuperar as chaves de acesso da conta de armazenamento. Você pode usar uma chave de acesso de armazenamento como de costume quando realizar operações de armazenamento, como, por exemplo, ao usar o SDK de Armazenamento. Para esse tutorial, você vai carregar e baixar blobs usando a CLI do Azure.

Você aprenderá a:

  • Conceder acesso à VM para chaves de acesso da conta de armazenamento no Resource Manager
  • Obter um token de acesso usando a identidade da VM e usá-la para recuperar as chaves de acesso de armazenamento do Resource Manager

Criar uma conta de armazenamento

Se não tiver uma conta de armazenamento existente antes de iniciar esse tutorial, você precisará criar uma. Se tiver uma conta de armazenamento existente, siga essas etapas para conceder à identidade gerenciada da sua VM atribuída pelo sistema acesso às chaves da sua conta de armazenamento existente.

  1. Selecione o botão +/Criar novo serviço localizado no canto superior esquerdo do portal do Azure.

  2. Selecione Armazenamento e, em seguida, Conta de Armazenamento. A seguir, o painel Criar conta de armazenamento será exibido.

  3. Insira um Nome para a conta de armazenamento. Lembre-se desse nome, porque você precisará dele mais tarde.

  4. Verifique se o Modelo de implantação está definido como Resource Manager e se o Tipo de conta está definido como Uso geral.

  5. Certifique-se de que a Assinatura e o Grupo de Recursos correspondem aos que você especificou quando criou sua VM.

  6. Selecione Criar para concluir a criação de uma conta de armazenamento.

    Captura de tela mostrando criação da conta de armazenamento.

Criar um contêiner de blobs na conta de armazenamento

Mais à frente, no tutorial, você irá carregar e baixar um arquivo para a nova conta de armazenamento. Como arquivos exigem armazenamento de blobs, é preciso criar um contêiner de blobs para armazenar o arquivo.

  1. Navegue para a sua conta de armazenamento recém-criada.

  2. Selecione o link Contêineres no painel do lado esquerdo, na guia Serviço de blob.

  3. Selecione + Contêiner na parte superior da página e, em seguida, um painel Novo contêiner será exibido.

  4. Forneça um nome ao contêiner, selecione um nível de acesso e selecione OK. Mais à frente nesse tutorial, você vai precisar do nome que especificou.

    Captura de tela mostrando a criação de um contêiner de armazenamento.

Conceder acesso de identidade gerenciada atribuído pelo sistema da VM para usar as chaves de acesso da conta de armazenamento

O Armazenamento do Azure não dá suporte nativo à autenticação do Microsoft Entra. No entanto, você pode usar sua identidade gerenciada atribuída pelo sistema da VM para recuperar uma SAS de armazenamento do Resource Manager e usar a SAS para acessar o armazenamento. Nesta etapa, você concede o acesso à identidade gerenciada atribuída pelo sistema da VM à sua conta de armazenamento SAS. Conceda acesso atribuindo a função de Colaborador da Conta de Armazenamento à identidade gerenciada no escopo do grupo de recursos que contém a sua conta de armazenamento.

Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.

Observação

Para obter mais informações sobre as várias funções que você pode usar para conceder permissões para o armazenamento, reviseAutorizar o acesso a blobs e filas usando o Microsoft Entra ID.

Obter um token de acesso usando a identidade da máquina virtual e usá-la para chamar o Azure Resource Manager

Para o restante do tutorial, trabalharemos na VM que criamos anteriormente.

Para concluir essas etapas, você precisará do cliente SSH. Se você estiver usando o Windows, poderá usar o cliente SSH no Subsistema do Windows para Linux. Se precisar de ajuda para configurar as chaves do cliente SSH, confira Como usar chaves SSH com o Windows no Azure, ou Como criar e usar um par de chaves SSH pública e privada para VMs Linux no Azure.

  1. No portal do Azure, navegue até Máquinas Virtuais, selecione sua máquina virtual do Linux e, na página Visão geral, selecione Conectar na parte superior. Copie a cadeia de caracteres para conectar-se à VM.

  2. Conecte-se à VM usando um cliente SSH.

  3. Em seguida, insira a Senha que você adicionou durante a criação da VM do Linux.

  4. Use o CURL para obter um token de acesso para o Azure Resource Manager.

    A solicitação CURL e a resposta para o token de acesso está abaixo:

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true
    

    Observação

    Na solicitação anterior, o valor do parâmetro "resource" deve ser uma correspondência exata do que é esperado pelo Microsoft Entra ID. Ao usar a ID de recurso do Azure Resource Manager, você deve incluir a barra à direita no URI. Na resposta seguinte, o elemento access_token foi reduzido para fins de brevidade.

    {
      "access_token": "eyJ0eXAiOiJ...",
      "refresh_token": "",
      "expires_in": "3599",
      "expires_on": "1504130527",
      "not_before": "1504126627",
      "resource": "https://management.azure.com",
      "token_type": "Bearer"
    }
    

Obter chaves de acesso da conta de armazenamento do Azure Resource Manager para realizar chamadas de armazenamento

Agora, usaremos CURL para fazer uma chamada ao Resource Manager usando o token de acesso recuperado na seção anterior para recuperar a chave de acesso de armazenamento. Assim que tivermos a chave de acesso de armazenamento, podemos chamar as operações de upload/download de armazenamento. Substitua os parâmetros <SUBSCRIPTION ID>, <RESOURCE GROUP> e <STORAGE ACCOUNT NAME> pelos seus próprios valores. Substitua o valor <ACCESS TOKEN> pelo token de acesso que você recuperou anteriormente:

curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listKeys?api-version=2016-12-01 --request POST -d "" -H "Authorization: Bearer <ACCESS TOKEN>" 

Observação

O texto na URL anterior diferencia maiúsculas de minúsculas, portanto, verifique se você está usando letras maiúsculas e minúsculas para os Grupos de Recursos refletirem-nas adequadamente. Além disso, é importante saber que se trata de uma solicitação POST, não uma solicitação GET, e passe um valor para capturar um limite de comprimento com -d que pode ser NULL.

A resposta de CURL fornece a lista de chaves:

{"keys":[{"keyName":"key1","permissions":"Full","value":"iqDPNt..."},{"keyName":"key2","permissions":"Full","value":"U+uI0B..."}]} 

Crie um arquivo de blob de exemplo para carregar o contêiner de armazenamento de blobs. Em uma VM do Linux, você pode fazer isso com o seguinte comando.

echo "This is a test file." > test.txt

Em seguida, autentique com o comando az storage da CLI usando a chave de acesso de armazenamento e carregue o arquivo para o contêiner de blob. Nesta etapa, você precisará instalar a CLI do Azure mais recente na sua VM, caso ainda não tenha feito isso.

az storage blob upload -c <CONTAINER NAME> -n test.txt -f test.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>

Resposta:

Finished[#############################################################]  100.0000%
{
  "etag": "\"0x8D4F9929765C139\"",
  "lastModified": "2017-09-12T03:58:56+00:00"
}

Além disso, baixe o arquivo usando a CLI do Azure e autentique com a chave de acesso de armazenamento.

Solicitação:

az storage blob download -c <CONTAINER NAME> -n test.txt -f test-download.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>

Resposta:

{
  "content": null,
  "metadata": {},
  "name": "test.txt",
  "properties": {
    "appendBlobCommittedBlockCount": null,
    "blobType": "BlockBlob",
    "contentLength": 21,
    "contentRange": "bytes 0-20/21",
    "contentSettings": {
      "cacheControl": null,
      "contentDisposition": null,
      "contentEncoding": null,
      "contentLanguage": null,
      "contentMd5": "LSghAvpnElYyfUdn7CO8aw==",
      "contentType": "text/plain"
    },
    "copy": {
      "completionTime": null,
      "id": null,
      "progress": null,
      "source": null,
      "status": null,
      "statusDescription": null
    },
    "etag": "\"0x8D5067F30D0C283\"",
    "lastModified": "2017-09-28T14:42:49+00:00",
    "lease": {
      "duration": null,
      "state": "available",
      "status": "unlocked"
    },
    "pageBlobSequenceNumber": null,
    "serverEncrypted": false
  },
  "snapshot": null
}

Usar uma identidade gerenciada atribuída pelo sistema da VM do Linux para acessar o Azure Key Vault

Este tutorial mostra como uma VM (máquina virtual) do Linux pode usar uma identidade gerenciada atribuída pelo sistema para acessar o Azure Key Vault. O Key Vault possibilita que seu aplicativo cliente use um segredo para acessar recursos não protegidos pelo Microsoft Entra ID. As Identidades de Serviço Gerenciadas são gerenciadas automaticamente pelo Azure e permitem a você autenticar os serviços compatíveis com a autenticação do Microsoft Entra sem incluir informações de autenticação em seu código.

Você aprenderá a:

  • Conceda o acesso da máquina virtual a um segredo armazenado em um Key Vault
  • Obtenha um token de acesso usando a identidade da VM e use-o para recuperar o segredo do Key Vault

Criar um cofre de chaves

Você também precisa de uma Máquina Virtual do Linux com as identidades gerenciadas atribuídas ao sistema habilitadas.

Dica

As etapas neste artigo podem variar ligeiramente com base no portal do qual você começa.

Esta seção mostra como conceder à sua VM acesso a um segredo armazenado em um Key Vault. Usando as identidades gerenciadas para recursos do Azure, seu código pode obter tokens de acesso para se autenticar nos recursos que dão suporte à autenticação do Microsoft Entra.

No entanto, nem todos os serviços do Azure dão suporte à autenticação do Microsoft Entra. Para usar identidades gerenciadas para recursos do Azure com esses serviços, armazene as credenciais de serviço no Azure Key Vault e use a identidade gerenciada da VM para acessar o Key Vault para recuperar as credenciais.

Em primeiro lugar, você precisa criar um Key Vault e conceder à identidade gerenciada atribuída pelo sistema da sua VM acesso ao Key Vault.

  1. Entre no portal do Azure.

  2. Na parte superior da barra de navegação esquerda, selecione Criar um recurso.

  3. Na caixa Pesquisar no Marketplace, digite Key Vault e pressione Enter.

  4. Selecione Key Vault nos resultados.

  5. Selecione Criar.

  6. Forneça um Nome para o novo cofre de chaves.

    Captura de tela mostrando a tela de criação do Azure Key Vault.

  7. Preencha todas as informações necessárias, escolhendo a assinatura e o grupo de recursos em que você criou a máquina virtual que está usando para este tutorial.

  8. Selecione Revisar + Criar e, a seguir, Criar.

Criar um segredo

Em seguida, você precisará adicionar um segredo ao Key Vault, para poder recuperá-lo mais tarde usando o código que está em execução na sua VM. Nessa seção, você usará o PowerShell. Mas os mesmos conceitos se aplicam a qualquer código em execução nessa máquina virtual.

  1. Navegue até o Key Vault recém-criado.

  2. Selecione Segredos e, em seguida, Ações.

  3. Selecione Gerar/Importar.

  4. Na seção Criar um segredo, vá para Opções de carregamento e certifique-se de que Manual esteja selecionado.

  5. Insira um nome e um valor para o segredo.  O valor pode ser qualquer coisa que você desejar. 

  6. Deixe a data de ativação e a data de expiração desmarcadas e certifique-se de que Habilitado esteja definido como Sim

  7. Selecione Criar para criar o segredo.

    Captura de tela mostrando a criação de segredo.

Conceder acesso

A identidade gerenciada usada pela máquina virtual precisa de acesso para ler o segredo armazenado no Key Vault.

  1. Navegue até o Key Vault recém-criado.

  2. Selecione Política de Acesso no painel de navegação à esquerda.

  3. Selecione Adicionar Política de Acesso.

    Captura de tela da tela criar política de acesso do cofre de chaves.

  4. Na seção Adicionar política de acesso, em Configurar a partir do modelo (opcional), escolha Gerenciamento de Segredos no menu suspenso.

  5. Escolha Selecionar Entidade de Segurança e a seguir, no campo de pesquisa, insira o nome da VM que você criou anteriormente.  Selecione a VM na lista de resultados e, a seguir, Selecionar.

  6. Selecione Adicionar.

  7. Clique em Salvar.

Acessar dados

Para concluir essas etapas, você precisará do cliente SSH.  Se você estiver usando o Windows, poderá usar o cliente SSH no Subsistema do Windows para Linux. Se precisar de ajuda para configurar as chaves do cliente SSH, confira Como usar chaves SSH com o Windows no Azure, ou Como criar e usar um par de chaves SSH pública e privada para VMs Linux no Azure.

Importante

Todos os SDKs do Azure dão suporte à biblioteca Azure.Identity, que facilita a aquisição de tokens do Microsoft Entra para acessar os serviços de destino. Saiba mais sobre os SDKs do Azure e sobre o acesso à biblioteca Azure.Identity.

  1. No portal, navegue até a VM do Linux e em Visão geral, selecione Conectar
  2. Conecte-se à VM com um cliente SSH de sua escolha. 
  3. Na janela do terminal, use o cURL para fazer uma solicitação às identidades gerenciadas locais do ponto de extremidade de recursos do Azure para obter um token de acesso ao Azure Key Vault.   A solicitação CURL para o token de acesso está abaixo.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true
  ```
The response includes the access token you need to access Resource Manager. 
  
Response:
  
```bash
{"access_token":"eyJ0eXAi...",
"refresh_token":"",
"expires_in":"3599",
"expires_on":"1504130527",
"not_before":"1504126627",
"resource":"https://vault.azure.net",
"token_type":"Bearer"} 

Você pode usar esse token de acesso para autenticar o Azure Key Vault.  A próxima solicitação CURL mostra como ler um segredo do Key Vault usando CURL e a API REST do Key Vault.  Você precisa da URL do Key Vault, que está na seção Informações gerais da página Visão geral do Key Vault.  Você também precisa do token de acesso obtido na chamada anterior. 

curl 'https://<YOUR-KEY-VAULT-URL>/secrets/<secret-name>?api-version=2016-10-01' -H "Authorization: Bearer <ACCESS TOKEN>" 

A resposta tem esta aparência:

{"value":"p@ssw0rd!","id":"https://mytestkeyvault.vault.azure.net/secrets/MyTestSecret/7c2204c6093c4d859bc5b9eff8f29050","attributes":{"enabled":true,"created":1505088747,"updated":1505088747,"recoveryLevel":"Purgeable"}} 

Depois de recuperar o segredo do Key Vault, você pode usá-lo para autenticar em um serviço que requer um nome e uma senha.

Limpar os recursos

Quando estiver pronto para limpar os recursos, entre no portal do Azure, selecione Grupos de recursos e, em seguida, localize e selecione o grupo de recursos que foi criado no processo desse tutorial, como, por exemplo, mi-test. Você pode usar o comando Excluir grupo de recursos ou fazê-lo por meio do PowerShell ou CLI.

Usar uma identidade gerenciada de VM do Linux atribuída pelo sistema para acessar um grupo de recursos no Resource Manager

Dica

As etapas neste artigo podem variar ligeiramente com base no portal do qual você começa.

Esse tutorial explica como criar uma identidade atribuída pelo sistema, atribuí-la a uma Máquina Virtual (VM) do Linux e, em seguida, usar essa identidade para acessar a API do Azure Resource Manager. Identidade do Serviço Gerenciado são gerenciadas automaticamente pelo Azure. Elas permitem que a autenticação para serviços compatíveis com a autenticação do Microsoft Entra, sem a necessidade de inserir as credenciais em seu código.

Você aprenderá como:

  • Conceda à sua VM acesso ao Azure Resource Manager.
  • Obtenha um token de acesso usando a identidade gerenciada da VM atribuída pelo sistema para acessar o Resource Manager.
  1. Entre no Portal do Azure com sua conta de administrador.

  2. Navegue até a guia Grupos de Recursos.

  3. Selecione o Grupo de Recursos que você quer conceder acesso à identidade gerenciada da VM.

  4. No painel esquerdo, selecione Controle de acesso (IAM).

  5. Selecione Adicionar e Adicionar atribuição de função.

  6. Na guia Função, selecione Leitor. Essa função permite exibir todos os recursos, mas não permite que você faça alterações.

  7. Na guia Membros, na opção Atribuir acesso a, selecione Identidade gerenciada e, em seguida, selecione + Selecionar membros.

  8. Certifique-se de que a assinatura correta esteja listada na lista suspensa Assinatura. Quanto ao Grupo de Recursos, selecione Todos os grupos de recursos.

  9. Na lista suspensa Gerenciar identidade, selecione Máquina Virtual.

  10. Na opção Selecionar, escolha a sua VM na lista suspensa e, em seguida, selecione Salvar.

    Captura de tela mostrando a adição da função de leitor à identidade gerenciada.

Obter um token de acesso

Use a identidade gerenciada da VM atribuída pelo sistema e chame o Resource Manager para obter um token de acesso.

Para concluir essas etapas, você precisará do cliente SSH. Se estiver usando o Windows, você poderá usar o cliente SSH no Subsistema do Windows para Linux. Se precisar de ajuda para configurar as chaves do cliente SSH, confira Como usar chaves SSH com o Windows no Azure, ou Como criar e usar um par de chaves SSH pública e privada para VMs Linux no Azure.

  1. No portal do Azure, navegue até a sua VM do Linux.
  2. Na Visão geral, selecione Conectar.
  3. Conecte-se à VM com um cliente SSH de sua escolha.
  4. Na janela do terminal, usando curl, faça uma solicitação às identidades gerenciadas locais do ponto de extremidade de recursos do Azure para obter um token de acesso ao Azure Resource Manager.   A solicitação do curl para o token de acesso é mostrada abaixo.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

Observação

O valor do parâmetro resource deve ser uma correspondência exata para o que é esperado pela ID do Microfone Entra. No caso da ID do recurso Resource Manager, você precisa incluir uma barra oblíqua no final do URI.

A resposta inclui o token de acesso necessário para acessar o Azure Resource Manager.

Resposta:

{
  "access_token":"eyJ0eXAiOi...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

Use esse token de acesso para acessar o Azure Resource Manager. Por exemplo, para ler os detalhes do grupo de recursos ao qual você anteriormente concedeu acesso para essa VM. Substitua os valores de <SUBSCRIPTION-ID>, <RESOURCE-GROUP> e <ACCESS-TOKEN> por aqueles que você criou anteriormente.

Observação

A URL diferencia maiúsculas de minúsculas, então certifique-se de usar maiúsculas e minúsculas exatamente como você usou anteriormente quando nomeou o grupo de recursos, além do "G" em maiúscula em resourceGroup.

curl https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS-TOKEN>" 

A resposta retorna com as informações específicas do grupo de recursos:

{
"id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DevTest",
"name":"DevTest",
"location":"westus",
"properties":
{
  "provisioningState":"Succeeded"
  }
} 

Usar uma identidade gerenciada de VM do Linux atribuída pelo usuário para acessar um grupo de recursos no Resource Manager

Dica

As etapas neste artigo podem variar ligeiramente com base no portal do qual você começa.

Esse tutorial explica como criar uma identidade atribuída pelo usuário, atribuí-la a uma Máquina Virtual (VM) do Linux e, em seguida, usar essa identidade para acessar a API do Azure Resource Manager. Identidade do Serviço Gerenciado são gerenciadas automaticamente pelo Azure. Elas permitem que a autenticação para serviços compatíveis com a autenticação do Microsoft Entra, sem a necessidade de inserir as credenciais em seu código.

Você aprenderá a:

  • Conceda à sua VM acesso ao Azure Resource Manager.
  • Obtenha um token de acesso usando a identidade gerenciada da VM atribuída pelo sistema para acessar o Resource Manager.

Crie uma identidade gerenciada atribuída ao usuário usando az identity create. O parâmetro -g especifica o grupo de recursos em que a identidade gerenciada atribuída pelo usuário é criada e o parâmetro -n especifica o nome. Substitua os valores de parâmetro <RESOURCE GROUP> e <UAMI NAME> pelos seus próprios valores:

Importante

Ao criar identidades gerenciadas atribuídas pelo usuário, o nome deve começar com uma letra ou número e pode incluir uma combinação de caracteres alfanuméricos, hifens (-) e sublinhados (_). Para que a atribuição a uma máquina virtual ou um conjunto de dimensionamento de máquinas virtuais funcione corretamente, o nome é limitado a 24 caracteres. Para mais informações, consulte Perguntas frequentes e problemas conhecidos

az identity create -g <RESOURCE GROUP> -n <UAMI NAME>

A resposta contém detalhes para a identidade gerenciada atribuída pelo usuário criada, semelhante ao exemplo a seguir. Anote o valor id para sua identidade gerenciada atribuída pelo usuário, pois ela será usada na próxima etapa:

{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"clientSecretUrl": "https://control-westcentralus.identity.azure.net/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>/credentials?tid=5678&oid=9012&aid=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"id": "/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>",
"location": "westcentralus",
"name": "<UAMI NAME>",
"principalId": "9012",
"resourceGroup": "<RESOURCE GROUP>",
"tags": {},
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

Atribuir uma identidade à VM do Linux

Uma identidade gerenciada atribuída pelo usuário pode ser usada por clientes em vários recursos do Azure. Use os comandos a seguir para atribuir a identidade gerenciada atribuída pelo usuário a uma única VM. Use a propriedade Id retornada na etapa anterior para o valor do parâmetro -IdentityID.

Atribuir a identidade gerenciada atribuída pelo usuário à sua VM do Linux usando az vm identity assign. Substitua os valores de parâmetro <RESOURCE GROUP> e <VM NAME> pelos seus próprios valores. Use a propriedade id retornada na etapa anterior para o valor do parâmetro --identities.

az vm identity assign -g <RESOURCE GROUP> -n <VM NAME> --identities "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>"

Conceder acesso a um grupo de recursos no Azure Resource Manager

Identidades gerenciadas são identidades que seu código pode usar para solicitar tokens de acesso para autenticação em APIs de recursos que dão suporte à autenticação do Microsoft Entra. Neste tutorial, seu código acessará a API do Azure Resource Manager.

Antes que seu código possa acessar a API, você precisa conceder o acesso de identidade a um recurso no Azure Resource Manager. Nesse caso, o grupo de recursos no qual a VM está contida. Atualize o valor de <SUBSCRIPTION ID> e <RESOURCE GROUP> conforme apropriado para seu ambiente. Além disso, substitua <UAMI PRINCIPALID> pela propriedade principalId retornada pelo comando az identity create em Criar uma identidade gerenciada atribuída pelo usuário:

az role assignment create --assignee <UAMI PRINCIPALID> --role 'Reader' --scope "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP> "

A resposta contém detalhes para a atribuição de função criada, semelhante ao exemplo a seguir:

{
  "id": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
  "name": "00000000-0000-0000-0000-000000000000",
  "properties": {
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
    "roleDefinitionId": "/subscriptions/<SUBSCRIPTION ID>/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
    "scope": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>"
  },
  "resourceGroup": "<RESOURCE GROUP>",
  "type": "Microsoft.Authorization/roleAssignments"
}

Obter um token de acesso utilizando a identidade da VM e usá-la para chamar o Resource Manager

Dica

As etapas neste artigo podem variar ligeiramente com base no portal do qual você começa.

Para o restante do tutorial, você vai trabalhar na VM que criou anteriormente.

Para concluir essas etapas, você precisará do cliente SSH. Se você estiver usando o Windows, poderá usar o cliente SSH no Subsistema do Windows para Linux.

  1. Entre no portal do Azure.

  2. No portal, navegue até Máquinas Virtuais e vá para a máquina virtual do Linux e, em Visão geral, clique em Conectar. Copie a cadeia de caracteres para conectar-se à VM.

  3. Conecte-se à VM com um cliente SSH de sua escolha. Se você estiver usando o Windows, poderá usar o cliente SSH no Subsistema do Windows para Linux. Se precisar de ajuda para configurar as chaves do cliente SSH, confira Como usar chaves SSH com o Windows no Azure, ou Como criar e usar um par de chaves SSH pública e privada para VMs Linux no Azure.

  4. Na janela de terminal, use a CURL, para fazer uma solicitação para o ponto de extremidade do IMDS (Serviço de Metadados de Instância) do Azure para obter um token de acesso para o Azure Resource Manager.

    A solicitação CURL para adquirir um token de acesso é mostrada no exemplo a seguir. Substitua <CLIENT ID> pela propriedade clientId retornada pelo comando az identity create em Criar uma identidade gerenciada atribuída pelo usuário:

    curl -H Metadata:true "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com/&client_id=<UAMI CLIENT ID>"
    

    Observação

    O valor do parâmetro resource deve ser uma correspondência exata para o que é esperado pela ID do Microfone Entra. Ao usar a ID de recurso do Resource Manager, você deve incluir a barra à direita no URI.

    A resposta inclui o token de acesso que você precisa para acessar o Azure Resource Manager.

    Exemplo de resposta:

    {
    "access_token":"eyJ0eXAiOi...",
    "refresh_token":"",
    "expires_in":"3599",
    "expires_on":"1504130527",
    "not_before":"1504126627",
    "resource":"https://management.azure.com",
    "token_type":"Bearer"
    } 
    
  5. Use o token de acesso para acessar o Azure Resource Manager e leia as propriedades do grupo de recursos ao qual você anteriormente concedeu o acesso à sua identidade gerenciada atribuída pelo usuário. Substitua <SUBSCRIPTION ID> e <RESOURCE GROUP> pelos valores que você especificou anteriormente e <ACCESS TOKEN> pelo token retornado na etapa anterior.

    Observação

    A URL diferencia maiúsculas de minúsculas, então se certifique de usar maiúsculas e minúsculas exatamente como você usou anteriormente quando nomeou o grupo de recursos, além do "G" em maiúscula em resourceGroups.

    curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS TOKEN>" 
    

    A resposta contém as informações do grupo de recursos específico, algo semelhante ao exemplo a seguir:

    {
    "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/DevTest",
    "name":"DevTest",
    "location":"westus",
    "properties":{"provisioningState":"Succeeded"}
    } 
    

Saiba mais