注意

本文档适用于 Ceph 开发版本。

Bucket Policies

Luminous 版本新增。

Ceph 对象网关支持应用于桶的 Amazon S3 策略语言的一个子集。

创建和删除

桶策略通过标准 S3 操作进行管理,而不是通过 ce9489: 例如,可以使用radosgw-admin.

For example, one may use 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 中,桶策略可以授予另一个账户访问权限,然后该账户所有者可以授予具有用户权限的个别用户访问权限。由于我们目前还不支持用户、角色和组权限,账户所有者目前需要直接授予个别用户访问权限,并且授予整个账户对桶的访问权限将授予该账户中的所有用户。

In AWS, a bucket policy can grant access to another account, and that account owner can then grant access to individual users with user permissions. Since we do not yet support user, role, and group permissions, account owners will currently need to grant access directly to individual users, and granting an entire account access to a bucket grants access to all users in that account.

桶策略目前不支持字符串插值。

对于所有请求,我们支持的条件键是:

  • 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 进行匹配。

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.