2.4.25. S3 存储桶策略
Ceph 对象网关支持应用到 bucket 的 Amazon S3 策略语言的子集。
创建和删除
Ceph 对象网关通过标准 S3 操作来管理 S3 Bucket 策略,而不使用 radosgw-admin
CLI 工具。
管理员可以使用 s3cmd
命令来设置或删除策略。
示例
$ cat > examplepol { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"AWS": ["arn:aws:iam::usfolks:user/fred"]}, "Action": "s3:PutObjectAcl", "Resource": [ "arn:aws:s3:::happybucket/*" ] }] } $ s3cmd setpolicy examplepol s3://happybucket $ s3cmd delpolicy s3://happybucket
限制
Ceph 对象网关仅支持以下 S3 操作:
-
s3:AbortMultipartUpload
-
s3:CreateBucket
-
s3:DeleteBucketPolicy
-
s3:DeleteBucket
-
s3:DeleteBucketWebsite
-
s3:DeleteObject
-
s3:DeleteObjectVersion
-
s3:GetBucketAcl
-
s3:GetBucketCORS
-
s3:GetBucketLocation
-
s3:GetBucketPolicy
-
s3:GetBucketRequestPayment
-
s3:GetBucketVersioning
-
s3:GetBucketWebsite
-
s3:GetLifecycleConfiguration
-
s3:GetObjectAcl
-
s3:GetObject
-
s3:GetObjectTorrent
-
s3:GetObjectVersionAcl
-
s3:GetObjectVersion
-
s3:GetObjectVersionTorrent
-
s3:ListAllMyBuckets
-
s3:ListBucketMultiPartUploads
-
s3:ListBucket
-
s3:ListBucketVersions
-
s3:ListMultipartUploadParts
-
s3:PutBucketAcl
-
s3:PutBucketCORS
-
s3:PutBucketPolicy
-
s3:PutBucketRequestPayment
-
s3:PutBucketVersioning
-
s3:PutBucketWebsite
-
s3:PutLifecycleConfiguration
-
s3:PutObjectAcl
-
s3:PutObject
-
s3:PutObjectVersionAcl
Ceph 对象网关不支持在用户、组或角色上设置策略。
Ceph 对象网关使用 RGW 的"租户"标识符来代替 Amazon twelve-bit 帐户 ID。希望使用 Amazon Web Service(AWS)S3 和 Ceph 对象网关 S3 之间的策略,必须在创建用户时将 Amazon 帐户 ID 用作租户 ID。
使用 AWS S3 时,所有租户共享一个命名空间。与之相反,Ceph 对象网关为每个租户提供自己的 bucket 命名空间。目前,Ceph 对象网关客户端试图访问属于另一个租户 MUST 地址的 bucket,作为 S3 请求中的 tenant:bucket
。
在 AWS 中,存储桶策略可以授予其他帐户的访问权限,然后该帐户所有者可以向具有用户权限的单独用户授予访问权限。由于 Ceph 对象网关尚不支持用户、角色和组权限,因此帐户所有者需要直接向个别用户授予访问权限。
授予 bucket 的完整帐户访问权限,授予该帐户中所有用户的访问权限。
bucket 策略 不支持 字符串插值。
Ceph 对象网关支持以下条件键:
-
aws:CurrentTime
-
aws:EpochTime
-
aws:PrincipalType
-
aws:Referer
-
aws:SecureTransport
-
aws:SourceIp
-
aws:UserAgent
-
aws:username
Ceph 对象网关仅支持以下条件键进行 ListBucket
操作:
-
s3:prefix
-
s3:delimiter
-
s3:max-keys
对 Swift 的影响
Ceph 对象网关提供在 Swift API 下设置 bucket 策略的功能。但是,使用 S3 API 管理 Swift 以及 S3 操作设置的存储桶策略。
Ceph 对象网关将 Swift 凭据与策略中指定的主体匹配。