сделать гранулярный доступ к директориям в бакете.
У aws есть пример ну, чтож сделаем по примеру следующую политику:
[
{
"Sid": "AllowRootListingOfBucket",
"Principal": {
"AWS": [
"arn:aws:iam:::user/s3_test"
]
},
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": [ "arn:aws:s3:::test" ],
"Condition":{
"StringEquals": {
"s3:prefix": ["","artifacts/"],
"s3:delimiter":["/"]
}
}
},
{
"Sid": "List_Artifacts",
"Principal": {
"AWS": [
"arn:aws:iam:::user/s3_test"
]
},
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": [ "arn:aws:s3:::test" ],
"Condition": {
"StringLike": {
"s3:prefix": [ "artifacts/*"]
}
}
},
{
"Sid": "RW_Artifacts",
"Principal": {
"AWS": [
"arn:aws:iam:::user/s3_test"
]
},
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": [
"arn:aws:s3:::test/artifacts/*"
]
}
]
На первый взгляд всё отлично, объекты листятся только в нужной директории и даже удаляются, но при попытке что-то записать ловим 403. Хмм, очевидно клиенту (у меня rclone) не хватает каких то прав? И как выяснилось при записи он делает листинг бакета а вернее не передает префикс "s3:prefix".
Вопрос: Сталкивался кто с таким или есть пример работающей политики?
* убери.
Всяко уже перепробовал. Может есть рабочий пример аналогичной политики?
Это ошибка, там норм с *. Политика есть, но проще, только на get/put в зависимости от useragent.
Дак вот хотелось как раз листинг других директорий отрубить, но кажется такое не реализовать.
Используешь indexless бакет и нет проблем с запретом листинга😁
Радикально, не хочется совсем листинг убить) Кстати приходилось такие бакеты клепать, какая область применения для них?
Обсуждают сегодня