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
- Conhecimento das identidades gerenciadas. Se você não estiver familiarizado com as identidades gerenciadas para funcionalidades de recursos do Azure, veja esta visão geral.
- Uma conta do Azure, inscreva-se para obter uma conta gratuita.
- As permissões de proprietário no escopo apropriado (sua assinatura ou grupo de recursos) para executar as etapas necessárias de criação de recursos e gerenciamento de funções. Se precisar de ajuda com a atribuição de função, confira Atribuir funções do Azure para gerenciar o acesso aos recursos de assinatura do Azure.
- Uma Máquina Virtual (VM) do Linux com as identidades gerenciadas atribuídas pelo sistema habilitadas.
- Caso precise criar uma VM para esse tutorial, confira Criar uma máquina virtual com a identidade atribuída pelo sistema habilitada.
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:
- No portal do Azure, selecione Data Lake Store no painel esquerdo.
- Selecione a instância Data Lake Store que você deseja usar.
- Selecione Data Explorer na barra de comandos.
- A pasta raiz da instância Data Lake Store é selecionada. Selecione Acesso na barra de comandos.
- 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.
- 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.
- Feche o painel Acesso.
- 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.
- Selecione a pasta que você criou e, a seguir, selecione Acesso na barra de comandos.
- Selecione Adicionar e a seguir, na caixa Selecionar, insira o nome da sua VM.
- Selecione sua VM nos resultados da pesquisa e, a seguir, escolha Selecionar.
- Selecione Selecionar Permissões, em seguida selecione Leitura e, a seguir, Gravar e Executar.
- 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.
No portal, navegue até sua VM do Linux e, na seção Visão geral, selecione Conectar.
Conecte-se à VM usando um cliente SSH de sua escolha.
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"}
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"}]}}
Agora, carregue um arquivo na sua instância do Data Lake Store. Primeiramente, crie um arquivo para ser carregado.
echo "Test file." > Test1.txt
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:
- Usar o Azure Cloud Shell, seja pelo portal do Azure ou por meio do botão Experimentar, localizado no canto superior direito de cada bloco de código.
- Instale a versão mais recente da CLI 2.0 (2.0.23 ou posterior) se preferir usar um console local da CLI.
Primeiro, crie uma conta de armazenamento.
Selecione o botão Criar um recurso, localizado no canto superior esquerdo do portal do Azure.
Clique em Armazenamento e, em seguida, Conta de armazenamento – blob, arquivo, tabela, fila.
Sob Nome, insira um nome para a conta de armazenamento.
Modelo de implantação e Tipo de conta devem ser definidos como Resource manager e Armazenamento (uso geral v1) .
Verifique se a Assinatura e o Grupo de Recursos correspondem ao que você especificou quando criou sua VM na etapa anterior.
Selecione Criar.
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.
Navegue para a sua conta de armazenamento recém-criada.
Selecione Serviço de Blob e, em seguida, Contêineres.
Selecione + Contêiner na parte superior da página.
Selecione Novo contêiner e, em seguida, insira um nome para o contêiner.
Certifique-se de que o Nível de acesso público esteja no valor padrão.
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.
Selecione o nome do contêiner e, em seguida Carregar. Essa opção irá carregar o arquivo no contêiner recém-criado.
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.
Selecione o arquivo e, a seguir, selecione Carregar.
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.
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.
Conecte-se à VM com um cliente SSH de sua escolha.
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
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.
Selecione o botão +/Criar novo serviço localizado no canto superior esquerdo do portal do Azure.
Selecione Armazenamento e, em seguida, Conta de Armazenamento. A seguir, o painel Criar conta de armazenamento será exibido.
Insira um Nome para a conta de armazenamento. Lembre-se desse nome, porque você precisará dele mais tarde.
Verifique se o Modelo de implantação está definido como Resource Manager e se o Tipo de conta está definido como Uso geral.
Certifique-se de que a Assinatura e o Grupo de Recursos correspondem aos que você especificou quando criou sua VM.
Selecione Criar para concluir a criação de uma 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.
Navegue para a sua conta de armazenamento recém-criada.
Selecione o link Contêineres no painel do lado esquerdo, na guia Serviço de blob.
Selecione + Contêiner na parte superior da página e, em seguida, um painel Novo contêiner será exibido.
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.
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:
- Como usar chaves SSH com o Windows no Azure
- Como criar e usar um par de chaves SSH pública e privada para VMs Linux no Azure.
Assim que tiver seu cliente SSH, siga essas etapas:
- No portal do Azure, navegue até Máquinas Virtuais e, a seguir, vá para a sua máquina virtual do Linux.
- Na página Visão geral, selecione Conectar na parte superior da tela.
- Copie a cadeia de caracteres para conectar-se à VM.
- Conecte-se à VM usando um cliente SSH.
- Insira a Senha que você adicionou quando criou a VM do Linux. Assim, você deve se conectar com êxito.
- 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.
Selecione o botão +/Criar novo serviço localizado no canto superior esquerdo do portal do Azure.
Selecione Armazenamento e, em seguida, Conta de Armazenamento. A seguir, o painel Criar conta de armazenamento será exibido.
Insira um Nome para a conta de armazenamento. Lembre-se desse nome, porque você precisará dele mais tarde.
Verifique se o Modelo de implantação está definido como Resource Manager e se o Tipo de conta está definido como Uso geral.
Certifique-se de que a Assinatura e o Grupo de Recursos correspondem aos que você especificou quando criou sua VM.
Selecione Criar para concluir a criação de uma 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.
Navegue para a sua conta de armazenamento recém-criada.
Selecione o link Contêineres no painel do lado esquerdo, na guia Serviço de blob.
Selecione + Contêiner na parte superior da página e, em seguida, um painel Novo contêiner será exibido.
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.
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.
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.
Conecte-se à VM usando um cliente SSH.
Em seguida, insira a Senha que você adicionou durante a criação da VM do Linux.
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.
- Se for preciso criar uma máquina virtual para este tutorial, siga o artigo intitulado Criar uma máquina virtual Linux com o portal do Azure
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.
Entre no portal do Azure.
Na parte superior da barra de navegação esquerda, selecione Criar um recurso.
Na caixa Pesquisar no Marketplace, digite Key Vault e pressione Enter.
Selecione Key Vault nos resultados.
Selecione Criar.
Forneça um Nome para o novo cofre de chaves.
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.
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.
Navegue até o Key Vault recém-criado.
Selecione Segredos e, em seguida, Ações.
Selecione Gerar/Importar.
Na seção Criar um segredo, vá para Opções de carregamento e certifique-se de que Manual esteja selecionado.
Insira um nome e um valor para o segredo. O valor pode ser qualquer coisa que você desejar.
Deixe a data de ativação e a data de expiração desmarcadas e certifique-se de que Habilitado esteja definido como Sim.
Selecione Criar para criar o segredo.
Conceder acesso
A identidade gerenciada usada pela máquina virtual precisa de acesso para ler o segredo armazenado no Key Vault.
Navegue até o Key Vault recém-criado.
Selecione Política de Acesso no painel de navegação à esquerda.
Selecione Adicionar Política de Acesso.
Na seção Adicionar política de acesso, em Configurar a partir do modelo (opcional), escolha Gerenciamento de Segredos no menu suspenso.
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.
Selecione Adicionar.
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.
- No portal, navegue até a VM do Linux e em Visão geral, selecione Conectar.
- Conecte-se à VM com um cliente SSH de sua escolha.
- 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.
Entre no Portal do Azure com sua conta de administrador.
Navegue até a guia Grupos de Recursos.
Selecione o Grupo de Recursos que você quer conceder acesso à identidade gerenciada da VM.
No painel esquerdo, selecione Controle de acesso (IAM).
Selecione Adicionar e Adicionar atribuição de função.
Na guia Função, selecione Leitor. Essa função permite exibir todos os recursos, mas não permite que você faça alterações.
Na guia Membros, na opção Atribuir acesso a, selecione Identidade gerenciada e, em seguida, selecione + Selecionar membros.
Certifique-se de que a assinatura correta esteja listada na lista suspensa Assinatura. Quanto ao Grupo de Recursos, selecione Todos os grupos de recursos.
Na lista suspensa Gerenciar identidade, selecione Máquina Virtual.
Na opção Selecionar, escolha a sua VM na lista suspensa e, em seguida, selecione Salvar.
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.
- No portal do Azure, navegue até a sua VM do Linux.
- Na Visão geral, selecione Conectar.
- Conecte-se à VM com um cliente SSH de sua escolha.
- 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 docurl
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.
Entre no portal do Azure.
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.
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.
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 propriedadeclientId
retornada pelo comandoaz 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" }
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"} }