2.4.25. S3 存储桶策略
Ceph 对象网关支持应用到 bucket 的 Amazon S3 策略语言的子集。
创建和删除
Ceph 对象网关通过标准 S3 操作来管理 S3 Bucket 策略,而不使用 radosgw-admin CLI 工具。
管理员可以使用 s3cmd 命令来设置或删除策略。
示例
限制
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 凭据与策略中指定的主体匹配。