Gerencie uma equipe com grupos IAM

AWSBeginner
Pratique Agora

Introdução

Dois analistas precisam do mesmo acesso a relatórios. Você gerenciará uma política compartilhada, transferirá a responsabilidade pelos relatórios de Alice para Bob e verificará que um ex-membro perde esse acesso.

Conclua primeiro Conceda privilégio mínimo a um leitor de relatórios para conhecer políticas de identidade e solicitações permitidas e negadas. Esta VM nova fornece default para administração e alice, bob e outsider para testes. Use /home/labex/project e AWS View para comparar a participação no grupo com leituras efetivas.

Relação com as certificações

Certificação Tarefa do exame Prática
Cloud Practitioner (CLF-C02) Tarefa 2.3 Associação a grupos IAM e permissões de acesso herdadas.
Solutions Architect – Associate (SAA-C03) Tarefa 1.1 Associação a grupos IAM e permissões de acesso herdadas.
Developer – Associate (DVA-C02) Tarefa 2.1 Associação a grupos IAM e permissões de acesso herdadas.
CloudOps Engineer – Associate (SOA-C03) Tarefa 4.1 Associação a grupos IAM e permissões de acesso herdadas.
Security – Specialty (SCS-C03) Tarefa 4.2 Prática dos fundamentos: Associação a grupos IAM e permissões de acesso herdadas.
Data Engineer – Associate (DEA-C01) Tarefa 4.1 Prática dos fundamentos: Associação a grupos IAM e permissões de acesso herdadas.
DevOps Engineer – Professional (DOP-C02) Tarefa 6.1 Prática dos fundamentos: Associação a grupos IAM e permissões de acesso herdadas.
Solutions Architect – Professional (SAP-C02) Tarefa 2.3 Prática dos fundamentos: Associação a grupos IAM e permissões de acesso herdadas.

Visão geral do laboratório

Diagrama conceitual: ReportTeam compartilha uma política de leitura do S3; a associação passa de Alice para Bob, e o antigo membro perde essa permissão herdada.

Crie uma equipe e uma política compartilhada

Nesta etapa, você criará um grupo vazio e associará uma política inline. Um grupo é um objeto de gerenciamento de permissões, não uma nova identidade para solicitações. Primeiro, confirme o operador e Alice usando STS; os ARNs devem terminar com user/iam02-operator e user/alice, respectivamente.

A equipe precisa da permissão de leitura que você praticou com um usuário. Atribua-a uma vez a um grupo e altere seus membros ao transferir a responsabilidade entre analistas. O relatório e a política permanecem iguais durante a transferência; muda o usuário que herda a permissão.

Um grupo IAM reúne usuários para que herdem suas permissões. Ele não tem credenciais e não pode entrar nem assumir uma função por si só. Este exercício pratica uma organização existente de usuários IAM; o acesso humano em produção geralmente usa federação e funções temporárias.

cd /home/labex/project
aws sts get-caller-identity --query Arn --output text
aws sts get-caller-identity --profile alice --query Arn --output text

Alice inicialmente não tem permissão para ler o relatório existente. O operador é responsável por sua preparação. Teste antes de conceder acesso:

aws s3api get-object --profile alice --bucket labex-iam02-reports --key reports/today.txt before.txt || true

Espere AccessDenied. || true permite que um comando intencionalmente malsucedido termine em uma sequência colada; ele não transforma uma falha de conexão em evidência de permissão.

Crie ReportTeam. Isso não cria membros nem concede permissões ainda.

aws iam create-group --group-name ReportTeam

Escreva uma política que permite apenas GetObject no prefixo de relatórios deste bucket. Um ARN de objeto inclui sua chave; o curinga após reports/ não corresponde à folha de pagamento nem a outro bucket. Um Allow correspondente concede uma solicitação, a menos que um Deny explícito aplicável prevaleça sobre ele.

cat > team-policy.json <<'JSON'
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"s3:GetObject","Resource":"arn:aws:s3:::labex-iam02-reports/reports/*"}]}
JSON

put-group-policy armazena essa política inline diretamente no grupo. Ela se aplica aos membros do grupo; editar apenas o arquivo local não tem efeito.

aws iam put-group-policy \
  --group-name ReportTeam \
  --policy-name ReportRead \
  --policy-document file://team-policy.json
aws iam get-group --group-name ReportTeam --query 'Users[].UserName'
aws iam get-group-policy \
  --group-name ReportTeam \
  --policy-name ReportRead \
  --query PolicyDocument

A lista de membros está vazia. Alice ainda é negada porque nenhuma participação a conecta à política.

aws s3api get-object --profile alice --bucket labex-iam02-reports --key reports/today.txt still-denied.txt || true

Adicione Alice e teste o limite da permissão

Nesta etapa, você conectará Alice à concessão do grupo e comparará suas solicitações efetivas com as de Bob e do não membro. add-user-to-group altera a participação; não cria nem exibe credenciais.

Após Alice entrar em ReportTeam, a política de leitura do grupo se aplica às suas solicitações. Bob e o não membro ainda estão fora do grupo.

aws iam add-user-to-group --group-name ReportTeam --user-name alice
aws iam get-group --group-name ReportTeam --query 'Users[].UserName'
aws iam list-groups-for-user --user-name alice --query 'Groups[].GroupName'

Espere Alice em ReportTeam e ReportTeam na lista de grupos de Alice. Agora use as credenciais de Alice para solicitar os bytes do relatório.

aws s3api get-object \
  --profile alice \
  --bucket labex-iam02-reports \
  --key reports/today.txt alice-report.txt
cat alice-report.txt

