S3-Bucket-/IAM-Benutzerrichtlinie „Verweigern hat Vorrang vor allen anderen Zugriffen“?

S3-Bucket-/IAM-Benutzerrichtlinie „Verweigern hat Vorrang vor allen anderen Zugriffen“?

Zwei Richtlinien, eine davon ist "Ablehnen". Ich sollte keine Operationen am Bucket durchführen können, kann aber immer noch Bucket-Objekte auflisten und anzeigen. Warum? Danke

S3-Bucket-Richtlinie

{
    "Sid": "S3DenyAccess",
    "Effect": "Deny",
    "Principal": "*",
    "Action": "*",
    "Resource": "arn:aws:s3:::<YOURBUCKETHERE>/*"
}

IAM-Benutzerrichtlinie

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowConsoleAccess",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        }
    ]
}

Antwort1

Ändern Sie dieRessourceimBucket-Richtlinieum sowohl den Bucket allein als auch den Bucket mit Objekten einzuschließen:

"Resource": [
    "arn:aws:s3:::<YOURBUCKETHERE>",
    "arn:aws:s3:::<YOURBUCKETHERE>/*"
]

Hoffentlich hilft das :)

Antwort2

AWS-Richtlinienauswertungslogikwäre eine nützliche Lektüre. Kurz gesagt, eine explizite Ablehnung gewinnt. Es ist hier jedoch nicht relevant.

ICH BIN

Ihre IAM-Benutzerrichtlinie besagt: „Dieser Benutzer kann alle Buckets auflisten und Bucket-Standorte abrufen.“

Bucket-Richtlinie

Ihre Bucket-Richtlinie für einen bestimmten Bucket besagt: "Verweigern Sie ausdrücklich die Berechtigung, etwas zu tun, um Einwände zu erheben.innender Bucket". Das "/*" am Ende der Ressource bedeutet, dass die Richtlinie "innerhalb des Buckets" gilt. Wenn Sie diese Zeichen weglassen, bedeutet dies, dass die Richtlinie für den Bucket selbst gilt.

Kombiniert

Ihre kombinierten Richtlinien besagen also, dass alle Benutzer Buckets auflisten und Bucket-Standorte abrufen können, aber nichts mit Objekten im Bucket tun können. Ich bin überrascht, dass Sie Objekte im Bucket auflisten und die Bucket-Objekte anzeigen können. Ich vermute, dass hier eine andere Richtlinie im Spiel ist, da die AWS-Standardverweigerung besagt, dass Ihnen nichts angezeigt werden sollte.

Andere Meinungen

Wenn irgendjemand etwas entdeckt, das ich übersehen habe, weisen Sie mich bitte darauf hin :)

verwandte Informationen