繁体   English   中英

如何将 AWS S3 存储桶的访问权限限制为特定角色?

[英]How to restrict access to an AWS S3 bucket only to a specific role?

在我的 AWS 项目中,我有一个 lambda 函数,由 API Gateway 中的 API 调用,它在 S3 存储桶中获取文件。

我尝试尽可能保护我的 S3 存储桶,在阅读完这篇这篇之后,这是我在 CloudFormation 模板中所做的:

  • 在 API 的 IAM 角色的策略中:
  - Effect: 'Allow'
    Action:
      - "s3:GetObject"
    Resource: 'arn:aws:s3:::exampleS3Bucket/*'
  • 在我的 S3 存储桶的策略中:
  - Effect: "Deny"
    Action:
      - "s3:*"
    Principal: "*"
    Resource:
      - 'arn:aws:s3:::exampleS3Bucket'
      - 'arn:aws:s3:::exampleS3Bucket/*'
    Condition:
      StringNotLike:
        aws:userId:
          - "<API_IAM_ROLE_ID>"

根据文档,您可以通过调用以下 AWS CLI 命令来检索API_IAM_ROLE_IDaws iam get-role --role-name <YOUR_IAM_ROLE>

但我面临两个问题:

  • 它不起作用,我仍然有Access Denied错误
  • 即使它有效,它看起来也不是一个干净的解决方案,特别是如果我想处理多种环境(开发、暂存、生产......)

编辑

我还尝试了以下 S3 存储桶策略:

  - Effect: "Deny"
    Action:
      - "s3:*"
    NotPrincipal:
      AWS:
        - "arn:aws:iam::123456789012:root"
        - "arn:aws:iam::123456789012:role/my-api-role"
    Resource:
      - 'arn:aws:s3:::exampleS3Bucket'
      - 'arn:aws:s3:::exampleS3Bucket/*'

但是当我调用我的 API 时,它调用了一个调用 S3.GetObject() 的 lambda,我仍然有一个“拒绝访问”异常。

我该如何解决?

谢谢。

拒绝访问特定存储桶可能很棘手。

例如,管理员可能能够修改角色和存储桶策略,因此他们将能够重新获得对存储桶的访问权限。

通常的做法是将敏感信息放在不同 AWS 账户的存储桶中,然后仅向“主”账户中的特定用户提供对存储桶的访问权限。 这样,默认情况下主帐户中的任何人都没有访问权限。 它还简化了权限的设计,因为不需要应用Deny策略。

一个例子是敏感的人力资源信息被存储在那里,只有少数用户可以访问数据。

我最近就是这样做的。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::MyExampleBucket",
        "arn:aws:s3:::MyExampleBucket/*"
      ],
      "Condition": {
        "StringNotLike": {
          "aws:userId": [
            "AROAEXAMPLEID:*",
            "ACCOUNT NUMBER"
          ]
        }
      }
    }
  ]
}

这就是它的工作原理。

  • 允许:用户的 IAM 策略允许访问 S3 存储桶
  • Deny:桶策略用于拒绝除角色的用户 ID 之外的所有用户的访问。

获取角色的用户 ID:

aws iam get-role --role-name ROLE-NAME

参考: https : //aws.amazon.com/blogs/security/how-to-restrict-amazon-s3-bucket-access-to-a-specific-iam-role/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM