O desafio de governar identidades em escala na AWS
O AWS IAM Identity Center é o ponto central de autenticação e autorização para recursos AWS dentro de uma organização. Ele se integra ao provedor de identidade externo (IdP) da empresa e ao AWS Organizations, além de suportar um número crescente de serviços AWS com integração nativa.
À medida que a organização cresce, manter visibilidade sobre quem acessa o quê — e garantir que as políticas de governança sejam aplicadas de forma consistente em todas as contas e regiões — se torna progressivamente mais complexo. O Identity Center centraliza autenticação e autorização, mas rastrear atribuições de acesso e fazer cumprir políticas de segurança em escala é um desafio próprio.
A AWS publicou uma solução de exemplo que automatiza a descoberta e o reporte dessas atribuições, ajudando equipes de segurança e governança a responder perguntas como:
- Quais usuários ou grupos têm acesso a quais aplicações AWS?
- Quem acessou determinada aplicação pela última vez e quando?
- Quais usuários e grupos estão atribuídos a aplicações do Identity Center em toda a organização e regiões?
- Como gerar relatórios rapidamente para auditorias de conformidade ou revisões de segurança?
Planejando a governança de identidades para atribuições de aplicações
Antes de implementar qualquer automação, a AWS recomenda alinhar quatro áreas fundamentais, envolvendo equipes de segurança, governança, aplicações e negócios:
- Quem pode provisionar aplicações gerenciadas: As restrições de criação de recursos AWS nas contas da organização devem ser implementadas via políticas de identidade IAM, Políticas de Controle de Serviço (SCP), Políticas de Controle de Recursos (RCP) ou ferramentas de avaliação de políticas como Open Policy Agent (OPA) ou Checkov.
- Quem gerencia atribuições de usuários e grupos: O administrador da aplicação gerenciada cuida da autorização dentro de uma conta AWS. É recomendado definir claramente papéis e responsabilidades ao longo do fluxo de trabalho.
- Como o fluxo de autenticação ocorre do IdP aos recursos AWS: Usuários se autenticam no Identity Center, são autorizados a acessar aplicações gerenciadas e, a partir daí, acessam os serviços e recursos AWS associados.
- Mapeamento de identidades do IdP ao acesso em recursos AWS: É preciso estabelecer a ligação entre usuários e grupos no IdP, as aplicações gerenciadas no Identity Center e os recursos e permissões downstream. A Propagação de Identidade Confiável (TIP) é um recurso adicional do Identity Center que fornece rastreabilidade completa da identidade até o serviço downstream.
Criando e gerenciando o ciclo de vida de atribuições de aplicações
Como boa prática de segurança, a AWS recomenda habilitar a administração delegada ao gerenciar o Identity Center em instâncias de organização AWS. Após configurar o IAM Identity Center em uma instância de organização, as contas-membro podem criar recursos AWS associados. Para isso, os principais IAM que provisionam recursos precisam de dois tipos de permissões IAM específicas:
- Permissões específicas do serviço AWS: Por exemplo, para criar um domínio do Amazon SageMaker AI, são necessárias as permissões habituais de criação do domínio e dos recursos downstream que o SageMaker AI utiliza.
- Permissões específicas do IAM Identity Center: O principal IAM usado para criar o recurso também precisa de permissões para gerenciar aplicações dentro da instância do Identity Center.
Um exemplo de política IAM para criação e gerenciamento de aplicações no Identity Center:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sso:CreateManagedApplicationInstance",
"sso:GetManagedApplicationInstance",
"sso:DeleteManagedApplicationInstance",
"sso:DescribeRegisteredRegions"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"sso:CreateApplication",
"sso:DescribeApplication",
"sso:DeleteApplication",
"sso:PutApplicationGrant",
"sso:PutApplicationAuthenticationMethod",
"sso:PutApplicationAccessScope"
],
"Resource": [
"arn:aws:sso::<INSERT-ACCOUNT-ID>:application/ssoins-<INSERT-INSTANCE-ID>/apl-*"
]
}
]
}
Um ponto importante: os Nomes de Recurso Amazon (ARN) de aplicações do Identity Center usam identificadores únicos (GUIDs) gerados no momento da criação, diferente de recursos como buckets do Amazon Simple Storage Service (Amazon S3), cujo nome aparece diretamente no ARN.
Gerenciando acesso a uma aplicação do Identity Center
Após criar a aplicação, é necessário gerenciar o acesso a ela. Dois tipos de permissões IAM são necessários:
1. Permissões para listar usuários e grupos do Identity Center:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListIdentityCenterUsers",
"Effect": "Allow",
"Action": [
"identitystore:ListUsers",
"identitystore:DescribeUser",
"identitystore:ListGroups",
"identitystore:DescribeGroup",
"identitystore:ListGroupMemberships"
],
"Resource": "*"
}
]
}
Vale notar que as ações de listagem exigem acesso a AllUsers ou AllGroups, o que significa que uma política IAM restritiva não pode impedir que um principal veja um subconjunto de usuários ou grupos no identity store.
2. Permissões para criar e gerenciar atribuições de aplicações:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ManageApplicationAssignments",
"Effect": "Allow",
"Action": [
"sso:CreateApplicationAssignment",
"sso:DeleteApplicationAssignment",
"sso:ListApplicationAssignments",
"sso:PutApplicationAssignmentConfiguration"
],
"Resource": [
"arn:aws:sso::<INSERT-ACCOUNT-ID>:application/ssoins-<INSERT-INSTANCE-ID>/apl-*"
]
}
]
}
Como o ARN da aplicação do Identity Center usa um ID único gerado na criação, não é recomendado implementar políticas IAM que restrinjam principais autorizados a gerenciar aplicações específicas do Identity Center por ARN. Em vez disso, a recomendação é limitar o gerenciamento de aplicações e atribuições a um número reduzido de principais IAM autorizados, complementado por capacidades de detecção e resposta.
Planejando convenções de nomenclatura e estratégia de automação
O IAM Identity Center disponibiliza diversas APIs para capturar informações sobre instâncias, aplicações e atribuições na organização. Antes de implementar automação ou guardrails, é importante definir uma abordagem metódica. A AWS sugere:
- Convenção para grupos no IdP: Ex.:
AWS_<ACCT#>_<AWS_Service>_<LOB>_<ENV>_<AppName> → AWS_123412341234_SageMaker_Data_PROD_GTLabel
- Convenção para recursos AWS integrados ao Identity Center: Ex.:
<AWS_Service>_<LOB>_<AppName> → SageMaker_Data_GTLabel
- Convenção para nomes de aplicações no Identity Center: Ex.:
<AWS_Service>_<LOB>_<ENV>_<AppName> → SageMaker_Data_PROD_GTLabel
Também é importante decidir quais partes do fluxo serão centralizadas — criação de aplicações, atribuições ou remediação de problemas. Centralizar demais pode criar gargalos; descentralizar demais aumenta o risco de atribuições fora dos padrões de segurança corporativos. O equilíbrio certo depende do contexto de cada organização.
Para localizar o ARN de uma aplicação do Identity Center a partir de um recurso AWS específico (como um domínio SageMaker AI), uma busca reversa é necessária, pois os serviços AWS criam aplicações Identity Center com ARNs baseados em GUID que não são facilmente descobertos. Veja o exemplo em shell:
#!/bin/bash
DOMAIN_ID="d-xxxxxxxxxxxx"
REGION="xx-xxxx-x"
# Step 1: Get SageMaker domain details
echo "=== SageMaker Domain Details ==="
DOMAIN_INFO=$(aws sagemaker describe-domain \
--region $REGION \
--domain-id $DOMAIN_ID)
# Step 2: Extract Identity Center application ARN
SSO_APP_ARN=$(echo $DOMAIN_INFO | jq -r '.SingleSignOnApplicationArn')
echo "Identity Center App ARN: $SSO_APP_ARN"
A solução de automação: descoberta e relatórios
A solução de exemplo sample-iam-idc-application-discovery-reporting, disponível no GitHub, é composta por duas stacks separadas do AWS Cloud Development Kit (AWS CDK):
- Stack de relatórios de governança (
/identity-center-reporting): fornece descoberta automatizada e geração de relatórios em CSV.
- Stack de remediação (
/identity-center-remediation): fornece aplicação de políticas em tempo real e notificações.
A recomendação é implantar primeiro a stack de relatórios para estabelecer visibilidade de baseline, e depois a stack de remediação para aplicação de políticas.
Recursos implantados pela stack de relatórios
- Amazon EventBridge: regra que invoca o fluxo de descoberta diariamente às 2h UTC (configurável).
- AWS Step Functions: orquestra o fluxo de descoberta em múltiplos estágios — instâncias, aplicações e atribuições.
- AWS Lambda: realiza a descoberta de instâncias do Identity Center, enumera aplicações e mapeia usuários e grupos a aplicações, resolvendo nomes amigáveis do Identity Store.
- Amazon DynamoDB: armazena instâncias, aplicações e atribuições descobertas, criptografadas com chave gerenciada pelo cliente via AWS Key Management Service (AWS KMS).
- Amazon API Gateway: fornece uma API REST autenticada via IAM para geração e exportação de relatórios como arquivos CSV.
- Amazon S3: armazena as exportações CSV criptografadas, com políticas de ciclo de vida e URLs pré-assinadas com tempo limitado para download.
Pré-requisitos e implantação da stack de relatórios
Para implantar a solução, são necessários:
- Uma organização AWS com instância do IAM Identity Center e administração delegada configurada.
- IAM Identity Center configurado com ao menos uma instância.
- Interface de Linha de Comando AWS (AWS CLI) configurada com credenciais adequadas.
- Python 3.12 e Node.js 18 ou superior instalados para o deploy com CDK.
Comandos para implantação:
git clone https://github.com/aws-samples/sample-iam-idc-application-discovery-reporting
cd identity-center-reporting
python3.12 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cdk bootstrap aws://<INSERT-ACCOUNT-ID>/<INSERT-REGION>
export IDC_EXTERNAL_ID="$(uuidgen)"
cdk deploy --parameters AllowedIpRange=10.0.0.0/8 --parameters CrossAccountExternalId="$IDC_EXTERNAL_ID"
O parâmetro AllowedIPRange é opcional, mas recomendado como boa prática de segurança — ele adiciona uma restrição de rede ao download da URL pré-assinada do Amazon S3. Para descoberta de instâncias Identity Center em nível de conta AWS, é necessária uma função IAM entre contas:
python scripts/deploy-cross-account-roles.py --external-id "$IDC_EXTERNAL_ID"
Após o deploy, a automação roda em agendamento diário. A primeira execução de descoberta ocorre imediatamente após a implantação. É possível monitorar o histórico de execuções pelo console do AWS Step Functions, revisar logs detalhados no Amazon CloudWatch Logs e consultar instâncias, aplicações e atribuições descobertas diretamente no console do DynamoDB.
Gerando relatórios de atribuições
Para gerar relatórios sob demanda como arquivos CSV via API REST:
export AWS_REGION="<REPLACE-REGION>"
export API_ID="<REPLACE-API-ID>"
eval "$(aws configure export-credentials --profile "<YOUR-PROFILE>" --format env)"
# Exportar aplicações
curl -sS --fail-with-body \
--aws-sigv4 "aws:amz:${AWS_REGION}:execute-api" \
--user "${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}" \
--header "x-amz-security-token: ${AWS_SESSION_TOKEN}" \
"https://${API_ID}.execute-api.${AWS_REGION}.amazonaws.com/prod/export/applications" \
-o applications.json
# Exportar atribuições com nomes de usuários e grupos
curl -sS --fail-with-body \
--aws-sigv4 "aws:amz:${AWS_REGION}:execute-api" \
--user "${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}" \
--header "x-amz-security-token: ${AWS_SESSION_TOKEN}" \
"https://${API_ID}.execute-api.${AWS_REGION}.amazonaws.com/prod/export/assignments" \
-o assignments.json
A API retorna um JSON com uma URL pré-assinada do Amazon S3 válida por 15 minutos. Os arquivos CSV gerados incluem dados enriquecidos com nomes amigáveis, como ARN da instância, ID da conta, nome da aplicação, tipo de principal, nome do principal e status. Com esses dados, é possível identificar anomalias ou atribuições não conformes — por exemplo, uma aplicação de produção que deveria ter apenas atribuições de grupo, mas possui um usuário individual atribuído.
Stack de remediação: monitoramento e resposta em tempo real
A stack de remediação complementa os relatórios com aplicação de políticas em tempo real. Os recursos implantados incluem:
- Amazon EventBridge: captura eventos de atribuição e perfil do IAM Identity Center via CloudTrail (
sso.amazonaws.com) para ações como CreateApplicationAssignment, DeleteApplicationAssignment, PutApplicationAssignmentConfiguration, AssociateProfile, DisassociateProfile, CreateProfile, UpdateProfile e DeleteProfile.
- AWS Lambda: resolve nomes de aplicações e grupos, valida a atribuição contra a convenção de nomenclatura e notifica ou remedia conforme o modo configurado.
- Amazon Simple Notification Service (Amazon SNS): publica alertas de atribuições não conformes para assinantes (como e-mail).
- Amazon Simple Queue Service (Amazon SQS): captura eventos que a função Lambda não conseguiu processar para inspeção posterior.
- AWS KMS: chave gerenciada pelo cliente para criptografar variáveis de ambiente do Lambda, logs do CloudWatch, tópico SNS e fila de mensagens mortas.
- Amazon CloudWatch: grupo de logs armazena os logs estruturados e criptografados da função como trilha de auditoria.
As políticas de nomenclatura suportam correspondência por expressões regulares (regex) para requisitos organizacionais específicos.
Implantação da stack de remediação
git clone https://github.com/aws-samples/sample-iam-idc-application-discovery-reporting
cd identity-center-remediation
cdk deploy --context enableAutoDeletion=false --parameters IdentityCenterInstanceArn=arn:aws:sso:::instance/ssoins-<INSERT-ORG-INSTANCE-ID> --parameters ManagementAccountId=<INSERT-MANAGEMENT-ACCOUNT>
Por padrão, a solução verifica se o nome do grupo aparece como palavra completa no nome da aplicação (sem distinção entre maiúsculas e minúsculas, separando por -, _ e espaços). Assim, ReadOnly corresponde a sagemaker_readonly, mas read não corresponde. Para casos de uso diferentes, o parâmetro GroupNameRegex pode ser passado durante o deploy.
Testando atribuições conformes e não conformes
Para obter as informações necessárias do ambiente:
INSTANCE_ARN=$(aws sso-admin list-instances --region <REPLACE-REGION> --query "Instances[0].InstanceArn" --output text)
echo "$INSTANCE_ARN"
IDENTITY_STORE_ID=$(aws sso-admin list-instances --region <REPLACE-REGION> --query "Instances[0].IdentityStoreId" --output text)
echo "$IDENTITY_STORE_ID"
aws identitystore list-groups --identity-store-id $IDENTITY_STORE_ID --query "Groups[].{Name:DisplayName,Id:GroupId}" --output table
aws sso-admin list-applications --instance-arn $INSTANCE_ARN --query "Applications[?Status=='ENABLED'].{Name:Name,ARN:ApplicationArn}" --output table
Definindo variáveis para os grupos e aplicação de teste:
export GRP_READONLY=abc12345-1234-1234-1234-abcdef123456
export GRP_DEVELOPER=abc12345-1234-1234-1234-abcdef123457
export APP_READONLY="arn:aws:sso::<INSERT-ACCOUNT-ID>:application/<INSERT-INSTANCE-ARN>/<INSERT-APPLICATION-ARN>"
Atribuição conforme — adicionando o grupo ReadOnly à aplicação sagemaker_readonly:
aws sso-admin create-application-assignment --application-arn $APP_READONLY --principal-id $GRP_READONLY --principal-type GROUP
O log da função Lambda mostrará:
✓ COMPLIANT - Group name found in application name applicationName="sagemaker_readonly" groupName="ReadOnly"
Remediation action determined: NONE
Atribuição não conforme — tentando adicionar o grupo Developer à aplicação sagemaker_readonly:
aws sso-admin create-application-assignment --application-arn $APP_READONLY --principal-id $GRP_DEVELOPER --principal-type GROUP
O log mostrará:
✗ NON-COMPLIANT - Group name not found in application name applicationName="sagemaker_readonly" groupName="Developer"
Remediation action determined: NOTIFICATION_ONLY
SNS notification sent successfully
Com enableAutoDeletion=false, a solução apenas notifica. Para que a atribuição seja removida automaticamente, o valor deve ser alterado para enableAutoDeletion=true. A mensagem SNS enviada inclui detalhes como tipo de evento, nome da aplicação, nome do grupo, ação tomada, ARN da aplicação e quem iniciou a ação.
Governança IAM em escala: um framework de alto nível
A AWS sugere os seguintes passos de alto nível para estruturar a governança do Identity Center com essas soluções:
- Implantar a automação com um principal IAM que tenha acesso na conta de administrador delegado.
- Estabelecer uma baseline executando a primeira descoberta e revisando os relatórios gerados.
- Configurar políticas de nomenclatura alinhadas às convenções de segurança da organização.
- Implantar o monitoramento orientado a eventos para habilitar aplicação de políticas em tempo real.
- Começar no modo de notificação para validar as políticas antes de habilitar a auto-remediação.
- Integrar com ferramentas de governança conectando os endpoints da API a dashboards de conformidade ou ferramentas de ITSM.
- Migrar para auto-remediação após validar que as políticas estão funcionando conforme esperado.
Os relatórios agendados fornecem visibilidade de baseline sobre as aplicações gerenciadas pelo IAM Identity Center. O monitoramento orientado a eventos entrega notificações ou aplicação de políticas em tempo quase real. Juntas, essas soluções ajudam a alinhar e escalar o Identity Center com os padrões de governança e segurança da organização — por meio de análise histórica e resposta imediata.
Limpeza do ambiente
Para remover as stacks implantadas, execute os seguintes comandos nas respectivas contas AWS:
# Remover a stack de remediação
cd sample-iam-idc-application-discovery-reporting/identity-center-remediation
cdk destroy
# Remover a stack de relatórios
cd sample-iam-idc-application-discovery-reporting/identity-center-reporting
cdk destroy
Fonte
Automate IAM Identity Center governance with continuous discovery and reporting (https://aws.amazon.com/blogs/security/automate-iam-identity-center-governance-with-continuous-discovery-and-reporting/)