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
👋 One last chance before you go!

It takes one minute to join DEV and is worth it for your career.

You get 3x the value by signing in instead of lurking

Get started

Community matters

Top comments (0)

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay