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

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.

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.

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.



