如何使用boto3为IAM用户授予S3 bucket的完全权限?

2024-04-20 09:09:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在动态创建多个IAM用户,用户名为username,并创建一个S3 bucket,名称为username-bucket。你知道吗

我想在以username-bucket作为名称创建的s3 bucket上为新创建的用户授予完全权限。你知道吗

我已经阅读了boto3文档,其中他们将策略分配给s3存储桶。 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-example-bucket-policies.html

但它适用于任何用户。没有选项可以传递应该对bucket有权限的用户名。你知道吗

boto3中有这样的选项吗?你知道吗


Tags: 用户文档https名称权限s3bucket选项
2条回答

与链接的示例中的Principal设置为*不同,您希望使用以下格式将用户指定为Principal

"Principal": {"AWS":"arn:aws:iam::account-number-without-hyphens:user/username"}

有关在S3 bucket策略中指定Principal的详细信息,请参阅the documentation here。你知道吗

另一种建议:不给每个用户自己的bucket,您可以授予每个用户访问共享bucket中的目录。你知道吗

这允许您使用IAM策略变量,该变量更易于管理。你知道吗

IAM Policy Elements: Variables and Tags - AWS Identity and Access Management

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": ["s3:ListBucket"],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::mybucket"],
      "Condition": {"StringLike": {"s3:prefix": ["${aws:username}/*"]}}
    },
    {
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::mybucket/${aws:username}/*"]
    }
  ]
}

bucket上的这个单一策略将允许每个用户访问自己的目录。用户名将自动插入到策略中。这意味着您只需要用一个策略创建一个bucket。你知道吗

相关问题 更多 >