DEV Community

Cover image for Managed Identity Identidade Gerenciada (Azure)
Lucas Santos
Lucas Santos

Posted on

Managed Identity Identidade Gerenciada (Azure)

Conceitos Importantes:

Microsoft Entra Id: O Microsoft Entra Id é um serviço de gerenciamento de acesso e identidade baseado na nuvem que permite aos usuários autenticarem-se e acessarem recursos externos, como o Microsoft 365, o portal do Azure e milhares de outros aplicativos SaaS. Ele fornece uma maneira segura de gerenciar as identidades dos usuários e controlar seu acesso a recursos na nuvem.

Identidade Gerenciada: A Identidade Gerenciada (Managed Identity) é um recurso no Azure que fornece credenciais de autenticação de forma segura para os aplicativos e serviços em execução na nuvem. Ela elimina a necessidade de armazenar credenciais de autenticação dentro do código ou configurações de aplicativos, melhorando a segurança e simplificando a gestão de identidades.

A Identidade Gerenciada no Microsoft Entra Id é uma funcionalidade que permite aos aplicativos e serviços em execução na nuvem do Azure obterem automaticamente credenciais de autenticação de forma segura, sem a necessidade de armazenar credenciais explicitamente no código ou em configurações.

Tipos de Identidades Gerenciadas

Existem dois tipos principais de Identidades Gerenciadas no Azure:

  1. Identidade Gerenciada do Sistema: Associada a um recurso específico no Azure, como uma máquina virtual ou uma função de aplicativo. Essa identidade é criada automaticamente pelo Azure e é exclusiva para o recurso ao qual está fortemente associada.
  2. Identidade Gerenciada do Serviço: Associada a um serviço ou aplicativo, em vez de um recurso específico. Ela pode ser usada por vários recursos dentro do mesmo serviço ou aplicativo.

Vejamos a diferença:

Antes:
Antes da introdução da Identidade Gerenciada no Azure, os aplicativos muitas vezes precisavam armazenar credenciais de autenticação, como nomes de usuário e senhas, em arquivos de configuração ou em código fonte. Isso representava um risco de segurança, pois essas credenciais poderiam ser comprometidas se o código ou a configuração fossem acessados por pessoas não autorizadas.

// Caminho para o arquivo de certificado
string certFilePath = "caminho/para/seu/certificado.pfx";

// Senha do certificado
string certPassword = "senha-do-certificado";

try {
    // Carregar o certificado
    X509Certificate2 cert = new X509Certificate2(certFilePath, certPassword);

    // Criar um objeto ClientCertificateCredential
    ClientCertificateCredential credential = new ClientCertificateCredential(
      tenantId: "seu-tenant-id",
      clientId: "seu-client-id",
    certificate: cert);

    // Autenticar com o Azure
    var azure = Azure.Configure()
      WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
      .Authenticate(credential)
    .WithDefaultSubscription();

    // Exemplo de uso: listar VMs
  var vms = azure.VirtualMachines.List();
  foreach (var vm in vms)
  {
      Console.WriteLine(vm.Name);
  }
} catch (Exception ex) {
    Console.WriteLine($"Erro ao autenticar com o Azure: {ex.Message}");
}
Enter fullscreen mode Exit fullscreen mode

Depois:
Com a Identidade Gerenciada, os aplicativos podem obter credenciais de autenticação de forma segura e automática, sem a necessidade de armazenar credenciais diretamente. Por exemplo, uma máquina virtual no Azure pode ter uma Identidade Gerenciada associada a ela. Quando o aplicativo em execução na máquina virtual precisa acessar recursos no Azure, ele pode usar a Identidade Gerenciada para autenticar-se de forma segura, sem precisar armazenar ou gerenciar credenciais explicitamente. Isso melhora a segurança e simplifica a gestão de identidades em ambientes de nuvem.

// Configure a autenticação usando AzureCliCredential ou InteractiveBrowserCredential
var credential = new DefaultAzureCredential();

// Crie um cliente do Key Vault
var client = new SecretClient(new Uri(keyVaultUri), credential);

// Recupere um segredo do Key Vault
string secretName = "seu-segredo";
KeyVaultSecret secret = client.GetSecret(secretName);
Enter fullscreen mode Exit fullscreen mode

Top comments (0)