Einführung
Ein kleines Supportteam speichert öffentliche Hilfe und Kundenabrechnungen in einem Bucket. Das Portal signiert normalerweise Anfragen zum Lesen der Abrechnungen; Besucher sollen nur die Hilfe lesen. Eine fehlerhafte Richtlinie gibt interne Dokumente nun anonym frei. Du begrenzt den Zugriff, ohne Geschäftsdaten zu löschen.
Verwende Storage Admin für dieses Lab. Document Portal zeigt die vorbereitete Anwendung; Portal App ist ihr eigenes lokales Konto. Alle Dokumente und Zugangsdaten sind synthetisch. VersityGW 1.10.0 ist ein lokales S3-kompatibles Gateway, das integrierte Benutzernamen als Principals verwendet. Dieses Lab bildet weder AWS IAM noch Public Access Block auf Kontoebene nach. Grundlegende Terminalbedienung genügt; ein Cloud-Konto ist nicht nötig.
Ein regulär öffentliches Dokument herunterladen
In diesem Schritt lädst du das für Besucher bestimmte Hilfedokument herunter.
Wähle zu Beginn dieses Schritts den Tab Storage Admin in der Lab-Oberfläche aus.
Ein Bucket ist eine benannte Objektsammlung. Ein Objektschlüssel ist der gespeicherte Name: public/help.txt verwendet das Präfix public/ statt gewöhnlicher Verzeichnisrechte. Hier heißt der Bucket documents. Der Endpunkt http://127.0.0.1:7070 ist der Speicherdienst auf dieser VM.
curl stellt eine HTTP-Anfrage. Ohne Zugangsdaten steht sie für einen anonymen Besucher. Führe in Storage Admin aus:
Wechsle zum Tab Storage Admin, bevor du den folgenden Befehl ausführst.
curl -sS http://127.0.0.1:7070/documents/public/help.txt
-sS blendet den Fortschrittsbalken aus, zeigt aber Verbindungsfehler. Erwarte Synthetic help: contact support through the portal. Speichere nun mit -o, das die Ausgabedatei benennt, eine nutzbare lokale Kopie:
curl -sS -o help.txt http://127.0.0.1:7070/documents/public/help.txt
Lies das lokale Dokument mit cat:
cat help.txt
Derselbe Hilfetext sollte erscheinen. Das ist normaler öffentlicher Zugriff. Wechsle zum Tab Document Portal und klicke auf Open assigned document: Auch die signierende Portalanwendung kann die synthetische Abrechnung lesen. Im nächsten Schritt trennst du diese berechtigte Nutzung von anonymer Offenlegung.

