如何格式化Ceph S3存储桶策略主体?

问题描述 投票:0回答:1

我正在尝试为 Ceph S3 存储桶设置存储桶策略。

该政策有效,但允许公众访问

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowAllForAuthenticatedUsers",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "*"
                ]
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::mybucket",
                "arn:aws:s3:::mybucket/*"
            ]
        }
    ]
}

我相信我需要指定有权访问

Principal
中的存储桶的每个用户。 Ceph 文档在这里展示了这个例子:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {"AWS": ["arn:aws:iam::usfolks:user/fred:subuser"]},
    "Action": "s3:PutObjectAcl",
    "Resource": [
      "arn:aws:s3:::happybucket/*"
    ]
  }]
}

我相信示例中的

usfolks
是租户,文档提到了这一点:

我们使用 RGW“租户”标识符代替 Amazon 12 位帐户 ID。将来,我们可能允许您为租户分配账户 ID,但目前,如果您想在 AWS S3 和 RGW S3 之间使用策略,则在创建用户时必须使用 Amazon 账户 ID 作为租户 ID。

我检查了我的存储桶上的

tenant
是一个空字符串,并使用
radosgw-admin bucket stats
进行了验证。另外,查看
subsers
时,
radosgw-admin user info
未设置:
"subusers": [],

以下是我尝试过的多种格式中的一些

Principal
,在每种情况下我都通过尝试下载文件进行测试,但都收到错误
403 HeadObject operation Forbidden

"AWS": ["myuser-000"]
"AWS": ["arn:aws:iam:::user/myuser-000:"]
"AWS": ["arn:aws:iam:::user/*"]
"AWS": ["arn:aws:iam::usfolks:user/myuser-000:"]
"AWS": ["arn:aws:iam:::myuser-000:"]

在这些情况下,

myuser-000
也是存储桶所有者,我正在使用该用户的凭据进行身份验证。

amazon-s3 access-control ceph identity-management
1个回答
1
投票

这是最终起作用的存储桶策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam:::user/USERNAMEA",
          "arn:aws:iam:::user/USERNAMEB",
          "arn:aws:iam:::user/USERNAMEC"
        ]
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::BUCKETNAME",
        "arn:aws:s3:::BUCKETNAME/*"
      ]
    }
  ]
}

这假设默认 Ceph 环境不使用租户。替换

BUCKETNAME
USERNAME#

对于主体与本策略文档中的用户列表不匹配的情况,存在默认拒绝。

值得注意的是,主体中的通配符

*
在 Ceph 中不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.