Введение
Небольшая служба поддержки хранит публичную справку и клиентские выписки в одном бакете. Обычно портал подписывает запросы на чтение выписок, а посетители должны читать только справку. Ошибочная политика открыла внутренние документы анонимным пользователям. Вы ограничите доступ, не удаляя рабочие данные.
Используйте Storage Admin. Document Portal показывает подготовленное приложение; Portal App — его отдельная локальная учётная запись. Все документы и реквизиты синтетические. VersityGW 1.10.0 — локальный S3-совместимый шлюз, использующий встроенные имена пользователей как субъекты политики. Работа не воспроизводит AWS IAM или Public Access Block на уровне аккаунта. Достаточно базового владения терминалом; облачная учётная запись не нужна.
Скачать обычный публичный документ
На этом шаге получите справочный документ, предназначенный для посетителей.
Чтобы начать этот шаг, выберите вкладку Storage Admin в интерфейсе лабораторной работы.
Бакет — именованная коллекция объектов. Ключ объекта — его сохранённое имя: public/help.txt использует префикс public/, а не обычные права каталогов. Бакет здесь называется documents. Адрес http://127.0.0.1:7070 — сервис хранилища на этой VM.
curl выполняет HTTP-запрос. Без реквизитов он представляет анонимного посетителя. Выполните в Storage Admin:
Перед выполнением следующей команды перейдите на вкладку Storage Admin.
curl -sS http://127.0.0.1:7070/documents/public/help.txt
-sS скрывает индикатор прогресса, но показывает ошибки соединения. Ожидайте Synthetic help: contact support through the portal. Теперь сохраните полезную локальную копию с помощью -o, задающего выходной файл:
curl -sS -o help.txt http://127.0.0.1:7070/documents/public/help.txt
Прочитайте локальный документ командой cat:
cat help.txt
Должен появиться тот же текст справки. Это обычный публичный доступ. Перейдите на вкладку Document Portal, затем нажмите Open assigned document: синтетическая выписка также доступна приложению портала, подписывающему запросы. На следующем шаге вы отделите это законное использование от анонимного раскрытия.

Ограничить анонимную политику
На этом шаге запретите анонимное чтение внутренних документов, сохранив публичную справку.
Чтобы начать этот шаг, выберите вкладку Storage Admin в интерфейсе лабораторной работы.
Сначала запросите выписку анонимно. -w добавляет HTTP-код ответа; \n вставляет новую строку. 200 означает успех. Реальный отказ в доступе — 403 с AccessDenied; 404 или ошибка соединения не доказывает защиту.
Перед выполнением следующей команды перейдите на вкладку Storage Admin.
curl -sS -w '\nHTTP %{http_code}\n' http://127.0.0.1:7070/documents/portal/statement.txt
Выписка и HTTP 200 подтверждают утечку. Не удаляйте её: она всё ещё нужна порталу.
AWS CLI умеет обращаться к S3-совместимому API. source загружает подготовленные административные реквизиты в этот терминал. Они действуют только в учебной VM; повторите команду при открытии новой сессии Storage Admin.
source admin.env
Прочитайте действующую политику работающего сервиса. s3api выбирает операции объектного хранилища; --endpoint-url направляет запрос к локальному шлюзу, а не AWS. --query Policy --output text выводит JSON-строку политики.
aws --endpoint-url http://127.0.0.1:7070 s3api get-bucket-policy --bucket documents --query Policy --output text
JSON-политика содержит список Statement. Effect: Allow разрешает операцию, Principal называет получателя прав, Action — операцию, а Resource — объекты. s3:GetObject означает чтение объекта. Principal: "*" включает анонимных посетителей. Ресурс arn:aws:s3:::documents/* охватывает все ключи; завершающая * соответствует любому суффиксу. Другая запись отдельно предоставляет portal-reader доступ к portal/*.
Откройте подготовленную копию в nano:
nano policy.json
Измените только Resource анонимной записи с arn:aws:s3:::documents/* на arn:aws:s3:::documents/public/*. Сохраните запись именованного портала. В JSON строки заключают в двойные кавычки, а поля разделяют запятыми. Сохраните через Ctrl+O, нажмите Enter, затем выйдите через Ctrl+X.
Редактирование локального файла ещё не меняет доступ. Примените его; file:// указывает CLI прочитать политику из файла:
aws --endpoint-url http://127.0.0.1:7070 s3api put-bucket-policy --bucket documents --policy file://policy.json
При успехе вывода нет. Если JSON некорректен, снова откройте редактор, исправьте кавычки или запятые и примените файл повторно. Повторите анонимный запрос выписки: ожидаются AccessDenied и HTTP 403. Запросы без подходящего разрешения запрещены по умолчанию. Общий запрет для всех заблокировал бы и легитимный портал.
Сохранить портал и публичную справку
На этом шаге докажите, что исправление сохранило полезное чтение и неизменные документы.
Чтобы начать этот шаг, выберите вкладку Storage Admin в интерфейсе лабораторной работы.
Повторите анонимную команду из шага 1 для публичной справки: она должна вернуть исходный текст. Перейдите на вкладку Document Portal. Снова выберите Open assigned document. Ожидайте выписку и Identity: portal-reader.
Для прямой проверки именованной учётной записи задайте реквизиты только этой команде. Присваивания перед командой влияют лишь на неё, поэтому административное окружение терминала останется доступным. get-object скачивает ключ в локальный файл, имя которого указано последним:
Перед выполнением следующей команды перейдите на вкладку Storage Admin.
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
CLI выводит метаданные объекта. Прочитайте действительно скачанный документ:
cat statement.txt
Ожидайте Synthetic statement: account 1042, balance 75 credits. Та же сохранённая выписка теперь доступна именованному запросу и запрещена анонимному. Если портал не работает, снова изучите действующую политику: его именованное разрешение должно сохраниться, а анонимное должно заканчиваться на public/*. Восстановите политику и примените её заново; удаление объектов или остановка хранилища не выполнят оба требования.
Резюме
Вы различили анонимные и подписанные запросы портала, ограничили настоящую политику бакета и сохранили публичную справку и клиентские выписки. Успешное исправление требует и прекращения раскрытия, и работающего бизнес-процесса.



