Fundamentos de IAM
Esta aula apresenta os fundamentos de Gerenciamento de Identidade e Acesso (IAM), abordando os conceitos de identidade, acesso, provisionamento e desprovisionamento. O conteúdo explica como esses pilares garantem que usuários certos tenham acesso adequado a recursos, e como gerenciar o ciclo de vida de identidades de forma segura.
O Gerenciamento de Identidade e Acesso (IAM) é um framework de processos, políticas e tecnologias que permite às organizações gerenciar identidades digitais e controlar o acesso a recursos. IAM é fundamental para a segurança da informação, pois garante que apenas usuários autorizados possam acessar sistemas, dados e aplicações, no momento certo e pelo motivo certo. Nesta aula, exploraremos os quatro pilares essenciais do IAM: Identidade, Acesso, Provisionamento e Desprovisionamento.
Identidade
Identidade é o conjunto de atributos que define de forma única um usuário, sistema ou serviço dentro de um domínio digital. No contexto de IAM, a identidade é a base sobre a qual todas as permissões e controles são construídos. Cada identidade possui um identificador único (como um nome de usuário ou ID numérico) e atributos associados (como nome, e-mail, cargo, departamento, etc.).
Gerenciar identidades envolve criar, armazenar e manter essas informações de forma segura. As identidades podem ser de três tipos principais: identidades de usuário (pessoas), identidades de máquina (servidores, dispositivos IoT) e identidades de serviço (aplicações, APIs). Cada tipo requer políticas e controles específicos. Por exemplo, identidades de máquina geralmente usam certificados digitais ou tokens, enquanto identidades de usuário podem usar senhas ou autenticação multifator (MFA).
Um aspecto crítico é a unicidade e a não repudiação: a identidade deve ser única e as ações realizadas por ela devem ser atribuíveis. Para isso, utiliza-se diretórios como LDAP ou Active Directory, e provedores de identidade (IdP) em ambientes federados.
Exemplo de representação de identidade em um sistema de IAM:
{
"id": "user-12345",
"username": "joao.silva",
"email": "joao.silva@empresa.com",
"department": "TI",
"roles": ["admin", "operator"],
"status": "ACTIVE",
"createdAt": "2025-01-10T14:30:00Z"
}
Acesso
Acesso refere-se à capacidade de uma identidade de interagir com um recurso (arquivo, banco de dados, API, rede, etc.). O controle de acesso é o mecanismo que determina se uma solicitação de acesso deve ser concedida ou negada, com base em políticas predefinidas. Existem três modelos principais de controle de acesso: DAC (Controle de Acesso Discricionário), MAC (Controle de Acesso Obrigatório) e RBAC (Controle de Acesso Baseado em Funções). O RBAC é o mais comum em IAM, onde permissões são associadas a funções (roles), e funções são atribuídas a identidades.
Além do RBAC, existem modelos mais granulares como ABAC (Controle de Acesso Baseado em Atributos), que considera atributos do usuário, do recurso e do ambiente (ex.: horário, localização). A política de acesso é geralmente expressa em linguagem como XACML ou em formato JSON em soluções modernas (ex.: AWS IAM policies).
Um princípio fundamental é o do menor privilégio: cada identidade deve ter apenas as permissões necessárias para realizar suas tarefas. Isso reduz a superfície de ataque e limita danos em caso de comprometimento.
Exemplo de política de acesso no estilo AWS IAM:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject"],
"Resource": "arn:aws:s3:::bucket-relatorios/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "192.168.1.0/24"
}
}
}
]
}
Provisionamento
Provisionamento é o processo de criação e configuração de identidades e seus respectivos acessos em sistemas e aplicações. Envolve desde a criação da conta de usuário até a atribuição de permissões, grupos e funções. O provisionamento pode ser manual, mas em ambientes modernos é automatizado por meio de ferramentas de gerenciamento de identidades, como Okta, Azure AD, Keycloak ou sistemas de diretório.
O provisionamento deve seguir um fluxo bem definido: geralmente inicia-se com um gatilho (contratação de um funcionário, criação de um novo serviço) e inclui etapas como aprovação, criação da identidade no diretório, atribuição de grupos e funções, e sincronização com sistemas downstream (e-mail, CRM, ERP). É essencial que o provisionamento seja rastreável e auditável, gerando logs de todas as ações.
Uma boa prática é utilizar o conceito de "just-in-time" (JIT), onde o acesso é provisionado apenas no momento em que é necessário e por tempo limitado. Isso reduz o risco de contas órfãs ou acessos excessivos.
Exemplo de script de provisionamento (simplificado) usando uma API de diretório:
POST /api/users
{
"username": "maria.oliveira",
"email": "maria@empresa.com",
"firstName": "Maria",
"lastName": "Oliveira",
"groups": ["vendas", "relatorios"],
"roles": ["user"]
}
Desprovisionamento
Desprovisionamento é o processo reverso: remover identidades e seus acessos quando não são mais necessários. Isso ocorre em situações como demissão de funcionário, desativação de serviço, ou mudança de função. O desprovisionamento é crucial para evitar contas órfãs, que são um dos principais vetores de ataques internos e externos.
Um desprovisionamento eficaz deve incluir: desativação ou exclusão da conta no diretório central, remoção de permissões em todos os sistemas, revogação de tokens e certificados, e arquivamento de logs e dados conforme políticas de retenção. Idealmente, o processo deve ser automatizado e integrado ao sistema de RH (para demissões) ou a workflows de mudança de função.
Muitas organizações adotam uma política de desprovisionamento em duas etapas: primeiro, desabilitam a conta (para permitir recuperação em caso de erro) e, após um período de carência, realizam a exclusão definitiva. É importante também notificar os administradores e auditar o processo.
Exemplo de comando de desprovisionamento via API:
DELETE /api/users/maria.oliveira
Authorization: Bearer token_admin
Response: 200 OK
{
"status": "disabled",
"scheduledDeletion": "2025-08-01T00:00:00Z"
}
Boas Práticas em IAM
Além dos pilares, algumas boas práticas são essenciais: implementar autenticação multifator (MFA) para todas as identidades, utilizar senhas fortes ou autenticação sem senha (FIDO2), revisar periodicamente as permissões (access reviews), manter logs centralizados de todas as ações de IAM, e seguir o princípio do menor privilégio. A segregação de funções (SoD) também é importante para evitar que uma única identidade tenha permissões conflitantes (ex.: criar usuário e auditar logs).
Outro ponto é a governança: políticas claras de criação, modificação e remoção de identidades, com aprovações baseadas em níveis hierárquicos. Ferramentas de IAM modernas oferecem dashboards e relatórios para monitoramento contínuo.
Referências
- AWS IAM Documentation
- Microsoft Entra ID (Azure AD) Documentation
- Okta Identity 101
- Keycloak Documentation
- NIST SP 800-63: Digital Identity Guidelines
- LDAP: Lightweight Directory Access Protocol
- OASIS XACML
Exercícios
- Explique a diferença entre RBAC e ABAC e dê um exemplo de cenário onde ABAC seria mais adequado.
- Descreva o ciclo de vida de uma identidade digital, desde a solicitação até o desprovisionamento.
- Quais são os riscos de não realizar o desprovisionamento adequado? Dê exemplos.
- Cite duas ferramentas de IAM e explique como elas ajudam no provisionamento automatizado.
- O que é o princípio do menor privilégio e como aplicá-lo em uma política de IAM? Dê um exemplo.