Espere Daily orders: 145. A mesma solicitação de relatório feita por Bob e pelo não membro deve falhar, porque eles não são membros.

aws s3api get-object --profile bob --bucket labex-iam02-reports --key reports/today.txt bob-denied.txt || true
aws s3api get-object --profile outsider --bucket labex-iam02-reports --key reports/today.txt outsider-denied.txt || true

Alice também continua sendo negada fora do escopo de recursos do grupo. Esses objetos existentes permitem diagnosticar autorização em vez de uma chave ausente.

aws s3api get-object --profile alice --bucket labex-iam02-reports --key private/payroll.txt private-denied.txt || true
aws s3api get-object --profile alice --bucket labex-iam02-reference --key reference.txt reference-denied.txt || true

Espere AccessDenied nas quatro solicitações negativas. AWS View mostra a participação e envia solicitações efetivas GetObject para cada usuário; expanda o relatório de hoje para inspecionar os bytes de Alice.

Transfira a participação e verifique novamente o acesso anterior

Nesta etapa, você transferirá a responsabilidade pelos relatórios para Bob e verificará que Alice perde a concessão herdada. Remover a participação em um grupo remove as permissões herdadas desse grupo. Isso não revoga outras concessões que um usuário possa ter; estes usuários preparados não têm nenhuma.

Adicione Bob primeiro e depois remova Alice. Os dois usuários compartilham a mesma política de grupo enquanto ambos são membros; após a remoção, apenas Bob deve herdá-la.

aws iam add-user-to-group --group-name ReportTeam --user-name bob
aws iam remove-user-from-group --group-name ReportTeam --user-name alice
aws iam get-group --group-name ReportTeam --query 'Users[].UserName'

Espere apenas Bob. Leia o relatório como Bob e depois repita a solicitação idêntica como Alice.

aws s3api get-object \
  --profile bob \
  --bucket labex-iam02-reports \
  --key reports/today.txt bob-report.txt
cat bob-report.txt
aws s3api get-object --profile alice --bucket labex-iam02-reports --key reports/today.txt former-member.txt || true
aws s3api get-object --profile outsider --bucket labex-iam02-reports --key reports/today.txt outsider-denied.txt || true

Bob recebe 145; Alice e o não membro recebem AccessDenied. Credenciais selecionam quem faz a chamada, enquanto as permissões efetivas atuais determinam se sua solicitação é bem-sucedida.

O grupo concede leitura, não escrita. Tente a substituição fornecida como Bob e confirme que o relatório original ainda existe.

aws s3api put-object --profile bob --bucket labex-iam02-reports --key reports/today.txt --body upload.txt || true
aws s3api get-object \
  --profile bob \
  --bucket labex-iam02-reports \
  --key reports/today.txt bob-report.txt
cat bob-report.txt

Espere PutObject AccessDenied seguido de Daily orders: 145 inalterado. AWS View agora mostra Bob como membro e Alice negada; a própria política de grupo não mudou.

Responsabilidade pelos relatórios transferida para Bob. Exemplo: a mesma política de grupo concede acesso de leitura a Bob, enquanto a ex-membro Alice e o não membro continuam sendo negados. O relatório expandido mostra os bytes efetivamente retornados como Bob.

Remova a equipe e limpe seus dados

Nesta etapa, você revogará o acesso herdado de Bob antes de excluir o grupo e os dados de relatórios do exercício. IAM exige que um grupo não tenha membros nem políticas associadas antes da exclusão. Deixe ReferenceTeam, que é independente, e sua participação de outsider intactos.

aws iam remove-user-from-group --group-name ReportTeam --user-name bob
aws s3api get-object --profile bob --bucket labex-iam02-reports --key reports/today.txt revoked.txt || true

Espere AccessDenied enquanto o relatório ainda existe. Remova a política inline e depois o grupo vazio.

aws iam delete-group-policy --group-name ReportTeam --policy-name ReportRead
aws iam delete-group --group-name ReportTeam
aws iam list-groups --query 'Groups[].GroupName'
aws iam get-group --group-name ReferenceTeam --query 'Users[].UserName'

Resta apenas ReferenceTeam, ainda contendo outsider. Exclua exatamente as duas chaves de objetos do exercício e confira que o bucket de relatórios está vazio antes da exclusão.

aws s3api delete-object --bucket labex-iam02-reports --key reports/today.txt
aws s3api delete-object --bucket labex-iam02-reports --key private/payroll.txt
aws s3api list-objects-v2 --bucket labex-iam02-reports

Confira que KeyCount é 0 e nenhuma entrada de objeto permanece em Contents.

aws s3api delete-bucket --bucket labex-iam02-reports
aws s3api list-buckets --query 'Buckets[].Name'
aws s3api get-object --bucket labex-iam02-reference --key reference.txt reference.txt
cat reference.txt

Resta apenas o bucket de referência, com Platform reference: keep. Consultas bem-sucedidas à API comprovam a limpeza; erros de rede não. AWS View mostra Group removed e Reports bucket removed. Os usuários e recursos fornecidos preparados são recuperados quando o ambiente descartável termina; o grupo e as permissões criados pelo aluno foram removidos.

Resumo

Você atribuiu uma política a um grupo, comprovou que a participação concede acesso ao relatório, transferiu esse acesso e confirmou que a ex-membro e o não membro continuaram sendo negados. A participação em grupos é uma fonte de permissões; revise todas as políticas aplicáveis quando uma identidade permanecer inesperadamente autorizada. Você revogou o acesso antes da limpeza delimitada e preservou o grupo e os dados não relacionados.

Para aprofundar o tema, consulte a documentação da AWS: Grupos de usuários IAM e permissões herdadas.