参考:https://docs.ceph.com/docs/master/radosgw/admin/
Ceph 中,有两种用户类型:User
和 Subuser
。可以对 这两种类型进行增删改查,除了用户 ID,可以指定 key 和 secret,也可以自动生成。
创建一个用户(S3 interface)
$ radosgw-admin user create --uid=xujiyou_id --display-name="xujiyou" [email protected]
响应如下:
{
"user_id": "xujiyou_id",
"display_name": "xujiyou",
"email": "[email protected]",
"suspended": 0,
"max_buckets": 1000,
"subusers": [],
"keys": [
{
"user": "xujiyou_id",
"access_key": "9DDR7X24VCNXNPVSOYZ2",
"secret_key": "KguITqKdPxVNsx7GpWwpgbgxfVm6OwBV0zlmr88e"
}
],
"swift_keys": [],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"default_storage_class": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"temp_url_keys": [],
"type": "rgw",
"mfa_ids": []
}
创建一个 subuser(Swift interface) 为一个 user。
格式:
radosgw-admin subuser create --uid={uid} --subuser={uid} --access=[ read | write | readwrite | full ]
例子:
$ radosgw-admin subuser create --uid=xujiyou_id --subuser=xujiyou_id:swift --access=full
响应如下:
{
"user_id": "xujiyou_id",
"display_name": "xujiyou",
"email": "[email protected]",
"suspended": 0,
"max_buckets": 1000,
"subusers": [
{
"id": "xujiyou_id:swift",
"permissions": "full-control"
}
],
"keys": [
{
"user": "xujiyou_id",
"access_key": "9DDR7X24VCNXNPVSOYZ2",
"secret_key": "KguITqKdPxVNsx7GpWwpgbgxfVm6OwBV0zlmr88e"
}
],
"swift_keys": [
{
"user": "xujiyou_id:swift",
"secret_key": "4KzvCN0lqf4ByydZhhuYrAMFmBksRz9xS4LLZI6f"
}
],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"default_storage_class": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"temp_url_keys": [],
"type": "rgw",
"mfa_ids": []
}
$ radosgw-admin user info --uid=johndoe
$ radosgw-admin user modify --uid=xujiyou_id --display-name="Xu ji you"
这样会修改用户的显示名称,uid 是不能修改的。
修改 subuser:
$ radosgw-admin subuser modify --uid=xujiyou_id --subuser=xujiyou_id:swift --access=full
这句话什么都没改。
暂停用户:
$ radosgw-admin user suspend --uid=xujiyou_id
这会将用户的 suspended
字段设置为 1。
启用用户:
$ radosgw-admin user enable --uid=xujiyou_id
删除一个用户时,会连带将其子用户也一并删除掉。
这里先删除子用户:
$ radosgw-admin subuser rm --subuser=xujiyou_id:swift --purge-data --purge-keys
--purge-data
表示清除用户的数据,--purge-keys
表示清除用户的key,慎用!!!
删除用户:
$ radosgw-admin user rm --uid=xujiyou_id
为用户创建 key,需指定 uid:
$ radosgw-admin key create --uid=xujiyou_id --key-type=s3 --access-key fooAccessKey --secret-key fooSecretKey
为 subuser 创建一个 key:
$ radosgw-admin key create --subuser=xujiyou_id:swift --key-type=swift --secret-key barSecret
subuser 也可以使用 S3 的 API:
$ radosgw-admin key create --subuser=xujiyou_id:swift --key-type=s3 --access-key barAccessKey --secret-key barSecretKey
删除 s3 的密钥对:
$ radosgw-admin key rm --uid=xujiyou_id --key-type=s3 --access-key=fooAccessKey
删除后,会自动生成一个密钥对。
删除 swift 的密钥对:
$ radosgw-admin key rm --subuser=xujiyou_id:swift --key-type=swift
上边有个权限,是对数据的操作权限,这里要学的权限是管理权限。
要向用户添加管理功能,请执行以下命令:
radosgw-admin caps add --uid={uid} --caps={caps}
其中,caps 为:
--caps="[users|buckets|metadata|usage|zone]=[*|read|write|read, write]"
举例:
$ radosgw-admin caps add --uid=xujiyou_id --caps="users=*;buckets=*"
部分响应如下:
"caps": [
{
"type": "buckets",
"perm": "*"
},
{
"type": "users",
"perm": "*"
}
],
删除管理权限:
$ radosgw-admin caps rm --uid=xujiyou_id --caps="users=*;buckets=*"
先来说明下几个选项:
- --bucket 指定用户可以使用的桶
- --max-objects 指定用户可以储存的最大对象数量
- --max-size 指定用户可以使用的最大空间,以 B/K/M/G/T 为单位,其中 B 是默认的。
- --quota-scope 设置配额的范围,user 或者 bucket。
设置用户配额,例子:
$ radosgw-admin quota set --quota-scope=user --uid=xujiyou_id --max-objects=1024 --max-size=1024B
启用用户配额:
$ radosgw-admin quota enable --quota-scope=user --uid=xujiyou_id
禁用用户配额:
$ radosgw-admin quota disable --quota-scope=user --uid=xujiyou_id
设置桶配额:
$ radosgw-admin quota set --quota-scope=bucket --uid=xujiyou_id --max-objects=1024 --max-size=1024B
开启桶配额:
$ radosgw-admin quota enable --quota-scope=bucket --uid=xujiyou_id
禁用桶配额:
$ radosgw-admin quota disable --quota-scope=bucket --uid=xujiyou_id
查看配额信息:
$ radosgw-admin user info --uid=xujiyou_id
部分响应如下:
"bucket_quota": {
"enabled": true,
"check_on_raw": false,
"max_size": 1024,
"max_size_kb": 1,
"max_objects": 1024
},
"user_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": 1024,
"max_size_kb": 1,
"max_objects": 1024
},
配额统计信息会异步更新。您可以手动更新所有用户和所有存储桶的配额统计信息,以获取最新的配额统计信息:
$ radosgw-admin user stats --uid=xujiyou_id --sync-stats
要查看用户已消耗了多少配额,请执行以下操作:
$ radosgw-admin user stats --uid=xujiyou_id
响应如下 :
{
"stats": {
"size": 0,
"size_actual": 0,
"size_utilized": 0,
"size_kb": 0,
"size_kb_actual": 0,
"size_kb_utilized": 0,
"num_objects": 0
},
"last_stats_sync": "2020-04-16T02:36:04.336345Z",
"last_stats_update": "0.000000"
}
默认配额和配额缓存略过。
读取全局配额:
$ radosgw-admin global quota get
响应如下:
{
"bucket quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"user quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
}
}
设置全局配额:
$ radosgw-admin global quota set --quota-scope bucket --max-objects 1024
$ radosgw-admin global quota enable --quota-scope bucket
网关重启后生效。
查看使用记录:
$ radosgw-admin usage show --show-log-entries=false
查看某用户某个时间段的使用记录:
$ radosgw-admin usage show --uid=johndoe --start-date=2012-03-01 --end-date=2012-04-01
在大量使用的情况下,使用日志可能会开始占用存储空间。您可以为所有用户和特定用户修剪使用日志。您也可以指定修剪操作的日期范围。
radosgw-admin usage trim --start-date=2010-01-01 --end-date=2010-12-31
radosgw-admin usage trim --uid=johndoe
radosgw-admin usage trim --uid=johndoe --end-date=2013-12-31