Доступ к API управления тенантом
В данной статье продемонстрирован способ управления тенантом, предварительно созданным в панели управления сервисом. В качестве примера используется утилита curl. Также возможно использовать графические утилиты – например, Postman.
Авторизация
curl -L -u ACCESS_KEY:SECRET_KEY -c cookiefile "https://os.cloud.mts.ru:4443/login?using-cookies"
curl -L -u ACCESS_KEY:SECRET_KEY -c cookiefile "https://avntg.s3mts.ru:4443/login?using-cookies"где ACCESS_KEY и SECRET_KEY – логин и пароль администратора тенанта; пара логин/пароль, которая задается при создании пространства в панели управления.
Logout
curl -b cookiefile "https://os.cloud.mts.ru:4443/logout?using-cookies"Аутентификация по токену
Сервис использует основанную на токенах аутентификацию для выполнения всех последующих после аутентификации вызовов. Чтобы получить токен, выполните:
curl -v -L -u ACCESS_KEY:SECRET_KEY https://s3mts.ru:443/loginгде ACCESS_KEY и SECRET_KEY – логин и пароль администратора тенанта.
Результат выполнения:
…
< HTTP/1.1 200 OK
< Date: Sun, 03 Feb 2019 17:44:32 GMT
< Content-Type: application/xml
< Content-Length: 94
< Connection: keep-alive
< X-SDS-AUTH-TOKEN:
BAAcb25tZ2sycGhBQnN0NWZqNEt1SCtBQVVoK0hjPQMAjAQASHVybjpzdG9yYWdlb3M6VmlydHVhbERhdGFDZW50ZXJEYXRhOjA3MmVjYzg0LWQyYjUtNDQ5ZS1hNWE3LTAyYzc5M2ZiYmEzOQIADTE1NDkxOTUzMDczNjQDAC51cm46VG9rZW46NzRmZTBjNWQtYjU4YS00OWRhLWI3M2QtZGYxNzYxYWViZjIwAgAC0A8=Здесь X-SDS-AUTH-TOKEN содержит необходимый для дальнейшей работы токен. В дальнейшем данный параметр необходимо передавать через опцию -H команды curl:
curl -v -L -u ACCESS_KEY:SECRET_KEY -H "X-SDS-AUTH-TOKEN:токен" …Аутентификация по cookie
curl -v -L -u ACCESS_KEY:SECRET_KEY https://s3mts.ru:443/login?using-cookies=true -с cookiefileгде ACCESS_KEY и SECRET_KEY – логин и пароль администратора тенанта.
Результат выполнения:
…
< HTTP/1.1 200 OK
< Date: Thu, 08 Aug 2019 13:41:06 GMT
< Content-Type: application/xml
< Content-Length: 105
< X-SDS-AUTH-TOKEN:
BAAcTVh5L0hkczdWZ2RQeU51TlhaSXdSdTI0ajh3PQMAjAQASHVybjpzdG9yYWdlb3M6VmlydHVhbERhdGFDZW50ZXJEYXRhOjA3MmVjYzg0LWQyYjUtNDQ5ZS1hNWE3LTAyYzc5M2ZiYmEzOQIADTE1NjUyNjU3MTA1ODgDAC51cm46VG9rZW46YmZiZGJmZDMtMzAzOC00ZThkLTlhYjctYjE4MmZjNDI5ZWQ5AgAC0A8=
< Added cookie X-SDS-AUTH-TOKEN="BAAcTVh5L0hkczdWZ2RQeU51TlhaSXdSdTI0ajh3PQMAjAQASHVybjpzdG9yYWdlb3M6VmlydHVhbERhdGFDZW50ZXJEYXRhOjA3MmVjYzg0LWQyYjUtNDQ5ZS1hNWE3LTAyYzc5M2ZiYmEzOQIADTE1NjUyNjU3MTA1ODgDAC51cm46VG9rZW46YmZiZGJmZDMtMzAzOC00ZThkLTlhYjctYjE4MmZjNDI5ZWQ5AgAC0A8=" for domain http://s3mts.ru, path /, expire 1565300871
< Set-Cookie: X-SDS-AUTH-TOKEN**\=BAAcTVh5L0hkczdWZ2RQeU51TlhaSXdSdTI0ajh3PQMAjAQASHVybjpzdG9yYWdlb3M6VmlydHVhbERhdGFDZW50ZXJEYXRhOjA3MmVjYzg0LWQyYjUtNDQ5ZS1hNWE3LTAyYzc5M2ZiYmEzOQIADTE1NjUyNjU3MTA1ODgDAC51cm46VG9rZW46YmZiZGJmZDMtMzAzOC00ZThkLTlhYjctYjE4MmZjNDI5ZWQ5AgAC0A8=;Version=1;Max-Age=28800;SecureИспользование файла cookie
curl -v -L -u ACCESS_KEY:SECRET_KEY -b cookiefile …где ACCESS_KEY и SECRET_KEY – логин и пароль администратора тенанта.
Биллинг
Предварительно авторизуйтесь при помощи вызова:
shcurl -L -u ACCESS_KEY:SECRET_KEY -c cookiefile "https://avntg.s3mts.ru:4443/login?using-cookies"где
ACCESS_KEYиSECRET_KEY– логин и пароль администратора тенанта.Далее, используйте вызов:
shcurl -b cookiefile -L -H x-emc-namespace:NAMESPACE https://avntg.s3mts.ru:4443/object/billing/namespace/NAMESPACE/infoгде вместо
NAMESPACEукажите необходимый неймспейс.
Для вывода квоты на namespace и сопутствующей информации используйте:
curl -L -X GET -b cookiefile "https://avntg.s3mts.ru:4443/object/namespaces"В результате выполнения запроса размер квоты вернется в виде: <blockSize>325000</blockSize>.
Создание пользователя в Namespace
Для создания пользователя авторизуйтесь, используя вызов:
shcurl -L -u ACCESS_KEY:SECRET_KEY -c cookiefile "https://avntg.s3mts.ru:4443/login?using-cookies"где
ACCESS_KEYиSECRET_KEY– логин и пароль администратора тенанта.Чтобы создать пользователя, используйте вызов:
shcurl -b cookiefile -X POST -d @data.json -H "Content-Type: application/json" https://avntg.s3mts.ru:4443/object/usersпредварительно создав файл
data.json, в котором указан namespace и имя создаваемого пользователя:json{ "namespace": "testnamespace", "user": "testuseraccesskey" }
Генерация Secret-Key для созданного пользователя
Чтобы сгенерировать
SECRET_KEYдля созданного пользователя, используйте вызов:shcurl -b cookiefile -X POST -d @user.json -H "Content-Type: application/json" https://avntg.s3mts.ru:4443/object/user-secret-keys/testuseraccesskey.jsonДля просмотра результата выполните
cat data.json:json{ "existing_key_expiry_time_mins": "0" , "namespace": "testnamespace" }Также можно задать
SECRET_KEYвручную в файле "user.json" используя следующий формат:json{ "existing_key_expiry_time_mins": "0" , "namespace": "testnamespace" "secretkey": "11testsecterkey51OL2fyoHjPp8xL2y3TR6JUtI6hK2" }Для просмотра
SECRET_KEYиспользуйте вызов:shcurl -b cookiefile -X GET https://avntg.s3mts.ru:4443/object/user-secret-keys/testuseraccesskey
Получение Secret-Key от объектного пользователя
Для вывода
SECRET_KEYот объектного пользователя используйте вызов:shcurl -b cookiefile -X GET https://avntg.s3mts.ru:4443/object/user-secret-keys/{uid}Для вывода только
SECRET_KEYиспользуйте вызов:shcurl -b cookiefile -X GET https://avntg.s3mts.ru:4443/object/user-secret-keys/{uid} 2>&1| grep -oP "(?<=<secret_key_1>).*?(?=</secret_key_1>)"
Создание Management User
Чтобы создать Management User, используйте вызов:
curl -b cookiefile -X POST -H "Content-Type: application/json" https://avntg.s3mts.ru:4443/vdc/users.json -d '{"userId": "1sampleuser", "password": "samplepassword", "isSystemAdmin": "false", "isSystemMonitor": "false"}'Удаление незавершенных загрузок
Проблема с занятыми бакетами — при этом отображается, что бакеты пустые — возникает из-за незавершенных загрузок (incomplete MPU).
Для удаления незавершенных загрузок в "S3Browser" перейдите в Buckets > Bucket Lifecycle Rules и отредактируйте правило.

