【问题标题】:由于存储桶策略,我的 AWS 生命周期策略未实施
【发布时间】:2022-01-23 01:13:16
【问题描述】:

我有一个 s3 存储桶,我在其中制定了一项政策,以防止任何人在对象不是来自我的 VPC 的情况下访问这些对象,但是,现在当我在存储桶上放置生命周期策略时,它不适用

这是我对存储桶的当前政策:

{
  "Version": "2012-10-17",
  "Id": "Policy1636125293921",
  "Statement": [
      {
          "Sid": "Stmt1636125292369",
          "Effect": "Deny",
          "Principal": "*",
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::bucketname/*",
          "Condition": {
              "StringNotEquals": {
                  "aws:SourceVPC": [
                      "vpc-0987654321",
                      "vpc-1234567890"
                  ]
              }
          }
      }
  ]
}

我已尝试添加第二条语句,通过此语句向我的用户提供完全访问权限:

{
  "Sid": "Stmt1636125292368",
  "Effect": "Allow",
  "Principal": {
      "AWS": "arn:aws:iam::123456789012:user/username"
  },
  "Action": "s3:*",
  "Resource": "arn:aws:s3:::bucketname/*"
}

我已经尝试了第二条语句的几种不同组合,但它仍然没有运行生命周期策略,该策略存在并且存在,但它没有运行。在其中一个对象的“对象管理概述”下,到期日期和到期规则保持空白,但是如果我删除拒绝策略,那么我可以看到到期日期。我需要那个拒绝政策来继续做它做的事情,所以我不能删除它。我还要补充一点,我使用的用户具有完全的管理员权限。

【问题讨论】:

  • 是生命周期策略没有运行的问题,还是无法“添加生命周期策略”(这种情况,报错信息是什么)?
  • @JohnRotenstein 该政策存在,我可以添加它,我还使用“get-bucket-lifecycle-configuration”通过 CLI 检查,我可以在那里看到它。但是它没有运行,并且在管理配置下的对象概述中,过期规则和过期日期保持空白
  • 一般来说,最好避免使用Deny 策略。在这种情况下,它似乎拒绝了生命周期策略正在尝试的更改,因为它不是来自您的 VPC。如果您有一个超级机密存储桶,有时将其放入不同的 AWS 账户然后限制对该账户的访问会更容易。
  • @JohnRotenstein 我设法使用“NotPrincipal”让它适用于我的用例,我什至不知道它在今天之前存在。感谢您的帮助

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


【解决方案1】:

我没有将 Principal 用作 DENY 语句的 "*",而是将其替换为

"NotPrincipal": {
"AWS": [
    "arn:aws:iam::123456789012:user/username",
    "arn:aws:iam::123456789012:root"

该政策现在拒绝不属于我的账户的任何人,但它还允许通过 VPC 访问对象的匿名用户仍然具有访问权限。现在,这使我能够在存储桶上成功运行生命周期策略。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 2023-01-02
    相关资源
    最近更新 更多