Ich folge den Anweisungen aus dieser Antwort , um die folgende S3-Bucket-Richtlinie zu generieren:
{
"Id": "Policy1495981680273",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1495981517155",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::surplace-audio",
"Principal": "*"
}
]
}
Ich erhalte den folgenden Fehler zurück:
Die Aktion gilt nicht für Ressourcen in Anweisungen
Was fehlt mir in meiner Police?
amazon-web-services
amazon-s3
Philip Kirkbride
quelle
quelle
Antworten:
In IAM-Dokumenten finden Sie http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Action
Bei einigen Diensten können Sie keine Aktionen für einzelne Ressourcen angeben. Stattdessen gelten alle Aktionen, die Sie im Element Aktion oder NotAction auflisten, für alle Ressourcen in diesem Dienst. In diesen Fällen verwenden Sie den Platzhalter * im Ressourcenelement.
Mit diesen Informationen sollte die Ressource einen Wert wie den folgenden haben:
quelle
Nur die
s3:ListBucket
Erlaubnis zu entfernen war für mich nicht gut genug und wahrscheinlich auch nicht für viele andere.Wenn Sie die
s3:ListBucket
Berechtigung wünschen , müssen Sie nur die Ebene des Eimers (ohne die/*
am Ende) haben, da diese Berechtigung für den Eimer selbst gilt und nicht für Elemente im Eimer.Wie unten gezeigt, müssen Sie die
s3:ListBucket
Berechtigung als separate Anweisung von den Berechtigungen für Elemente im Bucket wies3:GetObject
und habens3:PutObject
.quelle
Die Fehleraktion gilt nicht für Ressourcen in Anweisungen
Es bedeutet einfach, dass die Aktion (die Sie in der Richtlinie geschrieben haben) nicht für die Ressource gilt. Ich habe versucht, meinen Eimer öffentlich zu machen, damit jeder ihn aus meinem Eimer herunterladen kann. Ich habe eine Fehlermeldung erhalten, bis ich ("s3: ListBucket") aus meiner Anweisung entfernt habe.
Da der Listen-Bucket nicht im Bucket angewendet wird, hat das Löschen dieser Aktionsrichtlinie einwandfrei funktioniert.
quelle
Ich bin gerade auf dieses Problem gestoßen und habe eine kürzere Lösung für diejenigen gefunden, die ListBucket und GetObject in derselben Richtlinie haben möchten.
quelle
Principal
ist für die S3-Richtliniengrammatik nicht zulässig.Ich habe auch das ähnliche Problem beim Erstellen des Eimers konfrontiert
Ich habe den obigen Code in geändert
Wenn Sie Ihrem Bucket-Namen / * hinzufügen , wird das Problem behoben
Hier ist mein Eimername mrt9949
quelle
In meinem Fall bestand die Lösung für diesen Fehler darin, einige der von mir angewendeten Aktionen zu entfernen. Einige von ihnen sind für diese Ressource nicht relevant oder können nicht mit ihr arbeiten. In diesem Fall würde ich Folgendes nicht einschließen:
GetBucketAcl ListBucket ListBucketMultipartUploads
quelle
Sie müssen das Muster des Arns überprüfen, das unter dem Resource-Tag für die Policy- definiert ist.
"Ressource": "arn: aws: s3 ::: s3mybucketname / *"
Das Hinzufügen von "/ *" am Ende würde helfen, das Problem zu beheben, wenn Sie es auch dann sehen, wenn Ihre Richtlinie für den öffentlichen Zugriff für Ihren Bucket entsperrt wurde.
quelle
quelle
Sie können ListBuckets auch für jeden Ordner konfigurieren
Diese Regeln werden zusammen mit SES verwendet, um eine E-Mail zu empfangen, ermöglichen es jedoch einem externen Benutzer, die Dateien anzuzeigen, die von SES in den Bucket gelegt wurden. Ich habe die Anweisungen von hier aus befolgt: https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders-in-an-amazon-s3-bucket/
Außerdem müssen Sie
domain.co/user/
bei Verwendung des SDK das Präfix als WITH-Schrägstrich am Ende angeben, da sonst der Zugriff verweigert wird. hoffe es hilft jedemquelle