如何允许IAM用户完全访问仅在存储桶内的特定路径



背景

  • 我有几个水桶,每个都有一个"开发"one_answers"生产"文件夹。
  • 我有两个帐户accountname-devaccountname-prod

目标

  • 我希望account-dev在BucketName/Development上具有完整的访问(所有操作)
  • 我希望account-prod在BucketName/Production
  • 上具有完整的访问(所有操作)

问题

每当我使用策略生成器时,看起来我以某种方式做错了。添加标准管理策略允许访问该文档的罚款,但我的自定义策略却不能。

我使用亚马逊的IAM策略创建屏幕添加了特定帐户的策略。

我要使用的策略是:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "[Redacted]",
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Condition": {
        "StringLike": {
          "s3:prefix": "DEVELOPMENT/*"
        }
      },
      "Resource": [
        "arn:aws:s3:::RedactedBucketName"
      ]
    }
  ]
}

问题

  • 上面的策略有什么问题
  • 这是我唯一需要添加的政策吗?还是我需要先在存储桶级别添加某种访问功能?
  • 即使亚马逊的政策生成屏幕没有包含校长的完整ARN,还是最好的做法是什么?

我可以这样使它起作用:

仅分配IAM用户策略(不需要S3存储措施策略)。

检查以下用户策略。我为用户account-dev创建,这意味着您必须将此IAM策略应用于account-dev用户。

{
  "Statement": [
    {
      "Sid": "AllowGroupToSeeBucketListInTheConsole",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::*"
      ]
    },
    {
      "Sid": "AllowRootLevelListingOfDevelopmentBucket",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::development-bucket-name"
      ],
      "Condition": {
        "StringEquals": {
          "s3:prefix": [
            ""
          ],
          "s3:delimiter": [
            "/"
          ]
        }
      }
    },
    {
      "Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::development-bucket-name"
      ],
      "Condition": {
        "StringLike": {
          "s3:prefix": [
            "DEVELOPMENT/*"
          ]
        }
      }
    },
    {
      "Sid": "AllowUserToReadWriteObjectData",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:DeleteObjectVersion"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::development-bucket-name/DEVELOPMENT/*"
      ]
    }
  ]
}

AllowGroupToSeeBucketListInTheConsoleAllowRootLevelListingOfDevelopmentBucket是用户从S3控制台工作所需的。如果您不希望用户从S3控制台工作并希望他仅使用API工作,那么您可以省略这两个节。

类似地,您为account-prod创建了另一个用户策略并将其分配给该用户。

相关内容

  • 没有找到相关文章

最新更新