ECS: Schreibgeschützte Bucket-ACL für Nicht-Eigentümer-Objektnutzer kann hochgeladene Objekte nicht herunterladen
摘要: In dieser Wissensdatenbank wird das Konzept der Bucket-Zugriffskontrolllisten (Access Control Lists, ACLs) für den Nicht-Eigentümer-Objektnutzer aus einer schreibgeschützten Perspektive im S3-Browser erläutert. ...
症狀
Der Objektnutzer, der nicht Eigentümer ist, wurde dem Bucket mit einer Bucket-ACL als schreibgeschützt hinzugefügt.
Ein Objektnutzer, der kein Bucket-Eigentümer ist, kann keine Objekte herunterladen, die vom Objektbucket-Eigentümer vor der Erstellung der Bucket-ACL hochgeladen wurden.
Der Problemablauf ist wie folgt:
- Der Bucket wurde mit dem zugewiesenen Objekteigentümernutzer erstellt.
- Einige Dateien wurden vom Objekteigentümer in den Bucket hochgeladen.
- Der Objektnutzer, der nicht Eigentümer ist, wurde dem Bucket mit einer Bucket-ACL als schreibgeschützt hinzugefügt.
- Beim Versuch, auf den Bucket zuzugreifen, kann der Nicht-Eigentümerobjektnutzer neu hochgeladene Objekte auflisten und herunterladen, aber keine Objekte, die vor der schreibgeschützten Bucket-ACL hochgeladen wurden. Wir sehen, dass die Nutzerrechte für die Objekte nicht gemäß der Konfiguration in der ECS-Benutzeroberfläche über den S3-Browser festgelegt werden.
Wenn der Nutzer eines Nicht-Eigentümerobjekts mithilfe des S3-Browsers auf ein Objekt klickt, tritt folgender Fehler auf: (Zugriff verweigert: Zugriff verweigert):
Im Folgenden ist die Bucket-ACL-Einrichtung für den Objekteigentümernutzer (a_s3user) und den Nichteigentümer-Objektnutzer (a_s3test) beschrieben:
原因
S3-Berechtigungen können auf Bucket- oder Objektebene festgelegt werden. ECS befolgt dieselben Prinzipien wie AWS S3 – je nach Art der angewendeten Policy. Er bestimmt die Art der Vorgänge, die auf Bucket- oder Objektebene zulässig sind.
- Wenn READ und READ ACL auf ECS-Bucket-Ebene gewährt werden, kann der Nicht-Bucket-Eigentümer nur die Objekte im Bucket auflisten, der Nicht-Bucket-Eigentümer kann keine Daten aus dem Bucket herunterladen
- Beim Schreiben eines Objekts in einen Bucket verfügt nur der Nutzer, der das Objekt schreibt, über Leseberechtigungen. Damit andere Benutzer die Objekte lesen können, muss der Eigentümer den Benutzern explizit die Berechtigung erteilen.
- Um Nicht-Bucket-Eigentümern die Berechtigung zu erteilen, müssen wir S3-Bucket-Policies verwenden
Die ACL-Berechtigungen, die zugewiesen werden können, sind in der folgenden Tabelle aufgeführt. Welche Berechtigungen anwendbar sind, hängt vom Bucket-Typ ab.
| ACL | Berechtigung | ||
|---|---|---|---|
| Read | Ermöglicht es dem Nutzer, die Objekte im Bucket aufzulisten | ||
| ACL lesen | Ermöglicht dem Nutzer das Lesen der Bucket-ACL | ||
| Schreiben | Ermöglicht es dem Nutzer, ein beliebiges Objekt im Bucket zu erstellen oder zu aktualisieren | ||
| ACL schreiben. | Ermöglicht es dem Nutzer, die ACL für den Bucket zu schreiben | ||
| Ausführen | Legt die Ausführungsberechtigung beim Zugriff als Dateisystem fest. Diese Berechtigung hat keine Auswirkungen, wenn auf das Objekt mithilfe der ECS-Objektprotokolle zugegriffen wird. | ||
| Vollzugriff | Ermöglicht dem/der NutzerIn das Lesen, Schreiben sowie Lesen und Schreiben der ACL.
|
||
| Schreibzugriff mit erhöhten Rechten | Ermöglicht es Nutzern, Schreibvorgänge in einen Bucket oder ein Objekt durchzuführen, wenn der Nutzer nicht über normale Schreibberechtigungen verfügt. Erforderlich für CAS-Buckets | ||
| Löschen | Ermöglicht dem Nutzer das Löschen von Buckets und Objekten – erforderlich für CAS-Buckets | ||
| Keine | Der Nutzer verfügt über keine Berechtigungen für den Bucket. |
AWS unterstützt mehrere Policy-Typen.
- Zugriffskontrolllisten (Access Control Lists, ACLs)
- Identitätsbasierte Policies
- Begrenzungen von Berechtigungen
- Ressourcenbasierte Policies
In der folgenden Tabelle sind die Berechtigungen aufgeführt, die Amazon S3 in einer ACL unterstützt. Der Satz von ACL-Berechtigungen ist für eine Objekt-ACL und eine Bucket-ACL identisch. Je nach Kontext (Bucket-ACL oder Objekt-ACL) gewähren diese ACL-Berechtigungen jedoch Berechtigungen für bestimmte Buckets oder Objektvorgänge. Die Tabelle listet die Berechtigungen auf und beschreibt, was sie im Kontext von Objekten und Buckets bedeuten.
| Berechtigung | Wenn für einen Bucket gewährt | Wenn für ein Objekt gewährt |
|---|---|---|
READ |
Ermöglicht dem Begünstigten das Auflisten der Objekte im Bucket | Ermöglicht dem Empfänger das Lesen der Objektdaten und ihrer Metadaten |
WRITE |
Ermöglicht dem Begünstigten das Erstellen, Überschreiben und Löschen beliebiger Objekte im Bucket | Unzutreffend |
READ_ACP |
Ermöglicht dem Begünstigten das Lesen der Bucket-ACL | Ermöglicht dem Empfänger das Lesen der Objekt-ACL |
WRITE_ACP |
Ermöglicht dem Begünstigten das Schreiben der ACL für den entsprechenden Bucket | Ermöglicht es dem Begünstigten, die ACL für das entsprechende Objekt zu schreiben. |
FULL_CONTROL |
Gewährt dem Begünstigten die Berechtigungen READ, WRITE, READ_ACP und WRITE_ACP für den Bucket | Gewährt dem Empfänger die Berechtigungen READ, READ_ACP und WRITE_ACP für das Objekt. |
Amazon S3-Dokumentation
Die folgende Tabelle zeigt, wie die einzelnen ACL-Berechtigungen den entsprechenden Zugriffs-Policy-Berechtigungen zugeordnet sind. Wie Sie sehen, erlaubt die Zugriffs-Policy mehr Berechtigungen als eine ACL. ACLs werden in erster Linie verwendet, um grundlegende Lese-/Schreibberechtigungen zu gewähren, ähnlich wie Dateisystemberechtigungen. Weitere Informationen dazu, wann eine ACL verwendet werden sollte, finden Sie unter Richtlinien für die Verwendung der verfügbaren Zugriffs-Policy-Optionen.
| ACL-Berechtigung | Entsprechende Zugriffs-Policy-Berechtigungen, wenn die ACL-Berechtigung für einen Bucket gewährt wird | Entsprechende Zugriffs-Policy-Berechtigungen, wenn die ACL-Berechtigung für ein Objekt gewährt wird |
|---|---|---|
READ |
s3:ListBucket, s3:ListBucketVersionsund s3:ListBucketMultipartUploads |
s3:GetObject, s3:GetObjectVersionund s3:GetObjectTorrent |
WRITE |
Wenn der Begünstigte der Bucket-Eigentümer ist, wird die Gewährung |
Unzutreffend |
READ_ACP |
s3:GetBucketAcl |
s3:GetObjectAcl und s3:GetObjectVersionAcl |
WRITE_ACP |
s3:PutBucketAcl |
s3:PutObjectAcl und s3:PutObjectVersionAcl |
FULL_CONTROL |
Entspricht der Gewährung von READ, WRITE, READ_ACPund WRITE_ACP ACL-Berechtigungen – Diese ACL-Berechtigung wird also einer Kombination der entsprechenden Zugriffs-Policy-Berechtigungen zugeordnet. |
Entspricht der Gewährung von READ, READ_ACPund WRITE_ACP ACL-Berechtigungen. Diese ACL-Berechtigung wird also einer Kombination der entsprechenden Zugriffs-Policy-Berechtigungen zugeordnet. |
解析度
Möglichkeit 1:
Weitere Informationen zur Verwendung von Bucket-Policies finden Sie im ECS-Datenzugriffshandbuch. Im Gegensatz zu ACLs, die entweder alle oder keine Aktionen zulassen, gewähren Zugriffs-Policies bestimmten Nutzern oder allen Nutzern bedingte und granulare Berechtigungen für bestimmte Aktionen. Policy-Bedingungen können verwendet werden, um Berechtigungen für eine Reihe von Objekten zuzuweisen, die die Bedingung erfüllen. Dies kann verwendet werden, um neu hochgeladenen Objekten automatisch Berechtigungen zuzuweisen.
Referenz zu AWS S3:
https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html
https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html
https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations.htmlGeben Sie unter UI-> Manage-Bucket-> Edit bucket policy etwas Ähnliches wie dieses in den Policy-Editor> ein:
{
"Version": "2012-10-17",
"Id": "Policy1593674317613",
"Statement": [
{
"Action": [
"s3:GetObject"
],
"Resource": "bucket_name/*",
"Effect": "Allow",
"Principal": "read-only_user",
"Sid": "Stmt1593673962638"
}
]
} Wo Aktion: "S3:GetObject" ist die Aktion, um Objekte herunterladen zu können.
Womit Wirkung: "Allow"
where resource": "bucket_name/*" ist der Bucket-Name.
Wo Auftraggeber": "read-only_use r" ist ein Nicht-Bucket-Owner-Nutzer.
Möglichkeit 2:
Ändern Sie mithilfe des S3-Browsers mit dem Objekteigentümer die Berechtigung für authentifizierte Nutzer für Objekte, die vor der schreibgeschützten Bucket-ACL hochgeladen wurden, um sicherzustellen, dass der Objektnutzer, der kein Eigentümer ist, das Objekt herunterladen kann:
其他資訊
Wenn Sie Probleme beim Hochladen eines Objekts über den Objekteigentümer haben und die Berechtigungen nicht auf authentifizierte Nutzer mit Schreibzugriff angewendet werden, lesen Sie den Wissensdatenbank-Artikel 520711