注意
本文档适用于 Ceph 的开发版本。
存储桶策略
New in version Luminous.
Ceph Object Gateway 支持应用于存储桶的 Amazon S3 策略语言子集。
创建与删除
存储桶策略通过标准的 S3 操作(而不是 radosgw-admin)进行管理。
例如,可以使用 s3cmd 来设置或删除策略,如下所示
$ cat > examplepol
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"AWS": ["arn:aws:iam::usfolks:user/fred:subuser"]},
"Action": "s3:PutObjectAcl",
"Resource": [
"arn:aws:s3:::happybucket/*"
]
}]
}
$ s3cmd setpolicy examplepol s3://happybucket
$ s3cmd delpolicy s3://happybucket
限制
目前,我们仅支持以下操作
s3:AbortMultipartUpload
s3:CreateBucket
s3:DeleteBucketPolicy
s3:DeleteBucket
s3:DeleteBucketWebsite
s3:DeleteObject
s3:DeleteObjectVersion
s3:DeleteReplicationConfiguration
s3:GetAccelerateConfiguration
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
s3:IPAddress
s3:NotIpAddress
s3:ListAllMyBuckets
s3:ListBucketMultipartUploads
s3:ListBucket
s3:ListBucketVersions
s3:ListMultipartUploadParts
s3:PutAccelerateConfiguration
s3:PutBucketAcl
s3:PutBucketCORS
s3:PutBucketLogging
s3:PutBucketNotification
s3:PutBucketPolicy
s3:PutBucketRequestPayment
s3:PutBucketTagging
s3:PutBucketVersioning
s3:PutBucketWebsite
s3:PutLifecycleConfiguration
s3:PutObjectAcl
s3:PutObject
s3:PutObjectVersionAcl
s3:PutReplicationConfiguration
s3:RestoreObject
我们尚不支持为用户、组或角色设置策略。
我们使用 RGW“租户”标识符来代替 Amazon 的十二位帐户 ID。将来我们可能会允许您为租户分配帐户 ID,但目前,如果您想在 AWS S3 和 RGW S3 之间使用策略,则在创建用户时必须使用 Amazon 帐户 ID 作为租户 ID。
在 AWS 下,所有租户共享一个命名空间。RGW 为每个租户提供自己的存储桶命名空间。在未来版本中,可能会有一个选项来启用类似于 AWS 的“平面”存储桶命名空间。目前,要访问属于另一个租户的存储桶,请在 S3 请求中将其地址指定为 tenant:bucket。
在 AWS 中,存储桶策略可以授予另一个帐户访问权限,然后该帐户所有者可以使用用户权限授予单个用户访问权限。由于我们尚不支持用户、角色和组权限,因此帐户所有者目前需要直接向单个用户授予访问权限,并且授予整个帐户对存储桶的访问权限会授予该帐户中所有用户访问权限。
存储桶策略尚不支持字符串插值。
对于所有请求,我们支持的条件键是
aws:CurrentTime
aws:EpochTime
aws:PrincipalType
aws:Referer
aws:SecureTransport
aws:SourceIp
aws:UserAgent
aws:username
我们支持用于存储桶和对象请求的某些 S3 条件键。
在 Ceph 的 Mimic 版本中添加了对以下存储桶相关操作的支持。
Swift
无法在 Swift 下设置存储桶策略,但已设置的存储桶策略会同时管辖 Swift 和 S3 操作。
Swift 凭证与策略中指定的主体(Principal)匹配的方式取决于所使用的后端。