OpenStack S3 Swift: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) (→Ссылки) |
Sirmax (обсуждение | вклад) |
||
| Строка 2: | Строка 2: | ||
[[Категория:S3]] |
[[Категория:S3]] |
||
[[Категория:swift]] |
[[Категория:swift]] |
||
| + | [[Категория: ceph]] |
||
=Openstack S3 Swift= |
=Openstack S3 Swift= |
||
Задача |
Задача |
||
Версия 15:16, 25 марта 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
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
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