Tutorial: usar uma VM/VMSS do Windows para acessar os 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 VM (máquina virtual) do Windows com identidades gerenciadas atribuídas ao sistema habilitadas.
- Caso precise criar uma VM para este tutorial, consulte Criar uma máquina virtual com a identidade atribuída pelo sistema habilitada.
Usar uma identidade gerenciada atribuída pelo sistema da VM do Windows 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 Windows para acessar um Azure Data Lake Store. 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
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:
Entre no portal do Azure.
Criar uma máquina virtual com identidade atribuída pelo sistema habilitada.
Permitir acesso
É possível 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, consulte o 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. Selecione sua VM nos resultados da pesquisa e escolha Selecionar.
- Selecione Selecionar Permissões e, em seguida , Leitura e Executar. Adicione a Esta pastae, em seguida, selecione Uma permissão de acesso único.
- Selecione Ok e feche a folha de Acesso. A permissão deverá ser adicionada com êxito.
- Em seguida, 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 criada e escolha Acesso na barra de comandos.
- Selecione Adicionar e, em seguida, no campo Selecionar, insira o nome da VM e escolha Selecionar.
- Escolha Selecionar Permissões e, em seguida Leitura, Gravar e Executar. Adicione a Esta pasta, em seguida, adicione como Uma entrada de permissão de acesso e uma entrada de permissão padrão.
- Selecione OK. A permissão deverá ser adicionada corretamente.
A identidade gerenciada atribuída pelo sistema da VM agora pode executar todas as operações nos arquivos da pasta que você criou. Para obter informações sobre como gerenciar acesso ao Data Lake Store, confira Controle de Acesso no Data Lake Store.
Acessar dados
O Azure Data Lake Store tem compatibilidade nativa com a autenticação do Microsoft Entra, para que ele possa 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 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.
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.
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 sua VM do Windows. Em seguida, na Visão geral, selecione Conectar.
Insira 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 VM, abra o PowerShell na sessão remota.
Usando o cmdlet
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 Store. 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 o cmdlet
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 caracteresBearer
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 tente carregar um arquivo para seu Data Lake Store. Primeiramente, crie um arquivo para ser carregado.
echo "Test file." > Test1.txt
Usando o cmdlet
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.- Faça uma solicitação e receba um redirecionamento para onde o arquivo deve ser carregado.
- Carregue o arquivo. Lembre-se de definir o nome da pasta e do arquivo corretamente se tiver usado valores diferentes dos indicados neste 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
Por fim, use outras APIs de sistema de arquivos do Data Lake Store para acrescentar e 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.
Usar uma identidade gerenciada atribuída pelo sistema da VM do Windows 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 Windows para acessar o Armazenamento do Azure. Você aprenderá como:
- Criar um contêiner de blobs em uma conta de armazenamento
- Conceder à identidade gerenciada atribuída pelo sistema da VM do Windows acesso a uma conta de armazenamento
- Obter um acesso e usá-lo para chamar o Armazenamento do Azure
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:
Entre no portal do Azure.
Criar uma máquina virtual com identidade atribuída pelo sistema habilitada.
Criar Conta de Armazenamento
Nesta seção, você criará 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.
No campo 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.
Na seção Serviço Blob, selecione Contêineres.
Selecione + Contêiner na parte superior da página.
No campo Novo contêiner, insira um nome para o contêiner e, na opção Nível de acesso público, mantenha o 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-o.
Selecione o nome do contêiner para carregar o arquivo no contêiner recém-criado e selecione Carregar.
No painel Carregar blob, na seção Arquivos, selecione o ícone de pasta e navegue até o arquivo hello_world.txt no computador local. Em seguida, selecione o arquivo e Carregar.
Conceder acesso
Esta seção mostra como conceder à sua VM acesso a um contêiner do Armazenamento do Azure. Você pode usar a identidade gerenciada atribuída pelo sistema da VM para recuperar os dados no Azure Storage Blob.
Navegue para a sua conta de armazenamento recém-criada.
Selecione IAM (Controle de acesso) .
Selecione Adicionar>Adicionar atribuição de função para abrir a página Adicionar atribuição de função.
Atribua a função a seguir. Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.
Configuração Valor Função Leitor de Dados do Blob de Armazenamento Atribuir acesso a Identidade gerenciada Atribuída pelo sistema Máquina Virtual Selecionar <sua máquina virtual>
Acessar dados
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. Essa abordagem usa a integração do Armazenamento do Azure com o Microsoft Entra ID, e é diferente de fornecer as credenciais na cadeia de conexão.
Aqui está um exemplo de código .NET de abertura de uma conexão com o Armazenamento do Microsoft Azure. O exemplo usa um token de acesso e, em seguida, lê o conteúdo do arquivo que você criou anteriormente. Esse código deve ser executado na VM para poder acessar o ponto de extremidade da identidade gerenciada da VM. É necessário ter o .NET Framework 4.6 ou superior para usar o método de token de acesso. Substitua o valor de <URI to blob file>
adequadamente. Você pode obter esse valor navegando até o arquivo criado e carregado no armazenamento de blobs e copiando a URL sob Propriedades, na página Visão geral.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Web.Script.Serialization;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
namespace StorageOAuthToken
{
class Program
{
static void Main(string[] args)
{
//get token
string accessToken = GetMSIToken("https://storage.azure.com/");
//create token credential
TokenCredential tokenCredential = new TokenCredential(accessToken);
//create storage credentials
StorageCredentials storageCredentials = new StorageCredentials(tokenCredential);
Uri blobAddress = new Uri("<URI to blob file>");
//create block blob using storage credentials
CloudBlockBlob blob = new CloudBlockBlob(blobAddress, storageCredentials);
//retrieve blob contents
Console.WriteLine(blob.DownloadText());
Console.ReadLine();
}
static string GetMSIToken(string resourceID)
{
string accessToken = string.Empty;
// Build request to acquire MSI token
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=" + resourceID);
request.Headers["Metadata"] = "true";
request.Method = "GET";
try
{
// Call /token endpoint
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Pipe response Stream to a StreamReader, and extract access token
StreamReader streamResponse = new StreamReader(response.GetResponseStream());
string stringResponse = streamResponse.ReadToEnd();
JavaScriptSerializer j = new JavaScriptSerializer();
Dictionary<string, string> list = (Dictionary<string, string>)j.Deserialize(stringResponse, typeof(Dictionary<string, string>));
accessToken = list["access_token"];
return accessToken;
}
catch (Exception e)
{
string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
return accessToken;
}
}
}
}
A resposta tem o conteúdo do arquivo:
Hello world! :)
Desabilitar
Para desabilitar a identidade atribuída pelo sistema em sua VM, configure o status da identidade atribuída pelo sistema como Desativado.
Use uma identidade gerenciada atribuída pelo sistema VM do Windows para acessar o Armazenamento do Microsoft Azure por meio de uma credencial SAS
Este tutorial mostra como usar uma identidade atribuída pelo sistema para uma VM (máquina virtual) do Windows, para obter uma credencial SAS (Assinatura de Acesso Compartilhado) de armazenamento.
Uma SAS de serviço fornece a capacidade de conceder acesso limitado a objetos em uma conta de armazenamento por tempo limitado e para um serviço específico (nesse caso, um serviço de blob). A SAS faz isso sem expor uma chave de acesso de conta. Use a credencial SAS normalmente para operações de armazenamento, por exemplo, ao usar um SDK de Armazenamento. Este tutorial demonstra o upload e o download de um blob usando o PowerShell do Armazenamento do Microsoft Azure.
Você aprenderá a:
- Criar uma 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
Observação
Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Confira Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.
Criar uma conta de armazenamento
Caso ainda não tenha uma, você precisará criar uma conta de armazenamento. Caso contrário, siga estas etapas para conceder acesso de identidade gerenciada atribuído pelo sistema da VM à credencial SAS de uma conta de armazenamento existente.
Selecione Armazenamento e Conta de Armazenamento.
No painel Criar conta de armazenamento, insira um nome para a conta de armazenamento.
Garanta que o Modelo de implantação e o Tipo de conta estão definidos como Resource Manager e Uso Geral.
Verifique se a Assinatura e o Grupo de Recursos correspondem aos itens especificados quando criou sua VM na etapa anterior.
Selecione Criar para criar sua conta de armazenamento.
Criar um contêiner de blobs na conta de armazenamento
Posteriormente, no tutorial, você executará o upload e download de 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 esquerdo, em serviço Blob.
Selecione + Contêiner na parte superior da página e, em seguida, um painel Novo contêiner deve aparecer.
Dê um nome ao contêiner, determine o nível de acesso e selecione OK. O nome especificado aqui é usado posteriormente no tutorial.
Conceder à identidade gerenciada atribuída pelo sistema da VM acesso para usar um SAS de armazenamento
O Armazenamento do Azure não dá suporte nativo à autenticação do Microsoft Entra. No entanto, você pode usar uma identidade gerenciada para recuperar um SAS de armazenamento do Resource Manager e usar o SAS para acessar o armazenamento. Nesta etapa, você concede o acesso à identidade gerenciada atribuída pelo sistema da VM à sua conta de armazenamento SAS.
Navegue de volta para sua conta de armazenamento criado recentemente.
Selecione IAM (Controle de acesso) .
Selecione Adicionar>Adicionar atribuição de função para abrir a página Adicionar atribuição de função.
Atribua a função a seguir. Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.
Configuração Valor Função Colaborador da conta de armazenamento Atribuir acesso a Identidade gerenciada Atribuída pelo sistema Máquina virtual Selecionar <sua máquina virtual do Windows>
Obter um token de acesso usando a identidade da máquina virtual e usá-la para chamar o Azure Resource Manager
Para o restante deste tutorial, você trabalha a partir de sua VM. É necessário usar os cmdlets do PowerShell do Azure Resource Manager nesta parte. Caso não tenha o PowerShell instalado, baixe a versão mais recente antes de continuar.
No portal do Azure, navegue até Máquinas Virtuais, acesse sua máquina virtual do Windows e, na página Visão geral, selecione Conectar na parte superior.
Insira seu Nome de usuário e Senha que você adicionou ao criar sua VM do Windows.
Estabeleça uma Conexão de Área de Trabalho Remota com a máquina virtual.
Abra o PowerShell na sessão remota e, em seguida, use o cmdlet
Invoke-WebRequest
do PowerShell para obter um token do Azure Resource Manager da identidade gerenciada local para o ponto de extremidade de recursos do Azure.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -Method GET -Headers @{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. Ao usar a ID de recurso do Azure Resource Manager, você deve incluir a barra à direita no URI.Em seguida, extraia o elemento
content
, que é armazenado como uma cadeia de caracteres formatada em JavaScript Object Notation (JSON) no objeto$response
.$content = $response.Content | ConvertFrom-Json
Em seguida, extraia o token de acesso da resposta.
$ArmToken = $content.access_token
Obter uma credencial SAS do Azure Resource Manager para fazer chamadas de armazenamento
Por fim, use o PowerShell para chamar o Resource Manager usando o token de acesso recuperado na seção anterior. Você usa esse token para criar uma credencial SAS de armazenamento. Após ter a credencial SAS, você poderá chamar outras operações de armazenamento.
Para esta 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.
}
Os parâmetros aqui são incluídos no corpo do POST da solicitação 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.
Converta os parâmetros em JSON e, em seguida, chame o ponto de extremidade
listServiceSas
de armazenamento para criar a credencial SAS:$params = @{canonicalizedResource="/blob/<STORAGE-ACCOUNT-NAME>/<CONTAINER-NAME>";signedResource="c";signedPermission="rcw";signedProtocol="https";signedExpiry="2017-09-23T00:00:00Z"} $jsonParams = $params | ConvertTo-Json
$sasResponse = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE-ACCOUNT-NAME>/listServiceSas/?api-version=2017-06-01 -Method POST -Body $jsonParams -Headers @{Authorization="Bearer $ArmToken"}
Observação
O URL diferencia maiúsculas de minúsculas, portanto, certifique-se de usar letras maiúsculas e minúsculas exatamente da mesma forma usadas ao nomear o grupo de recursos, incluindo a letra maiúscula "G" em
resourceGroups
.Em seguida, extraia a credencial SAS da resposta:
$sasContent = $sasResponse.Content | ConvertFrom-Json $sasCred = $sasContent.serviceSasToken
Caso inspecione a credencial SAS, visualizará algo assim:
PS C:\> $sasCred sv=2015-04-05&sr=c&spr=https&se=2017-09-23T00%3A00%3A00Z&sp=rcw&sig=JVhIWG48nmxqhTIuN0uiFBppdzhwHdehdYan1W%2F4O0E%3D
Crie um arquivo chamado test.txt. Em seguida, use a credencial SAS para autenticar-se com o cmdlet
New-AzStorageContent
, carregar o arquivo para o contêiner de blob e então baixar o arquivo.echo "This is a test text file." > test.txt
Certifique-se instalar os cmdlets do Armazenamento do Azure primeiro, usando
Install-Module Azure.Storage
. Então carregue o blob recém-criado usando o cmdletSet-AzStorageBlobContent
do PowerShell:$ctx = New-AzStorageContext -StorageAccountName <STORAGE-ACCOUNT-NAME> -SasToken $sasCred Set-AzStorageBlobContent -File test.txt -Container <CONTAINER-NAME> -Blob testblob -Context $ctx
Resposta:
ICloudBlob : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob BlobType : BlockBlob Length : 56 ContentType : application/octet-stream LastModified : 9/21/2017 6:14:25 PM +00:00 SnapshotTime : ContinuationToken : Context : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext Name : testblob
Você também pode baixar o blob que carregou, usando o cmdlet do PowerShell
Get-AzStorageBlobContent
:Get-AzStorageBlobContent -Blob testblob -Container <CONTAINER-NAME> -Destination test2.txt -Context $ctx
Resposta:
ICloudBlob : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob BlobType : BlockBlob Length : 56 ContentType : application/octet-stream LastModified : 9/21/2017 6:14:25 PM +00:00 SnapshotTime : ContinuationToken : Context : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext Name : testblob
Usar uma identidade gerenciada atribuída pelo sistema da VM do Windows para acessar o Banco de Dados SQL do Azure
Este tutorial mostra como usar uma identidade atribuída ao sistema em uma VM (máquina virtual) do Windows para acessar o Banco de Dados SQL do Azure. 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 necessidade de inserir as credenciais em seu código.
Você aprenderá a:
- Permitir acesso à sua VM a um Banco de Dados SQL do Azure
- Habilitar a autenticação do Microsoft Entra
- Crie um usuário contido no banco de dados que represente a identidade atribuída do sistema da VM
- Obter um token de acesso usando a identidade da VM e usá-lo para consultar o Banco de Dados SQL do Azure
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:
Entre no portal do Azure.
Criar uma máquina virtual com identidade atribuída pelo sistema habilitada.
Permitir acesso
Para permitir acesso à VM a um banco de dados no Banco de Dados SQL do Azure, use um servidor SQL lógico existente ou crie um. Para criar um novo servidor e banco de dados usando o portal do Azure, siga o início rápido do SQL do Azure. Também há inícios rápidos que usam a CLI do Azure e o Azure PowerShell na documentação do SQL Azure.
Siga estas etapas para conceder acesso à VM a um banco de dados:
- Habilitar a autenticação do Microsoft Entra para o servidor.
- Crie um usuário contido no banco de dados que represente a identidade atribuída do sistema da VM.
Habilitar a autenticação do Microsoft Entra
Para configurar a autenticação do Microsoft Entra:
- No portal do Azure, selecione servidor SQL na navegação à esquerda.
- Selecione o servidor SQL a ser habilitado para a autenticação do Microsoft Entra.
- Na seção Configurações da folha, selecione Administrador do Active Directory.
- Na barra de comandos, selecione Definir administrador.
- Selecione uma conta de usuário do Microsoft Entra para ser um administrador do servidor e escolhaSelecionar.
- Na barra de comandos, selecione Salvar.
Criar um usuário contido
Esta seção mostra a você como criar um usuário contido no banco de dados que representa a identidade atribuída do sistema da VM. Para esta etapa, você precisará do SSMS (Microsoft SQL Server Management Studio) instalado. Antes de começar, poderá ser útil examinar os seguintes artigos para obter informações sobre a integração do Microsoft Entra:
- Autenticação Universal com o Banco de Dados SQL e o Azure Synapse Analytics (suporte de SSMS para MFA)
- Como configurar e gerenciar o Microsoft Entra para autenticação com o Banco de Dados SQL ou o Azure Synapse Analytics
Os bancos de dados SQL exigem nomes de exibição exclusivos do Microsoft Entra ID. Com isso, contas do Microsoft Entra, como usuários, grupos e entidades de serviço (aplicativos) e nomes de VM habilitados para identidade gerenciada precisam ser definidos exclusivamente no Microsoft Entra ID específico para seus nomes de exibição correspondentes. O SQL verifica os nomes de exibição do Microsoft Entra ID durante a criação do T-SQL desses usuários. Se os nomes de exibição não forem exclusivos, o comando falhará e solicitará que você forneça um nome de exibição exclusivo do Microsoft Entra ID para cada conta fornecida.
Para criar um usuário contido
Abra o SQL Server Management Studio.
Na caixa de diálogo Conectar-se ao Servidor, insira o nome do servidor no campo Nome do servidor.
No campo Autenticação, selecione Active Directory – Universal com suporte para MFA.
No campo Nome de usuário, digite o nome da conta do Microsoft Entra que você definir como administrador do servidor; por exemplo, cjensen@fabrikam.com.
Selecione Opções.
No campo Conectar-se ao banco de dados, digite o nome do banco de dados não são do sistema que você deseja configurar.
Selecione Conectar e, em seguida, conclua o processo de entrada.
No Pesquisador de Objetos, expanda a pasta Bancos de Dados.
Clique com o botão direito do mouse no banco de dados de usuário e selecione Nova consulta.
Na janela de consulta, insira a linha a seguir e selecione Executar na barra de ferramentas:
Observação
VMName
no comando a seguir é o nome da VM para a qual você habilitou o sistema de identidade atribuído na seção de pré-requisitos.CREATE USER [VMName] FROM EXTERNAL PROVIDER
O comando deve ser concluído com êxito, criando o usuário independente para a identidade atribuída ao sistema da VM.
Limpe a janela de consulta, insira a linha a seguir e selecione Executar na barra de ferramentas:
Observação
VMName
no comando a seguir é o nome da VM para a qual você habilitou o sistema de identidade atribuído na seção de pré-requisitos.Se você encontrar o erro "Principal
VMName
tem um nome de exibição duplicado", anexe a instrução CREATE USER com WITH OBJECT_ID='xxx'.ALTER ROLE db_datareader ADD MEMBER [VMName]
O comando deve ser concluído com êxito, concedendo ao usuário independente a capacidade de ler todo o banco de dados.
O código em execução na VM agora pode obter um token usando a identidade gerenciada atribuída ao sistema e usar o token para se autenticar no servidor.
Acessar dados
Esta seção mostra a você como obter um token de acesso usando a identidade gerenciada atribuída pelo sistema da VM e usá-lo para chamar o SQL do Azure. O SQL do Azure 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. Esse método não requer o fornecimento de credenciais na cadeia de conexão.
Confira um exemplo de código .NET para abertura de uma conexão com o SQL usando a autenticação de Identidade Gerenciada do Active Directory. O código precisa ser executado na VM para ser capaz de acessar o ponto de extremidade da identidade gerenciada atribuída pelo sistema da VM.
É necessário ter o .NET Framework 4.6.2 ou superior ou o .NET Core 3.1 ou superior para usar esse método. Substitua os valores de AZURE-SQL-SERVERNAME e DATABASE adequadamente e adicione uma referência do NuGet à biblioteca Microsoft.Data.SqlClient.
using Microsoft.Data.SqlClient;
try
{
//
// Open a connection to the server using Active Directory Managed Identity authentication.
//
string connectionString = "Data Source=<AZURE-SQL-SERVERNAME>; Initial Catalog=<DATABASE>; Authentication=Active Directory Managed Identity; Encrypt=True";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
Observação
Você pode usar identidades gerenciadas enquanto trabalha com outras opções de programação usando nossos SDKs.
Ou use o PowerShell para testar a configuração de ponta a ponta sem precisar gravar e implantar um aplicativo na VM.
No portal, navegue até Máquinas Virtuais, acesse a VM do Windows e, em Visão geral, selecioneConectar.
Insira a credencial de administrador da VM que você adicionou quando criou a VM do Windows.
Agora que você criou uma Conexão de Área de Trabalho Remota com a VM, abra o PowerShell em uma sessão remota.
Usando o cmdlet
Invoke-WebRequest
do PowerShell, faça uma solicitação para o ponto de extremidade da identidade gerenciada local para obter um token de acesso ao SQL do Azure.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.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
Abra uma conexão com o servidor. Lembre-se de substituir os valores para AZURE-SQL-SERVERNAME e DATABASE.
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Data Source = <AZURE-SQL-SERVERNAME>; Initial Catalog = <DATABASE>; Encrypt=True;" $SqlConnection.AccessToken = $AccessToken $SqlConnection.Open()
Em seguida, crie e envie uma consulta para o servidor. Lembre-se de substituir o valor para TABLE.
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = "SELECT * from <TABLE>;" $SqlCmd.Connection = $SqlConnection $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $SqlAdapter.Fill($DataSet)
Por fim, examine o valor de $DataSet.Tables[0]
para exibir os resultados da consulta.
Desabilitar
Para desabilitar a identidade atribuída pelo sistema em sua VM, configure o status da identidade atribuída pelo sistema como Desativado.
Usar uma identidade gerenciada atribuída pelo sistema da VM do Windows para acessar o Azure Key Vault
Este tutorial mostra como uma VM (máquina virtual) do Windows pode usar uma identidade gerenciada atribuída pelo sistema para acessar o Azure Key Vault. O Key Vault possibilita que o aplicativo cliente use um segredo para acessar recursos não protegidos pelo Microsoft Entra ID. As identidades gerenciadas são gerenciadas automaticamente pelo Azure. Isso permite que você se autentique em serviços que oferecem suporte à autenticação do Microsoft Entra sem incluir informações de autenticação no seu código.
Você aprenderá a:
- Conceda o acesso da máquina virtual a um segredo armazenado em um Key Vault
- Obter um token de acesso usando a identidade da máquina virtual e usá-la para recuperar o segredo do Key Vault
Criar um cofre de chaves
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. Ao usar 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.
Primeiro, é necessário criar um cofre de chaves e conceder à sua identidade gerenciada atribuída ao sistema da VM acesso ao cofre de chaves.
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 e escolha Criar.
Forneça um Nome para o novo cofre de chaves.
Preencha todas as informações necessárias. Certifique-se de escolher a assinatura e o grupo de recursos que você está usando para este tutorial.
Selecione Revisar+ criar.
Selecione Criar.
Criar um segredo
Em seguida, adicione um segredo ao Key Vault, para que você possa recuperá-lo posteriormente usando o código em execução na sua VM. Nesta seção, você usará o PowerShell, mas os mesmos conceitos se aplicam a qualquer código executado em sua VM.
Navegue até o Key Vault recém-criado.
Selecione Segredos e, em seguida, Ações.
Selecione Gerar/Importar.
Da tela Criar um segredo, nasOpções de upload deixe Manual 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 validade em branco e deixe Habilitado como Sim.
Selecione Criar para criar o segredo.
Conceder acesso
A identidade gerenciada usada pela VM precisa ter acesso para fazer a leitura do segredo que o Key Vault armazena.
Navegue até o Key Vault recém-criado.
Selecione Política de Acesso no menu no lado esquerdo.
Selecione Adicionar Política de Acesso.
Na seção Adicionar política de acesso, em Configurar com base no modelo (opcional), escolha Gerenciamento de Segredo no menu suspenso.
Escolha Selecionar Entidade de Segurança e no campo de pesquisa insira o nome da VM criada anteriormente.
Selecione a VM na lista de resultados, em seguida, escolha Selecionar.
Selecione Adicionar.
Clique em Salvar.
Acessar dados
Esta seção mostra a você como obter um token de acesso usando a identidade da VM e como usá-lo para recuperar o segredo do Key Vault. Se você não tiver o PowerShell 4.3.1 ou superior instalado, você precisará baixar e instalar a versão mais recente.
Observação
O método de usar o PowerShell para autenticar e recuperar o segredo é preferencial nos cenários em que as identidades gerenciadas são especificamente necessárias ou ao inserir o processo no código de um aplicativo.
Primeiro, use a identidade gerenciada atribuída pelo sistema da VM para obter um token de acesso para autenticar o para o Key Vault:
- No portal, navegue até Máquinas Virtuais e acesse a VM do Windows e, em Visão geral, selecione 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.
- No PowerShell, invoque a solicitação Web no locatário para obter o token para o host local na porta específica para a máquina virtual.
Observação
Caso esteja usando uma nuvem soberana, como GCC-H, use o ponto de extremidade vault.usgovcloudapi.net
em vez de vault.azure.net
no cmdlet do PowerShell.
Exemplo de solicitação do PowerShell:
$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -Method GET -Headers @{Metadata="true"}
Observação
Ao trabalhar com nuvens soberanas, é necessário fazer ajustes no ponto de extremidade especificado no final do cmdlet.
Por exemplo, o vault.usgovcloudapi.net
deve ser usado ao trabalhar com a Nuvem do Azure Governamental, sendo este o resultado final:
$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.usgovcloudapi.net' -Method GET -Headers @{Metadata="true"
Para confirmar se o sufixo corresponde ao seu ambiente, examine o artigo Visão geral de segurança do Azure Key Vault.
A resposta deve ser semelhante a:
Em seguida, extraia o token de acesso da resposta.
$KeyVaultToken = $Response.access_token
Por fim, use o cmdlet Invoke-WebRequest
do PowerShell para recuperar o segredo criado anteriormente no Key Vault, passando o token de acesso no cabeçalho de Autorização. Você precisará da URL de seu Key Vault, que está na seção Essentials da página Visão geral do Key Vault.
Invoke-RestMethod -Uri https://<your-key-vault-URL>/secrets/<secret-name>?api-version=2016-10-01 -Method GET -Headers @{Authorization="Bearer $KeyVaultToken"}
A resposta deve se parecer com esta:
value id attributes
----- -- ----------
'My Secret' https://mi-lab-vault.vault.azure.net/secrets/mi-test/50644e90b13249b584c44b9f712f2e51 @{enabled=True; created=16…
Depois de recuperar o segredo do Key Vault, você pode usá-lo para autenticar um serviço que requer um nome e uma senha.
Limpar os recursos
Por fim, ao querer limpar recursos, entre no portal do Azure, selecione Grupos de recursos , em seguida, localize e selecione o grupo de recursos que foi criado no processo deste tutorial (como mi-test
). Em seguida, use o comando Excluir grupo de recursos.
Ou você também pode limpar recursos usando o PowerShell ou a CLI.
Usar uma identidade gerenciada atribuída pelo sistema de VM do Windows para acessar o gerenciador de recursos
Dica
As etapas neste artigo podem variar ligeiramente com base no portal do qual você começa.
Este tutorial explica como criar uma identidade atribuída pelo sistema, atribuí-la a uma VM (Máquina Virtual) do Windows 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 atribuída pelo sistema da VM 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.
No guia Membros, para a opção Atribuir acesso a, selecione Identidade gerenciada e escolha + 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.
Para a lista suspensa Gerenciar identidade, selecione Máquina virtual.
Quanto a 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 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, 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, usando o
curl
, faça uma solicitação às identidades gerenciadas locais do ponto de extremidade de recursos do Azure para obter um token de acesso para o 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 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.
Resposta:
{
"access_token":"eyJ0eXAiOi...",
"refresh_token":"",
"expires_in":"3599",
"expires_on":"1504130527",
"not_before":"1504126627",
"resource":"https://management.azure.com",
"token_type":"Bearer"
}
Use este token de acesso para acessar o Azure Resource Manager; por exemplo, para fazer a leitura dos detalhes do grupo de recursos ao qual você concedeu anteriormente este acesso à 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, portanto, certifique-se de que esteja usando as mesmas letras maiúsculas que usou anteriormente ao nomear o grupo de recursos e a letra “G” 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 atribuída pelo usuário em uma VM do Windows para acessar o Azure Resource Manager
Este tutorial explica como criar a identidade atribuída pelo usuário, atribuí-la a uma VM (Máquina Virtual) do Windows e então 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:
- Criar uma identidade gerenciada atribuída ao usuário
- Atribuir sua identidade atribuída pelo usuário à sua VM do Windows
- Conceder à identidade atribuída pelo usuário acesso a um Grupo de Recursos no Azure Resource Manager
- Obtenha um token de acesso usando a identidade atribuída pelo usuário e use-o para chamar o Azure Resource Manager
- Leia as propriedades de um grupo de recursos
Observação
Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Confira Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.
Configurar o Azure PowerShell localmente
Para executar scripts neste exemplo, você tem duas opções:
- Use o Azure Cloud Shell, que você pode abrir usando o botão Experimentar no canto superior direito dos blocos de código.
- Executar os scripts localmente com o Azure PowerShell, conforme descrito na próxima seção.
Para usar o Azure PowerShell localmente para este tutorial (em vez de usar o Cloud Shell), realize as seguintes etapas:
Instale a versão mais recente do Azure PowerShell, se ainda não o fez.
Entrar no Azure:
Connect-AzAccount
Instale a versão mais recente do PowerShellGet.
Install-Module -Name PowerShellGet -AllowPrerelease
Talvez seja necessário
Exit
da sessão atual do PowerShell depois de executar esse comando para a próxima etapa.Instale a versão lançada do módulo
Az.ManagedServiceIdentity
. Você precisará disso para executar as operações de identidade gerenciada atribuídas pelo usuário neste tutorial:Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
Habilitar
Para cenários baseados em uma identidade atribuída pelo usuário, execute as seguintes etapas nesta secção:
- Criar uma identidade.
- Atribuir a identidade recém-criada.
Criar a identidade
Esta seção mostra como criar uma identidade atribuída pelo usuário, que é criada como um recurso autônomo do Azure. Usando o cmdlet New-AzUserAssignedIdentity, o Azure cria uma identidade em seu locatário do Microsoft Entra que você poderá atribuir a uma ou mais instâncias de serviço do Azure.
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
New-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1
A resposta contém detalhes para a identidade atribuída pelo usuário criada, semelhante ao exemplo a seguir. Defina os valores de Id
e ClientId
para a sua identidade atribuída pelo usuário, conforme eles serão usados nas próximas etapas:
{
Id: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1
ResourceGroupName : myResourceGroupVM
Name: ID1
Location: westus
TenantId: aaaabbbb-0000-cccc-1111-dddd2222eeee
PrincipalId: aaaaaaaa-bbbb-cccc-1111-222222222222
ClientId: 00001111-aaaa-2222-bbbb-3333cccc4444
ClientSecretUrl: https://control-westus.identity.azure.net/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1/credentials?tid=aaaabbbb-0000-cccc-1111-dddd2222eeee&oid=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb&aid=00001111-aaaa-2222-bbbb-3333cccc4444
Type: Microsoft.ManagedIdentity/userAssignedIdentities
}
Atribuir identidade
Esta seção mostra a você como atribuir a identidade atribuída pelo usuário a uma VM do Windows. Uma identidade 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 atribuída pelo usuário a uma única VM. Use a propriedade Id
retornada na etapa anterior para o valor do parâmetro -IdentityID
.
$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Update-AzVM -ResourceGroupName TestRG -VM $vm -IdentityType "UserAssigned" -IdentityID "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
Conceder acesso
Esta seção mostra a você como conceder à sua identidade atribuída pelo usuário acesso a um grupo de recursos no Azure Resource Manager. As identidades gerenciadas para recursos do Azure fornecem 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, você acessa o grupo de recursos para o qual a VM está contida. Atualize os valores de <SUBSCRIPTIONID>
conforme apropriado para seu ambiente.
$spID = (Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1).principalid
New-AzRoleAssignment -ObjectId $spID -RoleDefinitionName "Reader" -Scope "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/"
A resposta contém detalhes para a atribuição de função criada, semelhante ao exemplo a seguir:
RoleAssignmentId: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000
Scope: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM
DisplayName: ID1
SignInName:
RoleDefinitionName: Reader
RoleDefinitionId: 00000000-0000-0000-0000-000000000000
ObjectId: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
ObjectType: ServicePrincipal
CanDelegate: False
Acessar dados
Dica
As etapas neste artigo podem variar ligeiramente com base no portal do qual você começa.
Obter um token de acesso
Para o restante do tutorial, você trabalha a partir da VM que criou anteriormente.
Entre no portal do Azure.
No portal, navegue até Máquinas Virtuais e acesse a VM do Windows. Na Visão geral, selecione Conectar.
Insira o seu Nome de usuário e Senha que você usou quando criou a VM do Windows.
Agora que você criou uma Conexão de Área de Trabalho Remota com sua VM, abra o PowerShell em uma sessão remota.
Usando o cmdlet
Invoke-WebRequest
do PowerShell, faça uma solicitação para as identidades gerenciadas locais para o ponto de extremidade de recursos do Azure para obter um token de acesso para o Azure Resource Manager. O valorclient_id
é o valor que foi retornado quando você criou a identidade gerenciada atribuída pelo usuário.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=00001111-aaaa-2222-bbbb-3333cccc4444&resource=https://management.azure.com/' -Method GET -Headers @{Metadata="true"} $content = $response.Content | ConvertFrom-Json $ArmToken = $content.access_token
Ler propriedades
Por fim, use o token de acesso recuperado na etapa anterior para acessar o Azure Resource Manager e, em seguida, faça a leitura das propriedades do grupo de recursos ao qual você concedeu acesso para a identidade atribuída pelo usuário. Substituir <SUBSCRIPTION ID>
com a ID da assinatura do seu ambiente.
(Invoke-WebRequest -Uri https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroupVM?api-version=2016-06-01 -Method GET -ContentType "application/json" -Headers @{Authorization ="Bearer $ArmToken"}).content
A resposta contém as informações de grupo de recursos específicas, semelhantes ao exemplo a seguir:
{"id":"/subscriptions/<SUBSCRIPTIONID>/resourceGroups/myResourceGroupVM","name":"myResourceGroupVM","location":"eastus","properties":{"provisioningState":"Succeeded"}}