Tutorial: Usar uma VM/VMSS 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 suportam as identidades geridas para os recursos do Azure estão sujeitos à sua própria linha de tempo. Certifique-se de que revê o estado de disponibilidade das identidades geridas para o seu recurso e problemas conhecidos antes de começar.
Pré-requisitos
- Uma compreensão das identidades gerenciadas. Se não estiver familiarizado com a funcionalidade das identidades geridas para os recursos do Azure, veja esta descrição geral.
- Uma conta do Azure, inscreva-se para obter uma conta gratuita.
- 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ções, consulte Atribuir funções do Azure para gerir o acesso aos seus recursos de subscrição do Azure.
- Uma máquina virtual (VM) Linux que tem identidades gerenciadas atribuídas ao sistema habilitadas.
- Se você precisar criar uma VM para este tutorial, consulte Criar uma máquina virtual com a identidade atribuída ao sistema habilitada.
Utilizar a identidade gerida atribuída pelo sistema da VM do Linux para aceder ao Azure Data Lake Store
Este tutorial mostra como usar uma identidade gerenciada atribuída pelo sistema para uma máquina virtual (VM) Linux para acessar o Azure Data Lake Store.
Saberá como:
- Conceder acesso à VM ao Azure Data Lake Store.
- Obter um token de acesso com a identidade gerida atribuída pelo sistema da VM e utilizá-lo para aceder ao Azure Data Lake Store.
Conceder acesso
Esta seção mostra como conceder à sua VM acesso a arquivos e pastas no Azure Data Lake Store. Neste passo, pode utilizar uma instância existente do Data Lake Store ou criar uma nova. Para criar uma instância do Data Lake Store com o portal do Azure, siga o Início rápido do Azure Data Lake Store. Também existem inícios rápidos que utilizam a CLI do Azure e o Azure PowerShell na Documentação do Azure Data Lake Store.
No Repositório Data Lake, crie uma nova pasta e conceda à identidade gerenciada atribuída pelo sistema Linux VM permissão para ler, gravar e executar arquivos nessa pasta:
- No portal do Azure, selecione Data Lake Store no painel esquerdo.
- Selecione a instância do Data Lake Store que pretende utilizar.
- Selecione Data Explorer na barra de comandos.
- A pasta raiz da instância do Data Lake Store fica selecionada. Selecione Acesso na barra de comandos.
- Selecione Adicionar. Na caixa Selecionar, digite o nome da sua VM, por exemplo, DevTestVM. Selecione a sua VM nos resultados da pesquisa e, em seguida, selecione Selecionar.
- Selecione Selecionar Permissões. Selecione Ler e Executar, adicionar a Esta pasta, adicionar como Apenas uma permissão de acesso e, em seguida, selecione Ok. A permissão deve ser adicionada com êxito.
- Feche o painel Acesso.
- Crie uma nova pasta, selecione Nova pasta na barra de comandos e dê um nome à nova pasta, por exemplo, TestFolder e, em seguida, selecione Ok.
- Selecione a pasta que criou e, em seguida, selecione Acesso na barra de comandos.
- Selecione Adicionar e, em seguida, na caixa Selecionar , introduza o nome da sua VM.
- Selecione a sua VM nos resultados da pesquisa e, em seguida, selecione Selecionar.
- Selecione Selecionar Permissões, selecione Ler e, em seguida , Gravar e Executar.
- Selecione para adicionar a Esta pasta, adicione como Uma entrada de permissão de acesso e uma entrada de permissão padrão e, em seguida, selecione Ok. A permissão deve ser adicionada com êxito.
As identidades geridas para recursos do Azure podem agora realizar todas as operações nos ficheiros da pasta que criou. Para obter mais informações sobre como gerir o acesso ao Data Lake Store, veja Controlo 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 Repositório Data Lake. O Azure Data Lake Store dá suporte nativo à autenticação do Microsoft Entra, para que ele possa aceitar diretamente tokens de acesso obtidos por meio do uso de identidades gerenciadas para recursos do Azure.
Para autenticar no sistema de arquivos do Repositório Data Lake, envie um token de acesso emitido pela ID do Microsoft Entra para o ponto de extremidade do sistema de arquivos do Repositório Data Lake. 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 Repositório Data Lake para autenticação do Microsoft Entra, consulte Autenticação com o Repositório Data Lake usando a ID do Microsoft Entra.
Em seguida, você se autentica na API REST para o sistema de arquivos do Repositório Data Lake usando cURL para fazer solicitações REST.
Nota
Os SDKs cliente para o sistema de ficheiros do Data Lake Store ainda não suportam identidades geridas para recursos do Azure.
Para concluir estes passos, precisa de um cliente SSH. Se estiver a utilizar o Windows, pode utilizar o cliente SSH no Subsistema Windows para Linux. Se precisar de ajuda para configurar as chaves do seu cliente SSH, veja Como utilizar chaves SSH com o Windows no Azure, ou Como criar e utilizar um par de chaves SSH públicas e privadas para VMs do Linux no Azure.
No portal, navegue até sua VM Linux e, em seguida, na seção Visão geral , selecione Conectar.
Ligue à VM através do cliente SSH que escolher.
Na janela do terminal, usando cURL faça uma solicitação para as identidades gerenciadas locais Azure para o ponto de extremidade de recursos do Azure para obter um token de acesso para o sistema de arquivos do Repositório Data Lake. O identificador de recurso para o Repositório Data Lake é
https://datalake.azure.net/
. É importante incluir a barra à direita no identificador de recurso.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 com êxito devolve o token de acesso que utiliza para autenticar para o 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"}
Com o cURL, faça um pedido ao ponto final REST do sistema de ficheiros do Data Lake Store para listar as pastas na pasta raiz. Esta é a melhor maneira de verificar se tudo está configurado corretamente. Copie o valor do token de acesso do passo anterior. É importante que a cadeia de caracteres
Bearer
no cabeçalho Authorization tenha um "B" maiúsculo. Você pode encontrar o nome da sua instância do Repositório Data Lake na seção Visão geral do painel Repositório Data Lake no portal do Azure.curl https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -H "Authorization: Bearer <ACCESS_TOKEN>"
Uma resposta com sucesso tem o seguinte aspeto:
{"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 para sua instância do Repositório Data Lake. Primeiro, crie um ficheiro para carregar.
echo "Test file." > Test1.txt
Com o cURL, faça um pedido ao ponto final REST do sistema de ficheiros do Data Lake Store para carregar o ficheiro para a pasta que 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 com sucesso tem o seguinte aspeto:
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
Finalmente, agora você pode usar outras APIs para o sistema de arquivos do Repositório Data Lake para anexar arquivos, baixar arquivos e muito mais.
Utilizar uma identidade gerida atribuída pelo sistema de uma VM do Linux para aceder ao Armazenamento do Azure
Este tutorial mostra-lhe como utilizar uma identidade gerida atribuída pelo sistema para uma máquina virtual (VM) do Linux para aceder ao Armazenamento do Azure.
Saberá como:
- Criar uma conta de armazenamento
- Criar um contentor de blobs numa conta de armazenamento
- Conceder acesso à Identidade Gerida de VM do Linux a um contentor de Armazenamento do Azure
- Obter um token de acesso e utilizá-lo para chamar o Armazenamento do Azure
Criar uma conta de armazenamento
Para executar os scripts da CLI neste exemplo, você tem duas opções:
- Use o Azure Cloud Shell no portal do Azure ou por meio do botão Experimentar , localizado no canto superior direito de cada bloco de código.
- Instalar a versão mais recente da CLI 2.0 (2.0.23 ou posterior), se preferir utilizar uma consola CLI local.
Primeiro, crie uma conta de armazenamento.
Selecione o botão + Criar um recurso localizado no canto superior esquerdo do portal do Azure.
Selecione Armazenamento e, em seguida , Conta de armazenamento - blob, arquivo, tabela, fila.
Em Nome, introduza um nome para a conta de armazenamento.
O Modelo de implementação e o Tipo de conta devem ser definidos como Gestor de recursos e Armazenamento (fins gerais v1).
Certifique-se de que a Subscrição e o Grupo de Recursos correspondem aos perfis que especificou quando criou a VM no passo anterior.
Selecione Criar.
Criar um contentor de blobs e carregar um ficheiro para a conta de armazenamento
Os ficheiros requerem armazenamento de blobs, por isso tem de criar um contentor de blobs para armazenar o ficheiro. Em seguida, carregue um ficheiro para o contentor de blobs na nova conta de armazenamento.
Navegue até 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 insira um nome para o contêiner.
Certifique-se de que Nível de acesso público é o valor padrão.
Com um editor à sua escolha, crie um ficheiro com o nome hello world.txt no seu computador local. Abra o arquivo e adicione o texto Olá mundo!, e salve-o.
Selecione o nome do contêiner e, em seguida , Carregar. Isso carrega o arquivo para o contêiner recém-criado.
No painel Carregar blob, na seção Arquivos, selecione o ícone de pasta e navegue até o hello_world.txt de arquivos em sua máquina local.
Selecione o ficheiro e, em seguida, selecione Carregar.
Conceder à VM o acesso a um contentor do Armazenamento do Azure
Pode utilizar a identidade gerida da VM para obter os dados no blob de armazenamento do Azure. As identidades gerenciadas para recursos do Azure podem ser usadas para autenticar recursos que dão suporte à 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 sua conta de armazenamento.
Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.
Nota
Para obter mais informações sobre as várias funções que você pode usar para conceder permissões para armazenamento, revise : Autorizar acesso a blobs e filas usando a ID do Microsoft Entra
Obter um token de acesso e utilizá-lo para chamar o Armazenamento do Azure
O Armazenamento do Azure dá suporte nativo à autenticação do Microsoft Entra, portanto, ele pode aceitar diretamente tokens de acesso obtidos usando uma Identidade Gerenciada. Isso faz parte da integração do Armazenamento do Azure com o Microsoft Entra ID e é diferente de fornecer credenciais na cadeia de conexão.
Para concluir os passos seguintes, precisa de trabalhar a partir da VM que criou anteriormente e é necessário um cliente SSH para ligar à mesma.
Se estiver a utilizar o Windows, pode utilizar o cliente SSH no Subsistema Windows para Linux. Se precisar de ajuda para configurar as chaves do seu cliente SSH, veja Como utilizar chaves SSH com o Windows no Azure ou Como criar e utilizar um par de chaves SSH públicas e privadas para VMs do Linux no Azure.
No portal do Azure, navegue até Máquinas Virtuais, vá para sua máquina virtual Linux e, na página Visão geral , selecione Conectar. Copie a cadeia de ligação para ligar à sua VM.
Clique em Ligar para ligar à VM com o cliente SSH que escolheu.
Na janela do terminal, use CURL para fazer uma solicitação ao ponto de extremidade local da Identidade Gerenciada 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 do arquivo de exemplo que você carregou anteriormente no contêiner, substitua os valores de
<STORAGE ACCOUNT>
,<CONTAINER NAME>
e<FILE NAME>
pelos valores especificados 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 inclui o conteúdo do ficheiro:
Hello world! :)
Por fim, você também pode armazenar o token em uma variável e passá-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"
Usar uma identidade gerenciada atribuída ao sistema de VM Linux para acessar o Armazenamento do Azure por meio de uma credencial SAS
Este tutorial mostra como usar uma identidade gerenciada atribuída ao sistema para uma máquina virtual (VM) Linux para obter uma credencial SAS (Assinatura de Acesso Compartilhado) de armazenamento; especificamente, uma credencial SAS de serviço.
Nota
A chave SAS gerada neste tutorial não será restrita/vinculada à VM.
Uma SAS de Serviço concede acesso limitado aos objetos numa conta de armazenamento sem expor as chaves de acesso das contas. O acesso pode ser concedido durante um período limitado e para um serviço específico. Você pode usar uma credencial SAS como de costume ao fazer operações de armazenamento; por exemplo, ao usar o SDK de armazenamento. Neste tutorial, você carregará e baixará um blob usando a CLI de Armazenamento do Azure.
Saberá como:
- Criar uma conta de armazenamento
- Criar um contentor de blobs na conta de armazenamento
- Conceder o acesso da VM a um SAS da conta de armazenamento no Resource Manager
- Obter um token de acesso com a identidade da VM e utilizá-lo para obter o SAS a partir do Resource Manager
Criar uma conta de armazenamento
Se ainda não tiver uma, terá de criar uma conta de armazenamento. Você pode optar por ignorar esta etapa e conceder à identidade gerenciada atribuída ao sistema VM 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, Conta de armazenamento e, em seguida, o painel Criar conta de armazenamento é exibido.
Insira um Nome para a conta de armazenamento. Lembre-se deste nome, pois você precisará dele mais tarde.
Certifique-se de que Modelo de implantação está definido como Gerenciador de recursos e Tipo de conta está definido como Finalidade geral.
Verifique se a Assinatura e o Grupo de Recursos correspondem aos especificados quando você criou sua VM.
Selecione Criar para concluir a criação de uma conta de armazenamento.
Criar um contentor de blobs na conta de armazenamento
Mais adiante no tutorial, você carregará e baixará um arquivo para a nova conta de armazenamento. Como os arquivos exigem armazenamento de blob, você precisa criar um contêiner de blob no qual armazenar o arquivo.
Navegue até sua conta de armazenamento recém-criada.
Selecione o link Contêineres no painel esquerdo, em Serviço de Blob.
Selecione + Contêiner na parte superior da página e, em seguida, um painel Novo contêiner será exibido.
Dê um nome ao contêiner, selecione um nível de acesso e selecione OK. Você precisará do nome especificado posteriormente no tutorial.
Conceder à identidade gerida atribuída pelo sistema da VM acesso para utilizar uma SAS de armazenamento
O Armazenamento do Azure dá suporte nativo à autenticação do Microsoft Entra, para que você possa usar a identidade gerenciada atribuída pelo sistema da sua VM para recuperar uma SAS de armazenamento do Gerenciador de Recursos. Em seguida, você pode usar o SAS para acessar o armazenamento.
Nesta seção, você concede à identidade gerenciada atribuída pelo sistema da sua VM acesso à SAS da sua conta de armazenamento. Atribua a função de Colaborador da Conta de Armazenamento à identidade gerenciada no escopo do grupo de recursos que contém sua conta de armazenamento.
Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.
Nota
Para obter mais informações sobre as várias funções que você pode usar para conceder permissões ao armazenamento, consulte Autorizar acesso a blobs e filas usando a ID do Microsoft Entra.
Obter um token de acesso com a identidade da VM e utilizá-lo para chamar o Azure Resource Manager
Para o restante deste tutorial, você trabalha a partir da VM criada anteriormente.
Você precisa de um cliente SSH para concluir essas etapas. Se você estiver usando o Windows, poderá usar o cliente SSH no Subsistema Windows para Linux. Se precisar de ajuda para configurar as chaves do seu cliente SSH, consulte:
- Como Utilizar chaves SSH com Windows no Azure
- Como criar e usar um par de chaves públicas e privadas SSH para VMs Linux no Azure.
Depois de ter o seu cliente SSH, siga estes passos:
- No portal do Azure, navegue até Máquinas Virtuais e vá para sua máquina virtual Linux.
- Na página Visão geral, selecione Conectar na parte superior da tela.
- Copie a cadeia de ligação para ligar à sua VM.
- Ligue à VM através do seu cliente SSH.
- Digite sua senha que você adicionou ao criar a VM Linux. Deverá iniciar sessão com êxito.
- Utilize o CURL para obter um token de acesso para o Azure Resource Manager.
O pedido CURL e a resposta para o token de acesso encontram-se 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
Nota
Na solicitação anterior, o valor do resource
parâmetro deve ser uma correspondência exata para o que é esperado pelo ID do Microsoft Entra. Ao utilizar o ID de recurso do Azure Resource Manager, tem de incluir a barra à direita no URI.
Na resposta que se segue, o elemento access_token foi abreviado por uma questão 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 de SAS a partir do Azure Resource Manager para fazer chamadas de armazenamento
Em seguida, use CURL para chamar o Gerenciador de Recursos usando o token de acesso que recuperamos na seção anterior. Use isso para criar uma credencial SAS de armazenamento. Depois de ter a credencial SAS, você pode chamar operações de upload/download de armazenamento.
Para essa solicitação, use os seguintes parâmetros de solicitação HTTP para criar a credencial 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 criar uma credencial de SAS, veja Referência do REST de SAS do Serviço de Lista.
Utilize o pedido CURL seguinte para obter a credencial de SAS. Certifique-se de que substitui os valores de 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 obteve 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>"
Nota
O texto no URL anterior diferencia maiúsculas de minúsculas, portanto, certifique-se de que você está usando maiúsculas e minúsculas para que seus grupos de recursos o reflitam adequadamente. Além disso, é importante saber que esta é uma solicitação POST, não uma solicitação GET.
A resposta CURL devolve a credencial de 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 Linux, crie um arquivo de blob de exemplo para carregar no contêiner de armazenamento de blob usando o seguinte comando:
echo "This is a test file." > test.txt
Em seguida, autentique-se com o comando CLI az storage
usando a credencial SAS e, em seguida, carregue o arquivo para o contêiner de blob. Para esta etapa, você precisará instalar a CLI do Azure mais recente em sua VM, se ainda não o fez.
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 autenticando com a credencial SAS.
Pedido:
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 ao sistema de VM Linux para acessar o Armazenamento do Azure por meio da chave de acesso
Este tutorial mostra-lhe como utilizar uma identidade atribuída pelo sistema de uma VM do Linux para recuperar as chaves de acesso à conta de armazenamento. Você pode usar uma chave de acesso de armazenamento como de costume ao fazer operações de armazenamento; por exemplo, ao usar o SDK de armazenamento. Para este tutorial, você carrega e baixa blobs usando a CLI do Azure.
Saberá como:
- Conceder aceder à VM a chaves de acesso da conta de armazenamento no Resource Manager
- Obter um token de acesso com a identidade da VM e utilizá-lo para obter as chaves de acesso ao armazenamento a partir do Resource Manager
Criar uma conta de armazenamento
Se você não tiver uma conta de armazenamento existente antes de iniciar este tutorial, precisará criar uma. Se você tiver uma conta de armazenamento existente, siga estas etapas para conceder à identidade gerenciada atribuída pelo sistema VM 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, Conta de armazenamento e, em seguida, o painel Criar conta de armazenamento é exibido.
Insira um Nome para a conta de armazenamento. Lembre-se deste nome, pois você precisará dele mais tarde.
Certifique-se de que Modelo de implantação está definido como Gerenciador de recursos e Tipo de conta está definido como Finalidade geral.
Verifique se a Assinatura e o Grupo de Recursos correspondem aos especificados quando você criou sua VM.
Selecione Criar para concluir a criação de uma conta de armazenamento.
Criar um contentor de blobs na conta de armazenamento
Mais adiante no tutorial, você carregará e baixará um arquivo para a nova conta de armazenamento. Como os arquivos exigem armazenamento de blob, você precisa criar um contêiner de blob no qual armazenar o arquivo.
Navegue até sua conta de armazenamento recém-criada.
Selecione o link Contêineres no painel esquerdo, em Serviço de Blob.
Selecione + Contêiner na parte superior da página e, em seguida, um painel Novo contêiner será exibido.
Dê um nome ao contêiner, selecione um nível de acesso e selecione OK. Você precisará do nome especificado posteriormente no tutorial.
Conceder à identidade gerida atribuída pelo sistema da VM acesso para utilizar as chaves de acesso à conta de armazenamento
O Armazenamento do Azure não suporta nativamente a autenticação do Microsoft Entra. No entanto, você pode usar a identidade gerenciada atribuída ao sistema da VM para recuperar uma SAS de armazenamento do Gerenciador de Recursos e, em seguida, usar a SAS para acessar o armazenamento. Neste passo, pode conceder à identidade gerida atribuída pelo sistema da VM acesso à SAS da sua conta de armazenamento. Conceda acesso atribuindo a função de Colaborador da Conta de Armazenamento à identidade gerenciada no escopo do grupo de recursos que contém sua conta de armazenamento.
Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.
Nota
Para obter mais informações sobre as várias funções que você pode usar para conceder permissões ao armazenamento, consulte Autorizar acesso a blobs e filas usando a ID do Microsoft Entra.
Obter um token de acesso com a identidade da VM e utilizá-lo para chamar o Azure Resource Manager
Para o restante do tutorial, trabalhamos a partir da VM que criamos anteriormente.
Para concluir estes passos, precisa de um cliente SSH. Se estiver a utilizar o Windows, pode utilizar o cliente SSH no Subsistema Windows para Linux. Se precisar de ajuda para configurar as chaves do seu cliente SSH, veja Como utilizar chaves SSH com o Windows no Azure ou Como criar e utilizar um par de chaves SSH públicas e privadas para VMs do Linux no Azure.
No portal do Azure, navegue até Máquinas Virtuais, selecione sua máquina virtual Linux e, na página Visão geral , selecione Conectar na parte superior. Copie a cadeia de ligação para ligar à sua VM.
Ligue à VM através do seu cliente SSH.
Em seguida, você precisa digitar a senha que você adicionou ao criar a VM Linux.
Utilize o CURL para obter um token de acesso para o Azure Resource Manager.
O pedido CURL e a resposta para o token de acesso encontram-se 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
Nota
Na solicitação anterior, o valor do parâmetro "resource" deve ser uma correspondência exata para o que é esperado pelo Microsoft Entra ID. Ao utilizar o ID de recurso do Azure Resource Manager, tem de incluir a barra à direita no URI. Na resposta seguinte, o elemento access_token foi abreviado para não ser tão extenso.
{ "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 fazer chamadas de armazenamento
Agora, utilize o CURL para chamar o Resource Manager com o token de acesso que obtivemos na secção anterior para obter a chave de acesso ao armazenamento. Assim que tivermos a chave de acesso ao armazenamento, podemos chamar operações de carregamento/transferência de armazenamento. Certifique-se de que substitui os valores de 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 obteve 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>"
Nota
O texto no URL anterior é sensível às maiúsculas e minúsculas; por isso, certifique-se de que, se estiver a utilizar maiúsculas e minúsculas nos seus Grupos de Recursos, tal é refletido em conformidade. Além disso, é importante saber que se trata de um pedido POST e não de um pedido GET, e certifique-se de que passa um valor para capturar um limite de comprimento com -d que possa ser NULL.
A resposta CURL dá-lhe a lista de Chaves:
{"keys":[{"keyName":"key1","permissions":"Full","value":"iqDPNt..."},{"keyName":"key2","permissions":"Full","value":"U+uI0B..."}]}
Crie um ficheiro de blob de exemplo para carregar para o seu contentor de armazenamento de blobs. Em uma VM 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, utilizando a chave de acesso ao armazenamento, e carregue o ficheiro para o contentor de blobs. Para esta etapa, você precisa instalar a CLI do Azure mais recente em sua VM, se ainda não o fez.
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, pode transferir o ficheiro com a CLI do Azure e autenticar com a chave de acesso ao armazenamento.
Pedido:
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
}
Utilizar uma identidade gerida atribuída pelo sistema de VM do Linux para aceder ao Azure Key Vault
Este tutorial mostra como uma máquina virtual (VM) Linux pode usar uma identidade gerenciada atribuída pelo sistema para acessar o Cofre de Chaves do Azure. O Key Vault possibilita que seu aplicativo cliente use um segredo para acessar recursos não protegidos pelo ID do Microsoft Entra. As Identidades de Serviço Gerenciado são gerenciadas automaticamente pelo Azure e permitem que você se autentique em serviços que oferecem suporte à autenticação do Microsoft Entra, sem incluir informações de autenticação em seu código.
Saberá como:
- Conceder o acesso da VM a um segredo armazenado num Key Vault
- Obtenha um token de acesso usando a identidade da VM e use-o para recuperar o segredo do Cofre da Chave
Criar um Cofre de Chaves
Você também precisa de uma máquina virtual Linux que tenha identidades gerenciadas atribuídas ao sistema habilitadas.
- Se precisar de criar uma máquina virtual para este tutorial, pode seguir o artigo intitulado Criar uma máquina virtual Linux com o portal do Azure
Gorjeta
As etapas neste artigo podem variar ligeiramente com base no portal a partir do qual você começou.
Esta seção mostra como conceder à sua VM acesso a um segredo armazenado em um Cofre de Chaves. Usando identidades gerenciadas para recursos do Azure, seu código pode obter tokens de acesso para autenticar recursos que dão suporte à autenticação do Microsoft Entra.
No entanto, nem todos os serviços do Azure oferecem suporte à autenticação Microsoft Entra. Para utilizar identidades geridas para recursos do Azure com esses serviços, armazene as credenciais do serviço no Azure Key Vault e utilize a identidade gerida da VM para aceder ao Key Vault para obter as credenciais.
Primeiro, você precisa criar um Cofre da Chave e conceder à identidade gerenciada atribuída pelo sistema da sua VM acesso ao Cofre da Chave.
Inicie sessão 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, certificando-se de que escolhe a subscrição e o grupo de recursos onde criou a máquina virtual que está a utilizar para este tutorial.
Selecione Rever+ criar e, em seguida, selecione Criar.
Criar um segredo
Em seguida, você precisa adicionar um segredo ao Cofre da Chave, para que possa recuperá-lo mais tarde usando o código em execução em sua VM. Nesta seção, você usará o PowerShell. Mas os mesmos conceitos se aplicam a qualquer código executado nesta máquina virtual.
Navegue até o Cofre da Chave recém-criado.
Selecione Segredos e, em seguida, selecione Adicionar.
Selecione Gerar/Importar.
Na secção Criar um segredo, aceda a Opções de carregamento e certifique-se de que Manual está selecionado.
Introduza o nome e o valor do segredo. O valor pode ser o que quiser.
Deixe a data de ativação e a data de expiração claras e certifique-se de que Ativado está 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 Cofre da Chave.
Navegue até o Cofre da Chave recém-criado.
Selecione Política de acesso na 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 Secreto no menu suspenso.
Escolha Selecionar entidade de segurança e, em seguida, no campo de pesquisa, insira o nome da VM criada anteriormente. Selecione a VM na lista de resultados e, em seguida , Selecionar.
Selecione Adicionar.
Selecione Guardar.
Aceder a dados
Para concluir estes passos, precisa de um cliente SSH. Se estiver a utilizar o Windows, pode utilizar o cliente SSH no Subsistema Windows para Linux. Se precisar de ajuda para configurar as chaves do seu cliente SSH, veja Como utilizar chaves SSH com o Windows no Azure ou Como criar e utilizar um par de chaves SSH públicas e privadas para VMs do 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 serviços de destino. Saiba mais sobre os SDKs do Azure e como acessar a biblioteca Azure.Identity.
- No portal, navegue até sua VM Linux e, na Visão geral, selecione Conectar.
- Clique em Ligar para ligar à VM com o cliente SSH que escolheu.
- Na janela do terminal, use cURL para fazer uma solicitação às identidades gerenciadas locais para o ponto de extremidade de recursos do Azure para obter um token de acesso para o Cofre da Chave do Azure. O pedido CURL para o token de acesso encontra-se 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"}
Pode utilizar este token de acesso para autenticação no Azure Key Vault. O pedido CURL seguinte mostra como ler um segredo do Key Vault com o CURL e a API REST do Key Vault. Você precisa do URL do Cofre da Chave, que está na seção Essentials da página Visão geral do Cofre da Chave. 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 a seguinte 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 Cofre da Chave, você pode usá-lo para autenticar em um serviço que requer um nome e senha.
Clean up resources (Limpar 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 deste tutorial, como mi-test
. Você pode usar o comando Excluir grupo de recursos ou via PowerShell ou CLI.
Usar uma identidade gerenciada atribuída ao sistema Linux VM para acessar um grupo de recursos no gerenciador de recursos
Gorjeta
As etapas neste artigo podem variar ligeiramente com base no portal a partir do qual você começou.
Este tutorial explica como criar uma identidade atribuída ao sistema, atribuí-la a uma máquina virtual (VM) Linux e, em seguida, usar essa identidade para acessar a API do Azure Resource Manager . As Identidades de Serviço Geridas são geridas automaticamente pelo Azure. Eles habilitam a autenticação para serviços que oferecem suporte à autenticação do Microsoft Entra, sem a necessidade de incorporar credenciais ao seu código.
Sabe como:
- Conceda à sua VM acesso ao gerenciador de recursos do Azure.
- Obtenha um token de acesso usando a identidade gerenciada atribuída pelo sistema da VM para acessar o gerenciador de recursos.
Entre no portal do Azure com sua conta de administrador.
Navegue até a guia Grupos de Recursos .
Selecione o Grupo de Recursos ao qual você deseja conceder acesso à identidade gerenciada da VM.
No painel esquerdo, selecione Controle de acesso (IAM).
Selecione Adicionar e, em seguida, selecione 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.
No separador Membros, na opção Atribuir acesso a, selecione Identidade gerida e, em seguida, selecione + Selecionar membros.
Verifique se a assinatura adequada está listada na lista suspensa Assinatura . Em Grupo de Recursos, selecione Todos os grupos de recursos.
No menu suspenso Gerenciar identidade, selecione Máquina Virtual.
Na opção Selecionar, escolha sua VM na lista suspensa e selecione Salvar.
Obter um token de acesso
Use a identidade gerenciada atribuída pelo sistema da VM e chame o gerenciador de recursos para obter um token de acesso.
Para concluir estes passos, precisa de um cliente SSH. Se você estiver usando o Windows, poderá usar o cliente SSH no Subsistema Windows para Linux. Se precisar de ajuda para configurar as chaves do seu cliente SSH, veja Como utilizar chaves SSH com o Windows no Azure ou Como criar e utilizar um par de chaves SSH públicas e privadas para VMs do Linux no Azure.
- No portal do Azure, navegue até sua VM Linux.
- Na visão geral, selecione Conectar.
- Clique em Ligar para ligar à VM com o cliente SSH que escolheu.
- Na janela do terminal, usando
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 gerenciador de recursos do Azure. Acurl
solicitação do token de acesso está abaixo.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true
Nota
O valor do parâmetro deve ser uma correspondência exata para o que é esperado pelo ID do resource
Microsoft Entra. No caso do ID de recurso do gerenciador de recursos, você deve incluir a barra à direita no URI.
A resposta inclui o token de acesso que você precisa para acessar o gerenciador de recursos do Azure.
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 gerenciador de recursos do Azure. Por exemplo, para ler os detalhes do grupo de recursos ao qual você concedeu anteriormente acesso a essa VM. Substitua os valores de <SUBSCRIPTION-ID>
, <RESOURCE-GROUP>
e <ACCESS-TOKEN>
pelos que você criou anteriormente.
Nota
O URL diferencia maiúsculas de minúsculas, portanto, certifique-se de que você está usando o caso exato como você usou anteriormente quando nomeou o grupo de recursos e o "G" maiúsculo 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 de volta 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 atribuída pelo usuário à VM Linux para acessar um grupo de recursos no Gerenciador de Recursos
Gorjeta
As etapas neste artigo podem variar ligeiramente com base no portal a partir do qual você começou.
Este tutorial explica como criar uma identidade atribuída pelo usuário, atribuí-la a uma máquina virtual (VM) Linux e usar essa identidade para acessar a API do Azure Resource Manager . As Identidades de Serviço Geridas são geridas automaticamente pelo Azure. Eles habilitam a autenticação para serviços que oferecem suporte à autenticação do Microsoft Entra, sem a necessidade de incorporar credenciais ao seu código.
Saberá como:
- Conceda à sua VM acesso ao Azure Resource Manager.
- Obtenha um token de acesso usando a identidade gerenciada atribuída pelo sistema da VM para acessar o Gerenciador de Recursos.
Crie uma identidade gerida atribuída pelo utilizador com az identity create. O parâmetro -g
especifica o grupo de recursos onde a identidade gerida atribuída pelo utilizador é criada e o parâmetro -n
especifica o respetivo nome. Certifique-se de que substitui os valores de parâmetros <RESOURCE GROUP>
e <UAMI NAME>
pelos seus próprios valores:
Importante
Quando você cria 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, hífenes (-) e sublinhados (_). Para que a atribuição a uma máquina virtual ou a uma escala de máquina virtual funcione corretamente, o nome é limitado a 24 caracteres. Para obter mais informações, veja FAQs e problemas conhecidos.
az identity create -g <RESOURCE GROUP> -n <UAMI NAME>
A resposta contém detalhes para a identidade gerida atribuída pelo utilizador criada, semelhante ao seguinte exemplo. Anote o valor id
da identidade gerida atribuída pelo utilizador, uma vez que vai ser utilizada no próximo passo:
{
"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"
}
Atribua uma identidade à sua VM Linux
Uma identidade gerida atribuída pelo utilizador pode ser utilizada pelos clientes em vários recursos do Azure. Utilize os seguintes comandos para atribuir a identidade gerida atribuída pelo utilizador a uma única VM. Utilize a propriedade Id
devolvida no passo anterior para o parâmetro -IdentityID
.
Atribua a identidade gerenciada atribuída pelo usuário à sua VM Linux usando az vm identity assign. Certifique-se de que substitui os valores de parâmetros <RESOURCE GROUP>
e <VM NAME>
pelos seus próprios valores. Utilize a propriedade id
devolvida no passo anterior para o valor de 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 oferecem suporte à autenticação do Microsoft Entra. Neste tutorial, o seu código irá aceder à API do Azure Resource Manager.
Antes de o seu código pode aceder à API, tem de 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 adequado para o seu ambiente. Além disso, substitua <UAMI PRINCIPALID>
pela propriedade principalId
devolvida pelo comando az identity create
em Criar uma identidade gerida atribuída pelo utilizador:
az role assignment create --assignee <UAMI PRINCIPALID> --role 'Reader' --scope "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP> "
A resposta contém detalhes da atribuição de função criada, semelhante ao seguinte exemplo:
{
"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 com a identidade da VM e utilizá-lo para chamar o Resource Manager
Gorjeta
As etapas neste artigo podem variar ligeiramente com base no portal a partir do qual você começou.
Para o restante do tutorial, você trabalha a partir da VM criada anteriormente.
Para concluir estes passos, precisa de um cliente SSH. Se estiver a utilizar o Windows, pode utilizar o cliente SSH no Subsistema Windows para Linux.
Inicie sessão no portal do Azure.
No portal, navegue para Máquinas Virtuais, vá para a máquina virtual do Linux e, na Descrição Geral, clique em Ligar. Copie a cadeia de ligação para ligar à sua VM.
Clique em Ligar para ligar à VM com o cliente SSH que escolheu. Se estiver a utilizar o Windows, pode utilizar o cliente SSH no Subsistema Windows para Linux. Se precisar de ajuda para configurar as chaves do seu cliente SSH, veja Como utilizar chaves SSH com o Windows no Azure ou Como criar e utilizar um par de chaves SSH públicas e privadas para VMs do Linux no Azure.
Na janela do terminal, use CURL para fazer uma solicitação ao ponto de extremidade de identidade do IMDS (Serviço de Metadados de Instância) do Azure para obter um token de acesso para o Azure Resource Manager.
O pedido CURL para adquirir um token de acesso é mostrado no exemplo seguinte. Certifique-se de que substitui
<CLIENT ID>
pela propriedadeclientId
devolvida pelo comandoaz identity create
em Criar uma identidade gerida atribuída pelo utilizador: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>"
Nota
O valor do parâmetro deve ser uma correspondência exata para o que é esperado pelo ID do
resource
Microsoft Entra. Ao utilizar o ID de recurso do Resource Manager, tem de incluir a barra à direita no URI.A resposta inclui o token de acesso necessário para aceder ao 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 Gerenciador de Recursos do Azure e leia as propriedades do grupo de recursos ao qual você concedeu anteriormente acesso de identidade gerenciada atribuído pelo usuário. Certifique-se de que substitui
<SUBSCRIPTION ID>
e<RESOURCE GROUP>
pelos valores que especificou anteriormente, e<ACCESS TOKEN>
pelo token devolvido no passo anterior.Nota
A URL diferencia maiúsculas de minúsculas, portanto, certifique-se de usar exatamente as mesmas maiúsculas e minúsculas usadas anteriormente quando nomeou o grupo de recursos e o "G" maiúsculo 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 específicas do grupo de recursos, semelhante ao exemplo a seguir:
{ "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/DevTest", "name":"DevTest", "location":"westus", "properties":{"provisioningState":"Succeeded"} }