【问题标题】:How to set AWS S3 Policy where Principals is all principals in a specific aws account如何设置 AWS S3 策略,其中 Principals 是特定 aws 账户中的所有委托人
【发布时间】:2020-11-22 21:12:50
【问题描述】:

以下似乎是拒绝语句的无效主体:

"Principal" : {
    "AWS" : [
      "arn:aws:iam::123412341234:*"
    ]
  }

假设 123412341234 是我们的帐户 ID。

如何设置?下面似乎可行,但意味着必须明确列出来自外部帐户的所有相关 arn:

  "NotPrincipal" : {
    "AWS" : [
      "arn:aws:iam::111112341234:role/blar1",
      "arn:aws:iam::111112341234:role/blar2",
      "arn:aws:iam::111112341234:root",
      "arn:aws:iam::555552341234:role/blar3",
      "arn:aws:iam::555552341234:root",
    ]
  }

事实上,根据https://aws.amazon.com/blogs/security/how-to-restrict-amazon-s3-bucket-access-to-a-specific-iam-role/,这甚至行不通,因为我必须包含无法提前知道的assumed-role arns。

https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notprincipal.html

【问题讨论】:

  • 您的实际用例是什么?您是否授予任何人 的公共访问权限,但又想排除特定帐户(例如测试或生产帐户)?首先如何授予他们访问权限,从而需要拒绝?
  • 我们希望默认拒绝所有,但我们不想拒绝需要访问我们的 s3 存储桶的外部帐户。如果没有明确的查找许可,我们无法知道他们的 ARN(或 aws:userIds),因此 AWS 文档似乎暗示这是不可能的。就像我只需要询问外部帐户,让我知道他们需要访问我们的 s3 存储桶的角色的 AROA 样式 aws:userIds。
  • 所以您想允许任何人的帐户访问存储桶(使其成为公共存储桶),但您不希望自己的帐户能够访问它?我很困惑。
  • 我们不想允许外部帐户访问存储桶,而是希望从显式拒绝中排除外部帐户。这不是一回事。
  • 为什么有Deny?您是否授予人们访问“所有存储桶”的权限,但您希望此存储桶成为例外?它是一个高度敏感的桶吗?您是否可以一开始就不授予允许访问权限,从而消除对拒绝的需要?请提供更多信息!

标签: amazon-web-services amazon-s3 amazon-iam aws-policies


【解决方案1】:

这似乎可行:

"Principal" : {
  "AWS" : [
    "*"
  ]
}
"Condition" : {
    "ArnLike" : {
      "aws:PrincipalArn" : [
        "arn:aws:iam::123412341234:*"
      ]
    }
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 2021-04-25
    • 1970-01-01
    相关资源
    最近更新 更多