Meine aktuelle S3-Bucket-Richtlinie aktiviert s3:getObject
und s3:putObject
global, und ich versuche, dies durch Angabe einer Bucket-Richtlinie zu beschränken.Zulassen, dass eine Lambda-Funktion ausschließlich Objekte in einen S3-Bucket platziert
Während s3:getObject
sicher ist, möchte ich den Zugriff auf s3:putObject
nur auf eine bestimmte AWS Lambda-Funktion beschränken.
Die Funktion wird anonym über eine HTTP-Anfrage an CloudFront ausgelöst, so dass kein AWS-Benutzer beteiligt ist.
Wie kann der Zugriff über den ARN-Identifier des Lambda eingeschränkt werden?
Aktuelle Politik:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:getObject",
"Resource": "arn:aws:s3:::{bucket_name}/*"
},
{
"Sid": "LambdaPutObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:putObject",
"Resource": "arn:aws:s3:::{bucket_name}/*"
}
]
}
Wenn ich richtig Ihre ursprüngliche Frage zu lesen, Sie können nicht einschränken, wer/was in diesen S3-Bucket schreibt, indem Sie einfach eine IAM-Rolle für Ihre Lambda-Funktion erstellen. Alles, was tut, ist einzuschränken, was die Lambda-Funktion tun kann. Wenn Sie möchten, dass die Lambda-Funktion und nur die Lambda-Funktion in diesen Bucket schreiben können, benötigen Sie etwas mehr (z. B. das Lambda in einer VPC starten und die S3-Bucket-Richtlinie ändern, um den Zugriff auf diese VPC einzuschränken). – jarmod
Nach dem Entfernen der "Action": "s3: putObject", "Statement I" aus der Bucket-Richtlinie kann ich nicht mehr anonym in den Bucket schreiben (nur wenn ich als Besitzer angemeldet bin). Das Hinzufügen der "Action": "s3: PutObject", "in die IAM-Richtlinie von Lambda erlaubt es, in den Bucket zu schreiben. Das wollte ich ursprünglich, warum sollte ich mehr brauchen? –
Klingt gut. Sie sollten Ihre Antwort akzeptieren. – jarmod