IAM, ou Identity and Access Management, é uma estrutura de processos e tecnologias que garantem que as pessoas certas tenham acesso aos recursos certos, no momento certo e pelos motivos certos. Em um ambiente corporativo, a gestão de identidades e acessos é fundamental para proteger dados sensíveis, evitar vazamentos e cumprir regulamentações. Esta aula explora os quatro pilares fundamentais do IAM: identidade, acesso, provisionamento e desprovisionamento, fornecendo uma base sólida para entender como implementar controles de segurança eficazes.

Com o aumento dos ataques cibernéticos e a complexidade dos ambientes de TI (como nuvem, on-premises e híbrido), o IAM se tornou um componente crítico da estratégia de segurança. Sem uma gestão adequada, as organizações correm o risco de expor dados a usuários não autorizados, sofrer ataques internos e enfrentar dificuldades em auditorias. Vamos mergulhar em cada um desses conceitos.

Identidade

Identidade é o conjunto de atributos que define de forma única uma entidade (usuário, dispositivo, serviço ou aplicação) em um sistema. No contexto de IAM, a identidade é a base sobre a qual as permissões são concedidas. Cada identidade possui um identificador único (como um nome de usuário ou ID) e credenciais (senha, certificado, biometria) que comprovam sua autenticidade.

Gerenciar identidades envolve criar, armazenar e manter essas informações ao longo do ciclo de vida do usuário. Em organizações, as identidades podem ser armazenadas em diretórios como o Active Directory (AD) ou soluções de nuvem como o Azure AD. Um exemplo de atributo de identidade é o cargo do funcionário, que pode influenciar as permissões concedidas. A identidade também pode ser federada, permitindo que um único login (Single Sign-On) funcione em múltiplos sistemas.

Boas práticas para identidade incluem:

  • Usar identificadores únicos e imutáveis (ex.: UUID).
  • Implementar autenticação multifator (MFA) para aumentar a segurança.
  • Manter um repositório centralizado de identidades (diretório).
  • Revisar periodicamente identidades inativas ou órfãs.

Acesso

Acesso refere-se à capacidade de uma identidade interagir com um recurso (arquivo, banco de dados, aplicação). O controle de acesso define quem pode fazer o quê, baseado em políticas. Os modelos mais comuns são:

  • RBAC (Role-Based Access Control): permissões são atribuídas a papéis (ex.: administrador, usuário), e os usuários recebem papéis.
  • ABAC (Attribute-Based Access Control): as decisões de acesso são baseadas em atributos (ex.: cargo, localização, horário).
  • PBAC (Policy-Based Access Control): políticas explícitas definem as regras.

O princípio do menor privilégio é essencial: cada identidade deve ter apenas as permissões necessárias para executar suas tarefas. Exemplo: um funcionário de RH não precisa acessar o sistema de faturamento. Ferramentas de IAM permitem definir e auditar essas permissões. Abaixo, um exemplo de política ABAC em JSON (simplificado):

{
  "Effect": "Allow",
  "Action": ["s3:GetObject"],
  "Resource": "arn:aws:s3:::bucket-dados/*",
  "Condition": {
    "StringEquals": {
      "aws:PrincipalTag/departamento": "rh"
    }
  }
}

Essa política permite que apenas usuários com a tag "departamento=rh" leiam objetos do bucket S3.

Provisionamento

Provisionamento é o processo de criação e configuração de identidades e seus acessos em sistemas e aplicações. Quando um novo funcionário é contratado, o provisionamento automatizado cria sua conta, atribui grupos e permissões conforme seu cargo. Isso reduz erros manuais e acelera a integração (onboarding).

Ferramentas de provisionamento (como Okta, Azure AD, AWS IAM Identity Center) permitem definir fluxos de trabalho que disparam ações quando eventos ocorrem (ex.: novo usuário no RH). Exemplo de script de provisionamento em PowerShell (simplificado):

# Criar usuário no Active Directory
New-ADUser -Name "João Silva" -SamAccountName "joao.silva" -UserPrincipalName "joao.silva@empresa.com" -Enabled $true -AccountPassword (ConvertTo-SecureString "Senha@123" -AsPlainText -Force)

# Adicionar ao grupo "Funcionarios"
Add-ADGroupMember -Identity "CN=Funcionarios,DC=empresa,DC=com" -Members "joao.silva"

O provisionamento deve ser integrado com sistemas de RH (HRIS) para automatizar a criação e alteração de contas. Também é importante definir políticas de senha e MFA durante o provisionamento.

Desprovisionamento

Desprovisionamento é o processo de remover identidades e acessos quando não são mais necessários, como na demissão de um funcionário ou desativação de um serviço. É tão crítico quanto o provisionamento, pois contas órfãs são um vetor comum de ataques. O desprovisionamento deve ser rápido e completo, incluindo a revogação de todas as permissões e a desabilitação ou exclusão da conta.

Um processo típico de desprovisionamento inclui:

  1. Receber um gatilho (ex.: desligamento no RH).
  2. Desabilitar a conta imediatamente (impedir login).
  3. Revogar sessões ativas (force logout).
  4. Remover associações a grupos e permissões.
  5. Após um período de retenção, excluir a conta.

Exemplo de script de desprovisionamento no AWS IAM:

aws iam delete-user --user-name joao.silva
# ou desabilitar chaves de acesso
aws iam update-access-key --access-key-id AKIA... --status Inactive --user-name joao.silva

Boas práticas incluem manter logs de todas as ações de provisionamento e desprovisionamento para auditoria, e revisar periodicamente contas inativas.

Referências

Exercícios

  1. Explique a diferença entre RBAC e ABAC, citando um cenário onde cada um seria mais adequado.
  2. ✓ Resposta: RBAC atribui permissões a papéis, e os usuários recebem papéis. É adequado quando os cargos são bem definidos e estáveis (ex.: empresa com departamentos fixos). ABAC usa atributos para decisões de acesso, sendo mais flexível em ambientes dinâmicos (ex.: conceder acesso apenas em horário comercial ou para usuários de determinado local).
  3. Descreva o princípio do menor privilégio e dê um exemplo prático de sua aplicação.
  4. ✓ Resposta: O princípio do menor privilégio determina que um usuário deve ter apenas as permissões necessárias para realizar suas funções. Exemplo: um estagiário de marketing pode precisar de acesso de leitura a relatórios de campanha, mas não de acesso de escrita ao banco de dados de clientes.
  5. Quais são os passos essenciais para desprovisionar um funcionário que está saindo da empresa?
  6. ✓ Resposta: 1. Desabilitar a conta (impedir login). 2. Revogar sessões ativas. 3. Remover associações a grupos e permissões. 4. Transferir propriedade de recursos (se necessário). 5. Após período de retenção, excluir a conta. Manter logs para auditoria.
  7. O que é provisionamento automatizado e por que ele é importante?
  8. ✓ Resposta: Provisionamento automatizado é o uso de ferramentas para criar, modificar e desabilitar contas de forma automática com base em eventos (ex.: integração com RH). Reduz erros manuais, acelera o onboarding/offboarding e garante consistência nas permissões.
  9. Dê um exemplo de como uma política de acesso baseada em atributos (ABAC) pode ser usada para restringir acesso a dados sensíveis.
  10. ✓ Resposta: Uma política ABAC pode permitir acesso a um bucket S3 apenas se o usuário tiver a tag "departamento=financeiro" e a requisição for feita durante o horário comercial (9h-18h). Isso impede acessos fora do expediente ou de usuários de outros departamentos.