Tutorial: Usar uma identidade gerenciada atribuída pelo sistema da VM do Windows para acessar o Azure Data Lake Storage
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.
Este tutorial mostra como usar uma identidade gerenciada atribuída pelo sistema para uma VM (máquina virtual) do Windows para acessar um Azure Data Lake Storage. As identidades gerenciadas são gerenciadas automaticamente pelo Azure. Você pode usá-las para autenticar serviços compatíveis com a autenticação do Microsoft Entra sem precisar inserir as credenciais no seu código.
Neste artigo, você aprenderá a:
- Conceder acesso a um Azure Data Lake Store à sua VM
- Obter um token de acesso usando a identidade da VM e usá-lo para acessar um Azure Data Lake Store
Pré-requisitos
- Conhecimento sobre 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 em uma conta gratuita.
- Permissões de "Proprietário" no escopo apropriado (sua assinatura ou grupo de recursos) para executar a criação de recursos e o gerenciamento de função necessários. 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.
- Você também precisa de uma máquina virtual do Windows com identidades gerenciadas atribuídas ao sistema habilitadas.
- Se for necessário criar uma máquina virtual para este tutorial, siga o artigo intitulado Criar uma máquina virtual com a identidade atribuída pelo sistema habilitada
Habilitar
Habilitar uma identidade gerenciada atribuída pelo sistema é uma experiência de um clique. Você pode habilitá-la durante a criação de uma VM ou nas propriedades de uma VM existente.
Para habilitar a identidade gerenciada atribuída pelo sistema em uma nova VM:
Conceder acesso
Agora você pode conceder o acesso a arquivos e pastas em um Azure Data Lake Store à sua VM. Para esta etapa, é possível usar um Data Lake Store existente ou criar um novo. Para criar um novo Data Lake Store usando o Portal do Azure, siga este 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 a permissão de identidade atribuída pelo sistema da VM. A identidade precisa de direitos para ler, gravar e executar arquivos nesta pasta:
- No portal do Azure, clique em Data Lake Store na navegação à esquerda.
- Clique no Data Lake Store que você deseja usar neste tutorial.
- Clique em Data Explorer na barra de comandos.
- A pasta raiz do Data Lake Store é selecionada. Selecione Acesso na barra de comandos.
- Selecione Adicionar. No campo Selecionar, insira o nome da sua VM, por exemplo DevTestVM. Clique para selecionar sua VM nos resultados da pesquisa e escolha Selecionar.
- Clique em Selecionar permissões. Selecione Leitura e Execução, adicione a Esta pasta e adicione como Somente permissão de acesso. Selecione OK. A permissão deverá ser adicionada com êxito.
- Feche a folha Acesso.
- Para este tutorial, crie uma nova pasta. Clique em Nova pasta na barra de comandos e dê um nome para a pasta, por exemplo TestFolder. Selecione OK.
- Clique na pasta que você criou e escolha Acesso na barra de comandos.
- Assim como na etapa 5, clique em Adicionar e, no campo Selecionar, digite o nome da sua VM, selecione-a e clique em Selecionar.
- Assim como na etapa 6, clique em Selecionar permissões, selecione Leitura, Gravação e Execução, adicione a Esta pasta e acrescente como Uma entrada de permissão de acesso e uma entrada de permissão padrão. Selecione OK. A permissão deverá ser adicionada com êxito.
A identidade gerenciada atribuída pelo sistema da VM agora pode executar todas as operações nos arquivos da pasta que você criou. Para saber mais sobre como gerenciar acesso ao Data Lake Store, leia este artigo sobre Controle de acesso no Data Lake Store.
Acessar dados
O Azure Data Lake Store tem compatibilidade nativa com a autenticação do Microsoft Entra, portanto, ele pode aceitar diretamente 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 em um cabeçalho de autorização. O cabeçalho tem o formato "Bearer < ACCESS_TOKEN_VALUE>". Para saber mais sobre a compatibilidade do Data Lake Store com a autenticação do Microsoft Entra ID, consulte Autenticação com o Data Lake Store usando o Microsoft Entra ID.
Observação
Os SDKs do cliente de sistema de arquivos do Data Lake Storage SDKs ainda não têm suporte para identidades gerenciadas para recursos do Azure. Este tutorial será atualizado quando esse suporte for adicionado ao SDK.
Neste tutorial, você se autenticará na API REST do sistema de arquivos do Data Lake Store usando o PowerShell para fazer solicitações REST. Para usar a identidade gerenciada atribuída pelo sistema da VM para autenticação, você precisa fazer as solicitações da VM.
No portal, navegue até Máquinas Virtuais, acesse a VM do Windows e, em Visão geral, clique em Conectar.
Insira o seu Nome de usuário e Senha que você adicionou quando criou a VM do Windows.
Agora que você criou uma Conexão de Área de Trabalho Remota com a máquina virtual, abra o PowerShell na sessão remota.
Usando o
Invoke-WebRequest
do PowerShell, faça uma solicitação para as identidades gerenciadas locais para o ponto de extremidade do Azure para obter um token de acesso ao Azure Data Lake Storage. O identificador de recursos para Data Lake Storage éhttps://datalake.azure.net/
. O Data Lake faz uma correspondência exata no identificador de recursos, por isso a barra à direita é importante.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -Method GET -Headers @{Metadata="true"}
Converta a resposta de um objeto JSON para um objeto do PowerShell.
$content = $response.Content | ConvertFrom-Json
Extraia o token de acesso da resposta.
$AccessToken = $content.access_token
Verifique se tudo está configurado corretamente. Usando 'Invoke-WebRequest' do PowerShell, faça uma solicitação para o ponto de extremidade REST do Data Lake Store para listar as pastas na pasta raiz. É importante que a cadeia de caracteres “Bearer” no cabeçalho de autorização tenha um “B” maiúsculo. Você pode encontrar o nome do seu Data Lake Store na seção Visão geral da folha Data Lake Store.
Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -Headers @{Authorization="Bearer $AccessToken"}
Uma resposta bem-sucedida tem a seguinte aparência:
StatusCode : 200 StatusDescription : OK Content : {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY", "blockSize":0,"accessTime":1507934941392, "modificationTime":1507944835699,"replication":0, "permission":"770","ow..." RawContent : HTTP/1.1 200 OK Pragma: no-cache x-ms-request-id: b4b31e16-e968-46a1-879a-3474aa7d4528 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosniff Strict-Transport-Security: ma... Forms : {} Headers : {[Pragma, no-cache], [x-ms-request-id, b4b31e16-e968-46a1-879a-3474aa7d4528], [x-ms-webhdfs-version, 17.04.22.00], [Status, 0x0]...} Images : {} InputFields : {} Links : {} ParsedHtml : System.__ComObject RawContentLength : 556
Agora você pode tentar carregar um arquivo para seu Data Lake Store. Primeiramente, crie um arquivo para ser carregado.
echo "Test file." > Test1.txt
Usando
Invoke-WebRequest
do PowerShell, faça uma solicitação para o ponto de extremidade REST do Data Lake Store para carregar o arquivo para a pasta criada que você criou anteriormente. Duas etapas são necessárias para essa solicitação. Na primeira etapa, você faz uma solicitação e obtém um redirecionamento para onde o arquivo deve ser carregado. Na segunda etapa, ocorre o upload do arquivo propriamente dito. Lembre-se de definir o nome da pasta e do arquivo corretamente se tiver usado valores diferentes deste tutorial.$HdfsRedirectResponse = Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
Se você inspecionar o valor de
$HdfsRedirectResponse
, ele deverá se parecer com a seguinte resposta:PS C:\> $HdfsRedirectResponse StatusCode : 307 StatusDescription : Temporary Redirect Content : {} RawContent : HTTP/1.1 307 Temporary Redirect Pragma: no-cache x-ms-request-id: b7ab492f-b514-4483-aada-4aa0611d12b3 ContentLength: 0 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosn... Headers : {[Pragma, no-cache], [x-ms-request-id, b7ab492f-b514-4483-aada-4aa0611d12b3], [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...} RawContentLength : 0
Conclua o upload enviando uma solicitação para o ponto de extremidade de redirecionamento:
Invoke-WebRequest -Uri $HdfsRedirectResponse.Headers.Location -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
Uma resposta bem-sucedida tem a seguinte aparência:
StatusCode : 201 StatusDescription : Created Content : {} RawContent : HTTP/1.1 201 Created Pragma: no-cache x-ms-request-id: 1e70f36f-ead1-4566-acfa-d0c3ec1e2307 ContentLength: 0 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosniff Strict... Headers : {[Pragma, no-cache], [x-ms-request-id, 1e70f36f-ead1-4566-acfa-d0c3ec1e2307], [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...} RawContentLength : 0
Usando outras APIs do sistema de arquivos do Data Lake Store, é possível acrescentar aos arquivos, baixar arquivos e muito mais.
Desabilitar
Para desabilitar a identidade atribuída pelo sistema em sua VM, configure o status da identidade atribuída pelo sistema como Desativado.
Próximas etapas
Neste tutorial, você aprendeu a usar uma identidade gerenciada atribuída pelo sistema para uma máquina virtual do Windows para acessar um Azure Data Lake Storage. Para saber mais sobre o Azure Data Lake Store, confira: