Разверните OpenClaw в облаке в один клик
Вход/ Регистрация
На главную
Облачные сервисы

Кастомные роли пользователей

Кастомные роли позволяют гибко настроить права дополнительного пользователя S3, если стандартных уровней доступа недостаточно.

В панели управления S3 доступны готовые уровни доступа: «Чтение», «Чтение и запись», «Управление» и «Нет доступа». Это пресеты для популярных сценариев, которые помогают быстро выдать типовые права. Если нужен более точный набор разрешений, его можно настроить через API: например, разрешить пользователю работать только с отдельными префиксами, объектами или действиями.

Например, с помощью кастомной роли можно выдать пользователю доступ только к нужной части бакета и разрешить только те действия, которые требуются для его задачи: чтение, загрузку, удаление или работу с версиями объектов.

Такая настройка выполняется через IAM-совместимую политику пользователя. Политика применяется к конкретному дополнительному пользователю и не меняет права остальных пользователей бакета.

Кастомная роль не заменяет политики бакета. Политика бакета задает правила доступа на уровне бакета, а кастомная роль ограничивает действия конкретного пользователя.

Предварительная подготовка

Перед настройкой кастомной роли:

  1. Создайте дополнительного пользователя S3.

  2. Установите и настройте AWS CLI.

  3. Подготовьте реквизиты основного пользователя S3 или пользователя с правами на управление политиками.

При создании дополнительного пользователя в панели управления можно не выдавать ему доступ к нужному бакету и не назначать разрешения. Необходимые права будут настроены ниже с помощью пользовательской политики.

В бакете заранее создайте папки, для которых будут настроены разные права:

  • public/ — для файлов, которые пользователь сможет только читать;

  • uploads/ — для файлов, которые пользователь сможет читать и загружать;

  • reports/ — для файлов, которые пользователь сможет читать, загружать и удалять.

В S3 папки являются префиксами в именах объектов. 

Создание политики

Создайте файл user-prefix-policy.json:

    
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListWholeBucket", "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::<имя_бакета>"] }, { "Sid": "ReadPublicPrefix", "Effect": "Allow", "Action": ["s3:GetObject", "s3:GetObjectVersion"], "Resource": ["arn:aws:s3:::<имя_бакета>/public/*"] }, { "Sid": "UploadToUploadsPrefix", "Effect": "Allow", "Action": ["s3:GetObject", "s3:GetObjectVersion", "s3:PutObject"], "Resource": ["arn:aws:s3:::<имя_бакета>/uploads/*"] }, { "Sid": "ManageReportsPrefix", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:PutObject", "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": ["arn:aws:s3:::<имя_бакета>/reports/*"] } ] }

Вместо <имя_бакета> укажите имя вашего бакета.

Другие действия для поля Action можно подобрать по списку поддерживаемых методов для работы с объектами.

Права на объекты задаются через ARN вида:

    
arn:aws:s3:::<имя_бакета>/<префикс>/*

Для просмотра списка объектов используется отдельное действие s3:ListBucket. Оно применяется к ARN бакета без префикса:

    
arn:aws:s3:::<имя_бакета>

В примере s3:ListBucket разрешен для всего бакета. Это значит, что пользователь сможет видеть список объектов в бакете, но выполнять действия с объектами сможет только в разрешенных префиксах.

Применение политики

Примените политику к дополнительному пользователю:

    
aws iam put-user-policy \ --user-name <имя_пользователя> \ --policy-name user-prefix-policy \ --policy-document file://user-prefix-policy.json \ --endpoint-url https://s3.twcstorage.ru \ --region ru-1

После выполнения команды политика будет привязана к пользователю.

Если нужно изменить права, отредактируйте файл user-prefix-policy.json и повторно выполните команду put-user-policy с тем же именем политики. Новая версия политики заменит предыдущую.

Проверка доступа

Чтобы проверить права, настройте отдельный профиль AWS CLI с реквизитами дополнительного пользователя:

    
aws configure --profile s3-limited-user

Укажите S3 Access Key, S3 Secret Key, регион ru-1 и формат вывода json.

Проверьте, что пользователь может посмотреть список объектов:

    
aws s3 ls s3://<имя_бакета> \ --profile s3-limited-user \ --endpoint-url https://s3.twcstorage.ru

Проверьте загрузку в разрешенный префикс:

    
aws s3 cp test.txt s3://<имя_бакета>/uploads/test.txt \ --profile s3-limited-user \ --endpoint-url https://s3.twcstorage.ru

Проверьте действие, которое не входит в политику. Например, пользователь не должен удалять файлы из префикса uploads/:

    
aws s3 rm s3://<имя_бакета>/uploads/test.txt \ --profile s3-limited-user \ --endpoint-url https://s3.twcstorage.ru

Если политика применена корректно, команда завершится ошибкой доступа.

Удаление политики

Чтобы удалить кастомную роль у пользователя, выполните команду:

    
aws iam delete-user-policy \ --user-name <имя_пользователя> \ --policy-name user-prefix-policy \ --endpoint-url https://s3.twcstorage.ru \ --region ru-1

После удаления политики у пользователя останутся только права, заданные для него в панели управления S3.

Была ли статья полезна?
Ваш ответ поможет улучшить документацию
Пока нет комментариев