ECS. Доступный только для чтения ACL контейнера для пользователя, не являющегося владельцем объекта, не может скачать загруженные объекты
摘要: В этой базе знаний описывается концепция списков контроля доступа к контейнерам (ACL) для пользователя, не являющегося владельцем, с точки зрения доступности только для чтения в S3 Browser. ...
症狀
Пользователь, не являющийся владельцем, был добавлен в контейнер с доступом только для чтения с помощью списка контроля доступа контейнера.
Пользователь, не являющийся владельцем контейнера, не может скачивать объекты, загруженные пользователем, владеющим контейнером объекта, до создания списка контроля доступа контейнера.
Последовательность задач выглядит следующим образом:
- Контейнер был создан с назначенным пользователем владельцем объекта.
- Некоторые файлы были загружены в контейнер пользователем-владельцем объекта.
- Пользователь, не являющийся владельцем, был добавлен в контейнер с доступом только для чтения с помощью списка контроля доступа контейнера.
- При попытке получить доступ к контейнеру пользователь, не являющийся владельцем, может вывести список вновь загруженных объектов и скачать их, но не может скачивать объекты, загруженные до списка контроля доступа для контейнера только для чтения. Мы видим, что права пользователей на объекты не установлены в браузере S3 в соответствии с конфигурацией в пользовательском интерфейсе ECS.
Ошибка, возникающая при щелчке по объекту, не являющемуся владельцем, с помощью браузера S3 выглядит следующим образом: (Отказано в доступе: Доступ запрещен):
Ниже приведена настройка списка контроля доступа контейнера для пользователя-владельца объекта (a_s3user) и пользователя-невладельца объекта (a_s3test).
原因
Разрешения S3 можно задать на уровне контейнера или объекта. ECS придерживается тех же принципов, что и AWS S3, в зависимости от типа применяемой политики. Он определяет тип операций, которые будут разрешены на уровне контейнера или объекта.
- Если ACL чтения и чтения предоставлены на уровне контейнера ECS, список объектов в контейнере будет предоставлен лицом, не являющимся владельцем контейнера, а пользователь, не являющийся владельцем контейнера, не сможет скачивать данные из контейнера
- При записи объекта в контейнер разрешение на чтение имеет только пользователь, который записывает объект. Для того, чтобы другие пользователи могли читать объекты, владелец должен явно предоставить разрешение пользователям.
- Чтобы предоставить разрешение владельцам, не являющимся владельцами контейнеров, необходимо использовать политики корзины S3
Разрешения ACL, которые можно назначить, приведены в следующей таблице. Применимые разрешения зависят от типа контейнера.
| ACL | Разрешение | ||
|---|---|---|---|
| Чтение | Позволяет пользователю получить список объектов в контейнере | ||
| Чтение ACL | Позволяет пользователю читать ACL контейнера | ||
| Запись | Позволяет пользователю создавать или обновлять любые объекты в контейнере | ||
| Запишите список контроля доступа. | Позволяет пользователю записать список контроля доступа для контейнера. | ||
| Выполнить | Задает разрешение на выполнение при доступе к файловой системе. Это разрешение не действует при доступе к объекту с использованием протоколов объектов ECS. | ||
| Полный контроль | Позволяет пользователю считывать и записывать данные в контейнер, считывать списки ACL и делать в них новые записи.
|
||
| Привилегированная запись | Позволяет пользователю выполнять запись в контейнер или объект, если у него нет обычного разрешения на запись — требуется для контейнеров CAS | ||
| Удаление | Позволяет пользователю удалять контейнеры и объекты — обязательно для контейнеров CAS | ||
| None | У пользователя нет прав для контейнера. |
AWS поддерживает несколько типов политик.
- Списки управления доступом (ACL)
- Политики на основе идентификации
- Границы разрешений
- Политики на основе ресурсов
В следующей таблице приведен набор разрешений, поддерживаемых Amazon S3 в списке контроля доступа. Набор разрешений ACL одинаков для ACL объекта и ACL контейнера. Однако в зависимости от контекста (ACL контейнера или списка контроля доступа объекта) эти разрешения ACL предоставляют разрешения для определенных контейнеров или операций с объектами. В таблице перечислены разрешения и описано, что они означают в контексте объектов и контейнеров.
| Разрешение | При предоставлении для контейнера | При предоставлении объекта |
|---|---|---|
READ |
Позволяет получателю прав получать список объектов в контейнере | Позволяет получателю гранта считывать данные объекта и его метаданные |
WRITE |
Позволяет получателю прав создавать, перезаписывать и удалять любые объекты в контейнере | Неприменимо |
READ_ACP |
Позволяет получателю прав считывать ACL контейнера | Позволяет получателю прав читать список контроля доступа объекта |
WRITE_ACP |
Позволяет получателю прав записывать список контроля доступа для соответствующего контейнера. | Позволяет получателю прав записать список контроля доступа для соответствующего объекта |
FULL_CONTROL |
Предоставляет получателю прав разрешения READ, WRITE, READ_ACP и WRITE_ACP для контейнера | Предоставляет получателю прав READ, READ_ACP и WRITE_ACP для объекта |
Документация по Amazon S3
В следующей таблице показано, как каждое разрешение ACL сопоставляется с соответствующими разрешениями политики доступа. Как видите, политика доступа предоставляет больше разрешений, чем ACL. Списки ACL используются в основном для предоставления базовых разрешений на чтение и запись, аналогичных разрешениям файловой системы. Дополнительные сведения о том, когда следует использовать список контроля доступа, см. в разделе Рекомендации по использованию доступных параметров политики доступа.
| Разрешение ACL | Соответствующие разрешения политики доступа, когда для контейнера предоставлено разрешение ACL | Соответствующие разрешения политики доступа, когда для объекта предоставлено разрешение ACL |
|---|---|---|
READ |
s3:ListBucket, s3:ListBucketVersionsи s3:ListBucketMultipartUploads |
s3:GetObject, s3:GetObjectVersionи s3:GetObjectTorrent |
WRITE |
Кроме того, если получатель прав является владельцем контейнера, предоставление |
Неприменимо |
READ_ACP |
s3:GetBucketAcl |
s3:GetObjectAcl и s3:GetObjectVersionAcl |
WRITE_ACP |
s3:PutBucketAcl |
s3:PutObjectAcl и s3:PutObjectVersionAcl |
FULL_CONTROL |
Эквивалентно предоставлению READ, WRITE, READ_ACPи WRITE_ACP Разрешения ACL — таким образом, это разрешение ACL сопоставляется с сочетанием соответствующих разрешений политики доступа. |
Эквивалентно предоставлению READ, READ_ACPи WRITE_ACP Разрешения ACL. Таким образом, это разрешение ACL сопоставляется с комбинацией соответствующих разрешений политики доступа. |
解析度
Вариант 1:
См. руководство по доступу к данным ECS, чтобы узнать, как использовать политики контейнеров. В отличие от списков контроля доступа, которые либо разрешают все действия, либо не разрешают ни одного, политики доступа предоставляют конкретным пользователям или всем пользователям условные и детализированные разрешения на определенные действия. Условия политики можно использовать для назначения разрешений для ряда объектов, соответствующих условию. Его можно использовать для автоматического назначения разрешений новым загруженным объектам.
Справка по AWS S3:
https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html
https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html
https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations.htmlВ разделе UI-Manage-Bucket>>-> Edit bucket policy введите в редакторе политик что-то похожее на это:
{
"Version": "2012-10-17",
"Id": "Policy1593674317613",
"Statement": [
{
"Action": [
"s3:GetObject"
],
"Resource": "bucket_name/*",
"Effect": "Allow",
"Principal": "read-only_user",
"Sid": "Stmt1593673962638"
}
]
}Где: «S3:GetObject» — это действие, которому будет разрешено скачивать объекты.
Где: "Разрешить"
где ресурс": «bucket_name/*» — имя контейнера.
Где Принципал": «read-only_user» — пользователь, не являющийся владельцем контейнера.
Вариант 2:
Используя браузер S3 с владельцем объекта, измените разрешения для аутентифицированных пользователей для объектов, загруженных перед ACL контейнера только для чтения, чтобы пользователь, не являющийся владельцем, мог скачать объект:
其他資訊
Если возникают проблемы с загрузкой объекта через владельца объекта и разрешения не применяются к аутентифицированным пользователям, имеющим доступ на запись, см. статью базы знаний 520711