两个用户无法在 Ceph Reef 上看到彼此的存储桶。
首先,我在 ceph admin vm 上创建用户:
radosgw-admin user create --tenant=homelab --uid=user1 --display-name="First User" --email="[email protected]"
radosgw-admin user create --tenant=homelab --uid=user2 --display-name="Second User" --email="[email protected]"
然后,从我的机器上使用 minio 的 mc 客户端(在 RELEASE.2024-02-09T22-18-24Z,rgw ingress 在 192.168.56.50:4443),我设置了每个用户的别名:
mc --insecure alias set ceph-test-user1 https://192.168.56.50:4443 <user1 access key> <user1 secret key>
mc --insecure alias set ceph-test-user2 https://192.168.56.50:4443 <user2 access key> <user2 secret key>
然后,我为每个用户创建了一个存储桶:
mc --insecure mb ceph-test-user1/user1-test
mc --insecure mb ceph-test-user2/user2-test
每个用户都可以看到自己的存储桶,没问题:
mc --insecure ls ceph-test-user1
mc --insecure ls ceph-test-user2
然后,我设置一个策略以允许用户 2 查看用户 1 的存储桶,如下所示:
mc --insecure anonymous set-json policy.json ceph-test-user1/user1-test
我收到了一条成功消息,但无论我如何调整策略,用户 2 似乎都无法看到用户 1 的存储桶列表:
mc --insecure ls ceph-test-user2
我的策略文件的最后一次迭代如下所示(我尝试将我能找到的每个读取权限都放在文档中):
{
"Version": "2012-10-17",
"Id": "S3Policy1",
"Statement": [
{
"Sid": "BucketAllow",
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws:iam::homelab:user/user2"]
},
"Action": [
"s3:ListBucket",
"s3:ListBucketVersions",
"s3:ListAllMyBuckets",
"s3:ListBucketMultiPartUploads",
"s3:ListMultipartUploadParts",
"s3:GetBucketAcl",
"s3:GetBucketCORS",
"s3:GetBucketLocation",
"s3:GetBucketLogging",
"s3:GetBucketNotification",
"s3:GetBucketPolicy",
"s3:GetBucketRequestPayment",
"s3:GetBucketTagging",
"s3:GetBucketVersioning",
"s3:GetBucketWebsite",
"s3:GetLifecycleConfiguration",
"s3:GetObjectAcl",
"s3:GetObject",
"s3:GetObjectTorrent",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersion",
"s3:GetObjectVersionTorrent",
"s3:GetReplicationConfiguration"
],
"Resource": [
"arn:aws:s3:::user1-test",
"arn:aws:s3:::user1-test/*"
]
}
]
}
我也尝试过将存储桶放入不带策略的策略中arn:aws:s3:::user1-test/*
(或反之),但没有效果。
有人有任何见解吗?
编辑:好的,实际上,它几乎可以起作用。
当明确传递存储桶的路径时,用户 2 可以查看共享存储桶内用户 1 的对象,如下所示:
mc --insecure ls ceph-test-user2/user1-test
但是,用户 2 必须知道存储桶已经存在,因为通过执行根列表似乎无法发现它。不确定我是否遗漏了权限中的某些内容,或者它是否根本不受支持。