Завершение работы с тенантом
Для завершения сессии работы с объектным хранилищем используйте следующий вызов:
curl -v -L https://s3mts.ru:443/logout -H "X-SDS-AUTH-TOKEN: BAAcb25tZ2sycGhBQnN0NWZqNEt1SCtBQVVoK0hjPQMAjAQASHVybjpzdG9yYWdlb3M6VmlydHVhbERhdGFDZW50ZXJEYXRhOjA3MmVjYzg0LWQyYjUtNDQ5ZS1hNWE3LTAyYzc5M2ZiYmEzOQIADTE1NDkxOTUzMDczNjQDAC51cm46VG9rZW46NzRmZTBjNWQtYjU4YS00OWRhLWI3M2QtZGYxNzYxYWViZjIwAgAC0A8=" | xmllint --format –Результат выполнения:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LoggedOut>
<user>admin</user>
</LoggedOut>Список доступных вызовов
Вызовы, доступные администратору тенанта:
Вызовы для работы с бакетами:
/object/bucket– создание и управление бакетами/object/bucket/{bucketName}/lock– блокировка доступа к бакету/object/bucket/{bucketName}/tags– добавление меток к указанному бакету/object/bucket/{bucketName}/retention– установка срока жизни для указанного бакета/object/bucket/{bucketName}/quota– установка квоты на бакет/object/bucket/{bucketName}/policy– установка политики для бакета/object/bucket/{bucketName}/metadata– добавление метаданных к бакету
Вызовы для работы с ключами:
/object/user-secret-keys– назначение ключей доступа пользователям, управление ключами
Вызовы для работы с пользователями:
/object/users– создание и управление пользователями тенанта/object/users/lock- блокировка пользователей тенанта/object/users/{userName}/tags– добавление меток к пользователям тенанта
Список вызовов может быть расширен в ходе развития сервиса "Объектное хранилище S3".
Документация
Примечание
Если ресурс по ссылке недоступен, используйте подключение к VPN-сервису.