AWS SAM - 限制对 S3 存储桶的公共访问,但允许 Lambda 访问

问题描述 投票:0回答:1

我正在尝试定义一个禁用公共访问的 S3 存储桶,但我的其他定义的 Lambda 可以访问它。我不断收到有关“策略中的主体无效”的部署错误。

这是我的资源定义...

ResultsBucketPolicy:
  Type: AWS::S3::BucketPolicy
  Properties:
    Bucket: !Ref ResultsBucket
    PolicyDocument:
      Version: '2012-10-17'
      Statement:
        - Effect: Deny
          Action: s3:GetObject
          Resource: !Sub '${ResultsBucket.Arn}/*'
          Principal: '*'
        - Effect: Allow
          Action: s3:GetObject
          Resource: !Sub '${ResultsBucket.Arn}/*'
          Principal:
            AWS:
              - !GetAtt ExampleFunction.Role
              - !GetAtt AnotherExampleFunction.Role

我也尝试过...

- !Sub 'arn:aws:iam::${AWS::AccountId}:role/${ExampleFunction.Arn}'
- !Sub 'arn:aws:iam::${AWS::AccountId}:role/${AnotherExampleFunction.Arn}'

还有

- !Sub 'arn:aws:iam::${AWS::AccountId}:role/${ExampleFunction.Arn}'
- !Sub 'arn:aws:iam::${AWS::AccountId}:role/${AnotherExampleFunction.Arn}'
amazon-s3 aws-lambda aws-sam
1个回答
0
投票

这可能会有所帮助 - 拒绝访问除特定 lambda 之外的 S3 存储桶

基本上在您的 Deny 声明中使用“NotPrincipal”。

例如。

{

"Sid": "denystatement",

"Effect": "Deny",

"NotPrincipal": {
    "AWS": [
        "arn:aws:iam::112233445566:role/lambda_role"
    ] 
    }

}

** S3 存储桶策略不需要资源密钥 - 它们附加到特定存储桶。

© www.soinside.com 2019 - 2024. All rights reserved.