OpenStack S3 Swift: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) (Новая страница: «Категория:OpenStack Категория:S3 Категория:swift =Openstack S3 Swift= =Ссылки= https://docs.redhat.com/en/documenta...») |
Sirmax (обсуждение | вклад) |
||
| (не показана 21 промежуточная версия этого же участника) | |||
| Строка 2: | Строка 2: | ||
[[Категория:S3]] |
[[Категория:S3]] |
||
[[Категория:swift]] |
[[Категория:swift]] |
||
| + | [[Категория: ceph]] |
||
=Openstack S3 Swift= |
=Openstack S3 Swift= |
||
| + | Задача |
||
| + | * создать 2 бакета |
||
| + | * создать 2 пользователя |
||
| + | * настроить права что бы первый пользователь мог работать с 2 бакетами а второй только с одним |
||
| + | Задачу можно решать 2 способами - с использованием пользователей <code>keystone</code> и с использованием пользователей <code>rados</code> |
||
| + | |||
| + | =<code>rados</code>= |
||
| + | ==Создать пользователей== |
||
| + | <PRE> |
||
| + | radosgw-admin user create --uid user-prod --display-name user-prod |
||
| + | </PRE> |
||
| + | <PRE> |
||
| + | { |
||
| + | "user_id": "user-prod", |
||
| + | "display_name": "user-prod", |
||
| + | "email": "", |
||
| + | "suspended": 0, |
||
| + | "max_buckets": 1000, |
||
| + | "subusers": [], |
||
| + | "keys": [ |
||
| + | { |
||
| + | "user": "user-prod", |
||
| + | "access_key": "XXX", |
||
| + | "secret_key": "YYYYYYYYY" |
||
| + | } |
||
| + | ], |
||
| + | "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": [] |
||
| + | } |
||
| + | </PRE> |
||
| + | Аналогично |
||
| + | <PRE> |
||
| + | radosgw-admin user create --uid user-dqs --display-name user-dqs |
||
| + | </PRE> |
||
| + | ==Получить из OpenStack endpoint== |
||
| + | ===Получить название региона=== |
||
| + | <PRE> |
||
| + | openstack region list |
||
| + | </PRE> |
||
| + | <PRE> |
||
| + | +-----------------+---------------+-------------+ |
||
| + | | Region | Parent Region | Description | |
||
| + | +-----------------+---------------+-------------+ |
||
| + | | staging-region | None | | |
||
| + | +-----------------+---------------+-------------+ |
||
| + | </PRE> |
||
| + | ===Получить endpoint с учетом региона=== |
||
| + | <PRE> |
||
| + | openstack \ |
||
| + | versions show \ |
||
| + | --service object-store \ |
||
| + | --status CURRENT \ |
||
| + | --interface public \ |
||
| + | --region staging-region \ |
||
| + | -c Endpoint -f value | sed 's/\/swift\/.*$//' |
||
| + | https://staging.domain.tld |
||
| + | </PRE> |
||
| + | ==Конфигурационные файлы для <code>s3cmd</code>== |
||
| + | Для каждого пользователя свой конфигурационный файл соответвенно |
||
| + | |||
| + | ===s3cfg-user-prod.cfg=== |
||
| + | <PRE> |
||
| + | [default] |
||
| + | access_key = XXX |
||
| + | secret_key = YYYYYYYYY |
||
| + | host_base = https://staging.domain.tld |
||
| + | host_bucket = |
||
| + | </PRE> |
||
| + | * <code>access_key</code> XXX id который вывдится при создании пользователя |
||
| + | * <code>secret_key</code> YYYYYYYYY секрет который вывдится при создании пользователя |
||
| + | * <code>host_base</code> https://staging.domain.tld - endpoint полученный из OpenStack |
||
| + | |||
| + | ===s3cfg-user-dqs.cfg=== |
||
| + | аналогично, за искючением секретов |
||
| + | |||
| + | ==Создание bucket== |
||
| + | <PRE> |
||
| + | /usr/local/bin/s3cmd -c s3cfg-user-prod.cfg mb s3://prod |
||
| + | Bucket 's3://prod/' created |
||
| + | </PRE> |
||
| + | <PRE> |
||
| + | /usr/local/bin/s3cmd -c s3cfg-user-dqs.cfg mb s3://dqs |
||
| + | Bucket 's3://dqs/' created |
||
| + | </PRE> |
||
| + | ==Проверка доступности== |
||
| + | Каждый пользователь видит только свой бакет |
||
| + | <PRE> |
||
| + | /usr/local/bin/s3cmd -c s3cfg-user-dqs.cfg ls |
||
| + | 2025-03-21 13:02 s3://dqs |
||
| + | </PRE> |
||
| + | <PRE> |
||
| + | /usr/local/bin/s3cmd -c s3cfg-user-prod.cfg ls |
||
| + | 2025-03-21 12:46 s3://prod |
||
| + | </PRE> |
||
| + | |||
| + | ==Проверка кому принадлежит бакет== |
||
| + | В примере имя бакета <code>tf-data</code> а принадлежит он <code>"owner": "tfuser"</code> |
||
| + | <PRE> |
||
| + | radosgw-admin bucket stats --bucket tf-data |
||
| + | </PRE> |
||
| + | <PRE> |
||
| + | { |
||
| + | "bucket": "tf-data", |
||
| + | "num_shards": 11, |
||
| + | "tenant": "", |
||
| + | "zonegroup": "6824bc11-eca9-4431-ae8c-d2480e1bbd57", |
||
| + | "placement_rule": "default-placement", |
||
| + | "explicit_placement": { |
||
| + | "data_pool": "", |
||
| + | "data_extra_pool": "", |
||
| + | "index_pool": "" |
||
| + | }, |
||
| + | "id": "ca82dea1-f8c6-4f23-9afa-c82f08f1d8c1.31654776.1", |
||
| + | "marker": "ca82dea1-f8c6-4f23-9afa-c82f08f1d8c1.31654776.1", |
||
| + | "index_type": "Normal", |
||
| + | "versioned": false, |
||
| + | "versioning_enabled": false, |
||
| + | "object_lock_enabled": false, |
||
| + | "mfa_enabled": false, |
||
| + | "owner": "tfuser", |
||
| + | "ver": "0#1,1#1,2#1,3#1,4#1,5#1,6#1,7#1,8#1,9#1,10#1", |
||
| + | "master_ver": "0#0,1#0,2#0,3#0,4#0,5#0,6#0,7#0,8#0,9#0,10#0", |
||
| + | "mtime": "2025-05-12T11:43:13.540766Z", |
||
| + | "creation_time": "2025-05-12T11:43:13.503812Z", |
||
| + | "max_marker": "0#,1#,2#,3#,4#,5#,6#,7#,8#,9#,10#", |
||
| + | "usage": {}, |
||
| + | "bucket_quota": { |
||
| + | "enabled": false, |
||
| + | "check_on_raw": false, |
||
| + | "max_size": -1, |
||
| + | "max_size_kb": 0, |
||
| + | "max_objects": -1 |
||
| + | } |
||
| + | } |
||
| + | </PRE> |
||
| + | |||
| + | ==Policy== |
||
| + | ===Создание политик=== |
||
| + | Политики похожи но отличаются в части Principal |
||
| + | ====bucket prod==== |
||
| + | <PRE> |
||
| + | { |
||
| + | "Version": "2012-10-17", |
||
| + | "Id": "S3Policy1", |
||
| + | "Statement": [ |
||
| + | { |
||
| + | "Sid": "BucketAllow", |
||
| + | "Effect": "Allow", |
||
| + | "Principal": { |
||
| + | "AWS": [ |
||
| + | "arn:aws:iam:::user/user-prod" |
||
| + | ] |
||
| + | }, |
||
| + | "Action": [ |
||
| + | "s3:ListBucket", |
||
| + | "s3:PutObject", |
||
| + | "s3:GetObject", |
||
| + | "s3:DeleteObject" |
||
| + | ], |
||
| + | "Resource": [ |
||
| + | "arn:aws:s3:::prod", |
||
| + | "arn:aws:s3:::prod/*" |
||
| + | ] |
||
| + | } |
||
| + | ] |
||
| + | } |
||
| + | </PRE> |
||
| + | |||
| + | ====bucket dqs==== |
||
| + | <PRE> |
||
| + | { |
||
| + | "Version": "2012-10-17", |
||
| + | "Id": "S3Policy1", |
||
| + | "Statement": [ |
||
| + | { |
||
| + | "Sid": "BucketAllow", |
||
| + | "Effect": "Allow", |
||
| + | "Principal": { |
||
| + | "AWS": [ |
||
| + | "arn:aws:iam:::user/user-prod", |
||
| + | "arn:aws:iam:::user/user-dqs" |
||
| + | ] |
||
| + | }, |
||
| + | "Action": [ |
||
| + | "s3:ListBucket", |
||
| + | "s3:PutObject", |
||
| + | "s3:GetObject", |
||
| + | "s3:DeleteObject" |
||
| + | ], |
||
| + | "Resource": [ |
||
| + | "arn:aws:s3:::dqs", |
||
| + | "arn:aws:s3:::dqs/*" |
||
| + | ] |
||
| + | } |
||
| + | ] |
||
| + | } |
||
| + | </PRE> |
||
| + | ===Применение политик=== |
||
| + | Из-под каждого пользователя применить политику |
||
| + | <PRE> |
||
| + | /usr/local/bin/s3cmd -c s3cfg-user-dqs.cfg setpolicy s3policy-dqs.json s3://dqs |
||
| + | s3://dqs/: Policy updated |
||
| + | </PRE> |
||
| + | <PRE> |
||
| + | /usr/local/bin/s3cmd -c s3cfg-user-prod.cfg setpolicy s3policy-prod.json s3://prod |
||
| + | s3://prod/: Policy updated |
||
| + | </PRE> |
||
| + | |||
| + | Просмотреть можно командой |
||
| + | <pre> |
||
| + | /usr/local/bin/s3cmd -c s3cfg-user-prod.cfg info s3://prod |
||
| + | </PRE> |
||
| + | |||
| + | ==Назначение квот== |
||
| + | Назначить квоту в 10 гиг |
||
| + | <PRE> |
||
| + | radosgw-admin quota set --quota-scope=bucket --uid=user-dqs --max-size=10737418240B |
||
| + | radosgw-admin quota set --quota-scope=bucket --uid=user-prod --max-size=10737418240B |
||
| + | </PRE> |
||
| + | |||
| + | <PRE> |
||
| + | radosgw-admin quota enable --quota-scope=bucket --uid=user-dqs |
||
| + | radosgw-admin quota enable --quota-scope=bucket --uid=user-prod |
||
| + | </PRE> |
||
| + | |||
| + | ==Смена ключей== |
||
| + | ===добавить новый ключ=== |
||
| + | <PRE> |
||
| + | radosgw-admin key create --uid=user-dqs --key-type=s3 --secret-key barSecret --access-key fooAccess |
||
| + | </PRE> |
||
| + | <PRE> |
||
| + | { |
||
| + | "user_id": "user-dqs", |
||
| + | "display_name": "user-dqs", |
||
| + | "email": "", |
||
| + | "suspended": 0, |
||
| + | "max_buckets": 1000, |
||
| + | "subusers": [], |
||
| + | "keys": [ |
||
| + | { |
||
| + | "user": "user-dqs", |
||
| + | "access_key": "S7P0CL6BSFQ3ZJNOQZJ0", |
||
| + | "secret_key": "rDaBkRdkZNWgzUUXCeouKu4uabsSyb7XFPWzPOno" |
||
| + | }, |
||
| + | { |
||
| + | "user": "user-dqs", |
||
| + | "access_key": "fooAccess", |
||
| + | "secret_key": "barSecret" |
||
| + | } |
||
| + | ], |
||
| + | ... |
||
| + | </PRE> |
||
| + | ===Удалить старый ключ=== |
||
| + | <PRE> |
||
| + | radosgw-admin key rm --uid=user-dqs --access-key S7P0CL6BSFQ3ZJNOQZJ0 |
||
| + | </PRE> |
||
| + | <PRE> |
||
| + | { |
||
| + | "user_id": "user-dqs", |
||
| + | "display_name": "user-dqs", |
||
| + | "email": "", |
||
| + | "suspended": 0, |
||
| + | "max_buckets": 1000, |
||
| + | "subusers": [], |
||
| + | "keys": [ |
||
| + | { |
||
| + | "user": "user-dqs", |
||
| + | "access_key": "fooAccess", |
||
| + | "secret_key": "barSecret" |
||
| + | } |
||
| + | ], |
||
| + | ... |
||
| + | </PRE> |
||
| + | |||
| + | ==Просмотр существующих бакетов== |
||
| + | Информация о бакете |
||
| + | <PRE> |
||
| + | radosgw-admin bucket stats --bucket tfe-data-ng |
||
| + | </PRE> |
||
| + | Просмотр метаданных (нужен например что бы посмотреть политики) |
||
| + | <PRE> |
||
| + | radosgw-admin metadata list |
||
| + | </PRE> |
||
| + | <PRE> |
||
| + | [ |
||
| + | "bucket", |
||
| + | "bucket.instance", |
||
| + | "otp", |
||
| + | "roles", |
||
| + | "user" |
||
| + | ] |
||
| + | </PRE> |
||
| + | Метаданные по определнному бакету: |
||
| + | <PRE> |
||
| + | radosgw-admin metadata list bucket.instance | grep dqs |
||
| + | "dqs:263ef9b2-40f6-47a0-9bc1-3e21be50c405.528921469.1", |
||
| + | </PRE> |
||
| + | Полные метаданные |
||
| + | <PRE> |
||
| + | radosgw-admin metadata get bucket.instance:dqs:XXXXXXXX-40f6-47a0-9bc1-3e21be50c405.528921469.1 |
||
| + | </PRE> |
||
| + | Пример просмотра политики (назначенной через s3cmd) |
||
| + | <PRE> |
||
| + | radosgw-admin metadata get bucket.instance:dqs:XXXXXXXX-40f6-47a0-9bc1-3e21be50c405.528921469.1 | jq -r '.data.attrs[] | select(.key=="user.rgw.iam-policy") | .val' | base64 -d |
||
| + | </PRE> |
||
| + | <PRE> |
||
| + | { |
||
| + | "Version": "2012-10-17", |
||
| + | "Id": "S3Policy1", |
||
| + | "Statement": [ |
||
| + | { |
||
| + | "Sid": "BucketAllow", |
||
| + | "Effect": "Allow", |
||
| + | "Principal": { |
||
| + | "AWS": [ |
||
| + | "arn:aws:iam:::user/user-1", |
||
| + | "arn:aws:iam:::user/user-2" |
||
| + | ] |
||
| + | }, |
||
| + | "Action": [ |
||
| + | "s3:ListBucket", |
||
| + | "s3:PutObject", |
||
| + | "s3:GetObject", |
||
| + | "s3:DeleteObject" |
||
| + | ], |
||
| + | "Resource": [ |
||
| + | "arn:aws:s3:::dqs", |
||
| + | "arn:aws:s3:::dqs/*" |
||
| + | ] |
||
| + | } |
||
| + | ] |
||
| + | } |
||
| + | </PRE> |
||
| + | |||
| + | =<code>keystone</code>= |
||
| + | решил не использовать так как |
||
| + | * требует перенастройки - добавления параметра <code>rgw keystone implicit tenants: "swift"</code> |
||
| + | * ограничение |
||
| + | <PRE> |
||
| + | Ceph integration does not allow providing permissions for OpenStack users directly. Therefore, you need to set permissions for the project that corresponds to the user. |
||
| + | </PRE> |
||
| + | |||
| + | Можно почитать [https://docs.mirantis.com/mosk/latest/ops/ceph-operations/s3-bucket-policy/openstack-bucket-policy.html#ceph-object-storage-bucket-policy-examples на сайте Мирантиса] |
||
=Ссылки= |
=Ссылки= |
||
| − | https://docs.redhat.com/en/documentation/red_hat_openstack_platform/13/html/users_and_identity_management_guide/quota_management#set_object_storage_quotas_for_a_user |
+ | * https://docs.redhat.com/en/documentation/red_hat_openstack_platform/13/html/users_and_identity_management_guide/quota_management#set_object_storage_quotas_for_a_user |
| + | * https://docs.mirantis.com/mosk/latest/ops/ceph-operations/s3-bucket-policy/openstack-bucket-policy.html#ceph-object-storage-bucket-policy-examples |
||
| + | * https://docs.ceph.com/en/reef/radosgw/s3/bucketops/ |
||
| + | * https://docs.ceph.com/en/latest/radosgw/admin/ |
||
| + | * https://www.ibm.com/docs/en/storage-ceph/7?topic=management-add-remove-access-keys |
||
Текущая версия на 15:05, 12 мая 2025
Openstack S3 Swift
Задача
- создать 2 бакета
- создать 2 пользователя
- настроить права что бы первый пользователь мог работать с 2 бакетами а второй только с одним
Задачу можно решать 2 способами - с использованием пользователей keystone и с использованием пользователей rados
rados
Создать пользователей
radosgw-admin user create --uid user-prod --display-name user-prod
{
"user_id": "user-prod",
"display_name": "user-prod",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"subusers": [],
"keys": [
{
"user": "user-prod",
"access_key": "XXX",
"secret_key": "YYYYYYYYY"
}
],
"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": []
}
Аналогично
radosgw-admin user create --uid user-dqs --display-name user-dqs
Получить из OpenStack endpoint
Получить название региона
openstack region list
+-----------------+---------------+-------------+ | Region | Parent Region | Description | +-----------------+---------------+-------------+ | staging-region | None | | +-----------------+---------------+-------------+
Получить endpoint с учетом региона
openstack \ versions show \ --service object-store \ --status CURRENT \ --interface public \ --region staging-region \ -c Endpoint -f value | sed 's/\/swift\/.*$//' https://staging.domain.tld
Конфигурационные файлы для s3cmd
Для каждого пользователя свой конфигурационный файл соответвенно
s3cfg-user-prod.cfg
[default] access_key = XXX secret_key = YYYYYYYYY host_base = https://staging.domain.tld host_bucket =
access_keyXXX id который вывдится при создании пользователяsecret_keyYYYYYYYYY секрет который вывдится при создании пользователяhost_basehttps://staging.domain.tld - endpoint полученный из OpenStack
s3cfg-user-dqs.cfg
аналогично, за искючением секретов
Создание bucket
/usr/local/bin/s3cmd -c s3cfg-user-prod.cfg mb s3://prod Bucket 's3://prod/' created
/usr/local/bin/s3cmd -c s3cfg-user-dqs.cfg mb s3://dqs Bucket 's3://dqs/' created
Проверка доступности
Каждый пользователь видит только свой бакет
/usr/local/bin/s3cmd -c s3cfg-user-dqs.cfg ls 2025-03-21 13:02 s3://dqs
/usr/local/bin/s3cmd -c s3cfg-user-prod.cfg ls 2025-03-21 12:46 s3://prod
Проверка кому принадлежит бакет
В примере имя бакета tf-data а принадлежит он "owner": "tfuser"
radosgw-admin bucket stats --bucket tf-data
{
"bucket": "tf-data",
"num_shards": 11,
"tenant": "",
"zonegroup": "6824bc11-eca9-4431-ae8c-d2480e1bbd57",
"placement_rule": "default-placement",
"explicit_placement": {
"data_pool": "",
"data_extra_pool": "",
"index_pool": ""
},
"id": "ca82dea1-f8c6-4f23-9afa-c82f08f1d8c1.31654776.1",
"marker": "ca82dea1-f8c6-4f23-9afa-c82f08f1d8c1.31654776.1",
"index_type": "Normal",
"versioned": false,
"versioning_enabled": false,
"object_lock_enabled": false,
"mfa_enabled": false,
"owner": "tfuser",
"ver": "0#1,1#1,2#1,3#1,4#1,5#1,6#1,7#1,8#1,9#1,10#1",
"master_ver": "0#0,1#0,2#0,3#0,4#0,5#0,6#0,7#0,8#0,9#0,10#0",
"mtime": "2025-05-12T11:43:13.540766Z",
"creation_time": "2025-05-12T11:43:13.503812Z",
"max_marker": "0#,1#,2#,3#,4#,5#,6#,7#,8#,9#,10#",
"usage": {},
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
}
}
Policy
Создание политик
Политики похожи но отличаются в части Principal
bucket prod
{
"Version": "2012-10-17",
"Id": "S3Policy1",
"Statement": [
{
"Sid": "BucketAllow",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam:::user/user-prod"
]
},
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::prod",
"arn:aws:s3:::prod/*"
]
}
]
}
bucket dqs
{
"Version": "2012-10-17",
"Id": "S3Policy1",
"Statement": [
{
"Sid": "BucketAllow",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam:::user/user-prod",
"arn:aws:iam:::user/user-dqs"
]
},
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::dqs",
"arn:aws:s3:::dqs/*"
]
}
]
}
Применение политик
Из-под каждого пользователя применить политику
/usr/local/bin/s3cmd -c s3cfg-user-dqs.cfg setpolicy s3policy-dqs.json s3://dqs s3://dqs/: Policy updated
/usr/local/bin/s3cmd -c s3cfg-user-prod.cfg setpolicy s3policy-prod.json s3://prod s3://prod/: Policy updated
Просмотреть можно командой
/usr/local/bin/s3cmd -c s3cfg-user-prod.cfg info s3://prod
Назначение квот
Назначить квоту в 10 гиг
radosgw-admin quota set --quota-scope=bucket --uid=user-dqs --max-size=10737418240B radosgw-admin quota set --quota-scope=bucket --uid=user-prod --max-size=10737418240B
radosgw-admin quota enable --quota-scope=bucket --uid=user-dqs radosgw-admin quota enable --quota-scope=bucket --uid=user-prod
Смена ключей
добавить новый ключ
radosgw-admin key create --uid=user-dqs --key-type=s3 --secret-key barSecret --access-key fooAccess
{
"user_id": "user-dqs",
"display_name": "user-dqs",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"subusers": [],
"keys": [
{
"user": "user-dqs",
"access_key": "S7P0CL6BSFQ3ZJNOQZJ0",
"secret_key": "rDaBkRdkZNWgzUUXCeouKu4uabsSyb7XFPWzPOno"
},
{
"user": "user-dqs",
"access_key": "fooAccess",
"secret_key": "barSecret"
}
],
...
Удалить старый ключ
radosgw-admin key rm --uid=user-dqs --access-key S7P0CL6BSFQ3ZJNOQZJ0
{
"user_id": "user-dqs",
"display_name": "user-dqs",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"subusers": [],
"keys": [
{
"user": "user-dqs",
"access_key": "fooAccess",
"secret_key": "barSecret"
}
],
...
Просмотр существующих бакетов
Информация о бакете
radosgw-admin bucket stats --bucket tfe-data-ng
Просмотр метаданных (нужен например что бы посмотреть политики)
radosgw-admin metadata list
[
"bucket",
"bucket.instance",
"otp",
"roles",
"user"
]
Метаданные по определнному бакету:
radosgw-admin metadata list bucket.instance | grep dqs
"dqs:263ef9b2-40f6-47a0-9bc1-3e21be50c405.528921469.1",
Полные метаданные
radosgw-admin metadata get bucket.instance:dqs:XXXXXXXX-40f6-47a0-9bc1-3e21be50c405.528921469.1
Пример просмотра политики (назначенной через s3cmd)
radosgw-admin metadata get bucket.instance:dqs:XXXXXXXX-40f6-47a0-9bc1-3e21be50c405.528921469.1 | jq -r '.data.attrs[] | select(.key=="user.rgw.iam-policy") | .val' | base64 -d
{
"Version": "2012-10-17",
"Id": "S3Policy1",
"Statement": [
{
"Sid": "BucketAllow",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam:::user/user-1",
"arn:aws:iam:::user/user-2"
]
},
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::dqs",
"arn:aws:s3:::dqs/*"
]
}
]
}
keystone
решил не использовать так как
- требует перенастройки - добавления параметра
rgw keystone implicit tenants: "swift" - ограничение
Ceph integration does not allow providing permissions for OpenStack users directly. Therefore, you need to set permissions for the project that corresponds to the user.
Можно почитать на сайте Мирантиса
Ссылки
- https://docs.redhat.com/en/documentation/red_hat_openstack_platform/13/html/users_and_identity_management_guide/quota_management#set_object_storage_quotas_for_a_user
- https://docs.mirantis.com/mosk/latest/ops/ceph-operations/s3-bucket-policy/openstack-bucket-policy.html#ceph-object-storage-bucket-policy-examples
- https://docs.ceph.com/en/reef/radosgw/s3/bucketops/
- https://docs.ceph.com/en/latest/radosgw/admin/
- https://www.ibm.com/docs/en/storage-ceph/7?topic=management-add-remove-access-keys