ЕКС: ACL сегмента лише для читання для користувача, який не є власником об'єкта, не може завантажити завантажені об'єкти
摘要: Ця база знань пояснює концепцію списків контролю доступу (ACL) для користувача, який не є власником об'єкта, з точки зору лише читання в браузері S3.
症狀
Користувача об'єкта, який не є власником, було додано до сегмента лише для читання за допомогою списку керування доступом (ACL).
Користувач об'єкта, який не є власником сегмента, не може завантажувати об'єкти, які були завантажені користувачем власника сегмента об'єкта до створення сегмента ACL.
Перебіг проблеми полягає в наступному:
- Сегмент було створено з призначенням власника об'єкта користувача.
- Деякі файли були завантажені в сегмент користувачем-власником об'єкта.
- Користувача об'єкта, який не є власником, було додано до сегмента лише для читання за допомогою списку керування доступом (ACL).
- Намагаючись отримати доступ до сегмента, користувач об'єкта, який не є власником, може відображати та завантажувати нові завантажені об'єкти, але не може завантажувати об'єкти, завантажені до використання в сегменті ACL, доступного лише для читання. Ми бачимо, що права користувачів на об'єкти не встановлюються через S3 Browser відповідно до конфігурації в інтерфейсі ECS.
Помилка, коли користувач об'єкта, який не є власником, натискає на об'єкт за допомогою браузера S3, виглядає наступним чином: (Доступ заборонено: Доступ заборонено):
Нижче наведено налаштування ACL сегмента для користувача власника об'єкта (a_s3user) та користувача об'єкта, який не є власником (a_s3test):
原因
Дозволи S3 можна встановити на рівні сегмента або об'єкта. ECS дотримується тих самих принципів, що й AWS S3 - залежно від типу застосовуваної політики. Він визначає тип операцій, які будуть дозволені на рівні Bucket або Object.
- Коли READ і READ ACL надаються на рівні сегмента ECS, власник nonbucket буде лише перераховувати об'єкти в сегменті, а non власник не може завантажувати дані з сегмента
- Під час запису об'єкта в сегмент дозвіл на читання має лише користувач, який записує об'єкт. Для того, щоб інші користувачі могли прочитати об'єкти, власник повинен явно надати дозвіл користувачам.
- Щоб надавати дозвіл власникам, які не є користувачами сегмента, ми маємо використовувати правила сегмента S3
Дозволи ACL, які можна призначити, наведено в наступній таблиці. Відповідні дозволи залежать від типу сегмента.
| ACL | Дозволу | ||
|---|---|---|---|
| Читати | Дозволяє користувачу перераховувати об'єкти в сегменті | ||
| Читати ACL | Дозволяє користувачеві зчитувати ACL сегмента | ||
| Написати | Дозволяє користувачу створювати або оновлювати будь-який об'єкт у сегменті | ||
| Напишіть ACL. | Дозволяє користувачу записувати ACL для сегмента | ||
| Виконати | Встановлює дозвіл на виконання при зверненні як до файлової системи - Цей дозвіл не має сили, коли доступ до об'єкта здійснюється за допомогою протоколів об'єктів ECS. | ||
| Повний контроль | Дозволяє користувачеві читати, записувати, читати ACL і записувати ACL.
|
||
| Привілейоване письмо | Дозволяє користувачу виконувати запис у сегмент або об'єкт, якщо користувач не має звичайного дозволу на запис - Обов'язковий для сегментів CAS | ||
| Видалити | Дозволяє користувачу видаляти сегменти та об'єкти - обов'язковий для сегментів CAS | ||
| Ніхто | Користувач не має привілеїв на сегменті. |
AWS підтримує кілька типів політик.
- Списки контролю доступу (ACL)
- Політики на основі ідентифікації
- Межі дозволів
- Ресурсно-орієнтовані політики
У наведеній нижче таблиці наведено набір дозволів, які Amazon S3 підтримує в ACL. Набір прав доступу ACL однаковий для об'єкта ACL та сегмента ACL. Однак, залежно від контексту (ACL сегмента або ACL об'єкта), ці дозволи ACL надають дозволи для конкретних сегментів або операцій з об'єктами. У таблиці перераховані дозволи та описано, що вони означають у контексті об'єктів і сегментів.
| Дозволу | Коли дають на відро | При наданні на об'єкт |
|---|---|---|
READ |
Дозволяє грантоотримувачу перераховувати об'єкти у відрі | Дозволяє грантоотримувачу зчитувати дані об'єкта та його метадані |
WRITE |
Дозволяє грантоотримувачу створювати, перезаписувати та видаляти будь-який об'єкт у сегменті | Не застосовується |
READ_ACP |
Дозволяє грантоотримувачу читати відро ACL | Дозволяє грантоотримувачу читати об'єкт ACL |
WRITE_ACP |
Дозволяє грантоотримувачу записувати ACL для відповідного сегмента | Дозволяє грантоотримувачу записати ACL для відповідного об'єкта |
FULL_CONTROL |
Дозволяє отримувачу отримувати дозволи на читання, запис, 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>-> Редагувати політику сегмента, додайте щось подібне до цього в редактор політик:
{
"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