0

私の現在のS3バケットポリシーはs3:getObjects3:putObjectをグローバルに有効にしています。バケットポリシーを指定することで制限しようとしています。ラムダ関数がオブジェクトを排他的にS3バケットに入れることを許可する

s3:getObjectは安全ですが、s3:putObjectへのアクセスを特定のAWSラムダ機能に限定したいと思います。

この関数は、CloudFrontに対するHTTPリクエストを介して匿名でトリガされるため、AWSユーザは含まれません。

ラムダのARN識別子によるアクセスを制限する方法はありますか?

現在の政策:

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

答えて

0

は実際には、必要とされたことはすべて、ラムダのためのアクセスポリシーを作成することでした。 lambda_basic_executionのようにあらかじめ定義されたものがあります。ここで私を助け、特定のconfigがある

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

役割の設定

が内部でAWSコンソールで見つけることができ

{ 
    "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

私が正しくあなたの元の質問を読んでいる場合は、 Lambda関数のIAMロールを作成するだけで、そのS3バケットへの書き込みを制限することはできません。そうするだけで、ラムダ関数ができることが制限されます。 Lambda関数とLambda関数だけをそのバケットに書きたい場合は、さらに何かが必要です(たとえば、VPCでLambdaを起動し、S3バケットポリシーを変更してそのVPCへのアクセスを制限します)。 – jarmod

+0

「アクション」:「s3:putObject」、「ステートメントIをバケットポリシーから削除した後、私はバケットに匿名で書き込むことはできません(オーナーとしてログに記録した場合のみ)。 '' Action ":" s3:PutObject "、'をラムダのIAMポリシーに追加することで、バケットに書き込むことができます。それは私が元々望んでいたものです。なぜもっと必要なのでしょうか? –

+0

いいですね。あなたはあなたの答えを受け入れるべきです。 – jarmod

関連する問題