0

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}/*" 
     } 
    ] 
} 

Antwort

0

Eigentlich alles, was erforderlich war, war eine Zugriffsrichtlinie für Lambda zu schaffen. Es gibt vordefinierte, wie lambda_basic_execution.

Lambda > Functions > {name} > Roles IAM > Roles

Hier ist eine spezifische Konfiguration, die mir geholfen:

Die Rolle config in der AWS-Konsole im Innern gefunden werden

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "logs:CreateLogGroup", 
       "logs:CreateLogStream", 
       "logs:PutLogEvents" 
      ], 
      "Resource": "arn:aws:logs:*:*:*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "s3:PutObject", 
      "Resource": "arn:aws:s3:::{bucket_name}/*" 
     } 
    ] 
} 
+0

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

+0

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? –

+0

Klingt gut. Sie sollten Ihre Antwort akzeptieren. – jarmod

Verwandte Themen