Fechar o download anônimo

CibersegurançaBeginner
Pratique Agora

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.

Document Portal abrindo o extrato atribuído com a identidade da aplicação

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.