Die anonyme Richtlinie begrenzen
In diesem Schritt entfernst du anonyme interne Lesezugriffe und bewahrst die öffentliche Hilfe.
Wähle zu Beginn dieses Schritts den Tab Storage Admin in der Lab-Oberfläche aus.
Fordere zuerst anonym eine Abrechnung an. -w hängt den HTTP-Antwortcode an; \n fügt einen Zeilenumbruch ein. 200 bedeutet Erfolg. Eine tatsächliche Berechtigungsverweigerung ist 403 mit AccessDenied; 404 oder ein Verbindungsfehler belegt keinen Schutz.
Wechsle zum Tab Storage Admin, bevor du den folgenden Befehl ausführst.
curl -sS -w '\nHTTP %{http_code}\n' http://127.0.0.1:7070/documents/portal/statement.txt
Die Abrechnung zusammen mit HTTP 200 belegt das Datenleck. Lösche sie nicht: Das Portal benötigt sie weiterhin.
Die AWS CLI kann die S3-kompatible API ansprechen. source lädt die vorbereiteten Administrator-Zugangsdaten in dieses Terminal. Sie gelten nur für diese Trainings-VM; wiederhole den Befehl, wenn du eine neue Storage Admin-Sitzung öffnest.
source admin.env
Lies die wirksame Richtlinie des laufenden Dienstes. s3api wählt Objektspeicheroperationen; --endpoint-url richtet sie an dieses lokale Gateway statt an AWS. --query Policy --output text zeigt die JSON-Zeichenfolge der Richtlinie.
aws --endpoint-url http://127.0.0.1:7070 s3api get-bucket-policy --bucket documents --query Policy --output text
Eine JSON-Richtlinie enthält eine Statement-Liste. Effect: Allow erlaubt eine Aktion, Principal benennt den Berechtigten, Action die Aktion und Resource die Objekte. s3:GetObject bedeutet, ein Objekt zu lesen. Principal: "*" schließt anonyme Besucher ein. Die Ressource arn:aws:s3:::documents/* umfasst alle Schlüssel; das abschließende * passt zu jedem Suffix. Die andere Anweisung erlaubt portal-reader separat den Zugriff auf portal/*.
Bearbeite die vorbereitete Kopie mit nano:
nano policy.json
Ändere nur das Resource der anonymen Anweisung von arn:aws:s3:::documents/* zu arn:aws:s3:::documents/public/*. Behalte die Anweisung für das benannte Portal. JSON benötigt doppelte Anführungszeichen um Zeichenfolgen und Kommas zwischen Feldern. Speichere mit Ctrl+O, drücke Enter und verlasse den Editor mit Ctrl+X.
Eine lokale Dateibearbeitung ändert den Zugriff noch nicht. Wende die Datei an; file:// weist die CLI an, die Richtlinie aus ihr zu lesen:
aws --endpoint-url http://127.0.0.1:7070 s3api put-bucket-policy --bucket documents --policy file://policy.json
Bei Erfolg erscheint keine Ausgabe. Bei ungültigem JSON öffnest du den Editor erneut, korrigierst Anführungszeichen oder Kommas und wendest die Datei erneut an. Wiederhole die anonyme Abrechnungsanfrage: Erwarte AccessDenied und HTTP 403. Anfragen ohne passende Erlaubnis werden standardmäßig verweigert. Eine pauschale Verweigerung für alle würde auch das berechtigte Portal blockieren.
Portal und öffentliche Hilfe bewahren
In diesem Schritt weist du nach, dass die Korrektur nützliche Lesezugriffe und unveränderte Dokumente erhält.
Wähle zu Beginn dieses Schritts den Tab Storage Admin in der Lab-Oberfläche aus.
Teste die öffentliche Hilfe erneut mit dem anonymen Befehl aus Schritt 1: Er muss weiterhin den ursprünglichen Text liefern. Wechsle zum Tab Document Portal und wähle erneut Open assigned document. Erwarte die Abrechnung und Identity: portal-reader.
Setze zum direkten Test der benannten Identität Zugangsdaten für genau diesen Befehl. Vorangestellte Zuweisungen wirken nur auf diesen Befehl, sodass die Administratorumgebung des Terminals danach erhalten bleibt. get-object lädt einen Schlüssel in die am Ende angegebene lokale Datei:
Wechsle zum Tab Storage Admin, bevor du den folgenden Befehl ausführst.
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
Die CLI gibt Objektmetadaten aus. Lies das tatsächlich heruntergeladene Dokument:
cat statement.txt
Erwarte Synthetic statement: account 1042, balance 75 credits. Dieselbe gespeicherte Abrechnung ist jetzt mit benannter Anfrage verfügbar und anonym gesperrt. Falls das Portal scheitert, prüfe die wirksame Richtlinie erneut: Seine benannte Erlaubnis muss bestehen bleiben, während die anonyme Erlaubnis auf public/* enden muss. Stelle die Richtlinie wieder her und wende sie an; das Löschen von Objekten oder Stoppen des Speichers erfüllt nicht beide Anforderungen.
Zusammenfassung
Du hast anonyme Anfragen von signierten Portalanfragen unterschieden, eine echte Bucket-Richtlinie begrenzt und öffentliche Hilfe sowie Kundenabrechnungen erhalten. Eine erfolgreiche Korrektur muss die Offenlegung verhindern und den Geschäftsablauf funktionsfähig halten.



