注意

本文档适用于 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)匹配的方式取决于所使用的后端。

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入