Introdução
Uma pequena equipe de suporte guarda ajuda pública e extratos de clientes no mesmo bucket. O portal normalmente assina solicitações para ler extratos; visitantes só deveriam ler a ajuda. Uma política incorreta agora expõe documentos internos anonimamente. Você restringirá o acesso sem excluir dados do negócio.
Use Storage Admin neste laboratório. Document Portal mostra a aplicação preparada; Portal App é sua conta local separada. Todos os documentos e credenciais são sintéticos. VersityGW 1.10.0 é um gateway local compatível com S3 que usa nomes de usuários internos como principais. Este laboratório não reproduz AWS IAM nem Public Access Block no nível da conta. Basta o uso básico do terminal; nenhuma conta de nuvem é necessária.
Baixar um documento público normal
Nesta etapa, obtenha o documento de ajuda destinado aos visitantes.
Selecione a aba Storage Admin na interface do laboratório para começar esta etapa.
Um bucket é uma coleção nomeada de objetos. Uma chave de objeto é seu nome armazenado: public/help.txt usa um prefixo, public/, em vez de permissões comuns de diretório. Aqui o bucket é documents. O endpoint http://127.0.0.1:7070 é o serviço de armazenamento desta VM.
curl faz uma solicitação HTTP. Sem credenciais, representa um visitante anônimo. Execute em Storage Admin:
Mude para a aba Storage Admin antes de executar o comando a seguir.
curl -sS http://127.0.0.1:7070/documents/public/help.txt
-sS oculta o progresso, mas mostra erros de conexão. Espere Synthetic help: contact support through the portal. Agora salve uma cópia local útil com -o, que especifica o arquivo de saída:
curl -sS -o help.txt http://127.0.0.1:7070/documents/public/help.txt
Leia o documento local com cat:
cat help.txt
O mesmo texto de ajuda deve aparecer. Esse é um acesso público normal. Mude para a aba Document Portal e clique em Open assigned document: o extrato sintético também está disponível para a aplicação que assina solicitações. A próxima etapa separa esse uso legítimo da exposição anônima.

Restringir a política anônima
Nesta etapa, remova as leituras internas anônimas mantendo a ajuda pública.
Selecione a aba Storage Admin na interface do laboratório para começar esta etapa.
Primeiro solicite um extrato anonimamente. -w acrescenta o código HTTP; \n insere uma nova linha. 200 indica sucesso. Uma recusa real de permissão é 403 com AccessDenied; 404 ou erro de conexão não comprova proteção.
Mude para a aba Storage Admin antes de executar o comando a seguir.
curl -sS -w '\nHTTP %{http_code}\n' http://127.0.0.1:7070/documents/portal/statement.txt
Ver o extrato e HTTP 200 demonstra o vazamento. Não o exclua: o portal ainda precisa dele.
A AWS CLI pode acessar a API compatível com S3. source carrega as credenciais administrativas preparadas neste terminal. Elas se aplicam apenas a esta VM de treinamento; repita o comando ao abrir uma nova sessão Storage Admin.
source admin.env
Leia a política efetiva do serviço em execução. s3api seleciona operações de armazenamento de objetos; --endpoint-url aponta para este gateway local em vez da AWS. --query Policy --output text exibe a string JSON da política.
aws --endpoint-url http://127.0.0.1:7070 s3api get-bucket-policy --bucket documents --query Policy --output text
Uma política JSON contém uma lista Statement. Effect: Allow concede uma operação, Principal identifica quem a recebe, Action nomeia a operação e Resource os objetos. s3:GetObject significa ler um objeto. Principal: "*" inclui visitantes anônimos. O recurso arn:aws:s3:::documents/* abrange todas as chaves; o * final corresponde a qualquer sufixo. A outra declaração concede separadamente a portal-reader acesso a portal/*.
Use nano para editar a cópia preparada:
nano policy.json
Altere apenas o Resource da declaração anônima de arn:aws:s3:::documents/* para arn:aws:s3:::documents/public/*. Preserve a declaração nomeada do portal. JSON exige aspas duplas nas strings e vírgulas entre campos. Salve com Ctrl+O, pressione Enter e saia com Ctrl+X.
Editar um arquivo local não muda o acesso. Aplique-o; file:// informa à CLI que deve ler a política desse arquivo:
aws --endpoint-url http://127.0.0.1:7070 s3api put-bucket-policy --bucket documents --policy file://policy.json
Uma aplicação bem-sucedida não produz saída. Se o JSON for inválido, reabra o editor, corrija aspas ou vírgulas e aplique novamente. Repita a solicitação anônima do extrato: espere AccessDenied e HTTP 403. Solicitações sem uma permissão aplicável são negadas por padrão. Uma recusa geral para todos também bloquearia o portal legítimo.
Preservar o portal e a ajuda pública
Nesta etapa, comprove que a correção mantém leituras úteis e documentos intactos.
Selecione a aba Storage Admin na interface do laboratório para começar esta etapa.
Teste novamente a ajuda pública com o comando anônimo da etapa 1: o texto original deve continuar aparecendo. Mude para a aba Document Portal. Abra Open assigned document novamente. Espere o extrato e Identity: portal-reader.
Para testar diretamente a identidade nomeada, defina credenciais apenas para este comando. As atribuições no início afetam somente esse comando, preservando o ambiente administrativo do terminal depois dele. get-object baixa uma chave para o nome de arquivo local indicado no final:
Mude para a aba Storage Admin antes de executar o comando a seguir.
AWS_ACCESS_KEY_ID=portal-reader AWS_SECRET_ACCESS_KEY=portal-reader-secret aws --endpoint-url http://127.0.0.1:7070 s3api get-object --bucket documents --key portal/statement.txt statement.txt
A CLI imprime metadados do objeto. Leia o documento realmente baixado:
cat statement.txt
Espere Synthetic statement: account 1042, balance 75 credits. O mesmo extrato armazenado agora está disponível por uma solicitação nomeada e é recusado anonimamente. Se o portal falhar, examine novamente a política efetiva: sua permissão nomeada deve permanecer e a permissão anônima deve terminar em public/*. Restaure e reaplique a política; excluir objetos ou parar o armazenamento não satisfaz os dois requisitos.
Resumo
Você distinguiu solicitações anônimas das solicitações assinadas do portal, restringiu uma política real e preservou ajuda pública e extratos. Uma correção bem-sucedida precisa bloquear a exposição e manter o caminho de negócio funcionando.



