Шёл 2024-й год. Не прошло и 20 лет спустя появления Amazon S3, как уже можно прямо в браузере ходить по S3!
https://github.com/aws-amplify/amplify-ui/issues/5731
Правда пока альфа-версия, но, глядишь, к юбилею успеют.
Хотя, вроде были варианты. Например, S3Fox:
https://aws.amazon.com/blogs/aws/s3fox_organizer/
Странно, в чём же прикол? Почему AWS потребовалось два десятка лет, чтобы придумать внешне обычный S3 просмотрщик?
Ох. Всё непросто. Дело в том, что у нас теперь новый, правильный S3. Точней, доступ к нему. Вы и не заметили, но это перепридуманный доступ к S3. Причём дважды.
AWS разработчикам пришлось всё переделать и при этом чтобы ничего не изменилось для старого и просто древнего кода.
А что ж так, зачем? Всё просто, две волшебные буквы — AI. В данном случае данные в виде Data Lake. Нужно иметь возможность задавать доступ к огромному количеству источников данных, где старый-привычный подход на базе IAM Roles и S3 Bucket policy не годится из-за ограничений и тупо неудобности.
Так были придуманы S3 Access Grants, которые были анонсированы на re:Invent 2023.
https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants.html
Реально полезное видео с этого реинвента:
https://www.youtube.com/watch?v=Ts-ZMBzGeh0
И AWS Blogs:
Часть 1 https://aws.amazon.com/blogs/storage/how-to-develop-a-user-facing-data-application-with-iam-identity-center-and-s3-access-grants/
Часть 2 https://aws.amazon.com/blogs/storage/how-to-develop-a-user-facing-data-application-with-iam-identity-center-and-s3-access-grants-part-2/
Кратко смысл следующий. Мы создаём S3 грант в аккаунте, с помощью которого юзер сможет получить доступ к S3 бакету или его префиксу. Юзер через условную Okta или MS Entra ID получает доступ с этим грантом через IAM Identity Center. В результате доступом к своим данным, разбросанным по аккаунтам и бакетам централизованно и при желании — извне Амазона.
Итого, что было раньше. Раньше были S3 ACL. Потом S3 Bucket Policy. Затем плюс IAM к ним. После S3 Access Points. И, на радость всем разработчикам AWS курсов, S3 Access Grants.
Важно отметить, что S3 Access Grants — нонче рекомендуемый способ предоставления доступа к данным в S3. Перевожу на понятный — все остальные "нерекомендованные". 😁
Причём тут Storage Browser for S3 вообще?
Да, собственно, вернёмся к теме. Так вот, с этими грантами вышла следующая беда. Нарезать то их можно, а вот "огласить полный список" для юзера — сразу по всем бакетам и префиксам было нельзя. Короче, та же беда, как нельзя ограничить листинг бакетов в аккаунте, чтобы не показывались те, к которым пользователь не имеет доступа.
Помните эту вечную болячку и постоянный вопрос "как сделать листинг только тех бакетов, которые нужно" — никак, листинг
s3:ListAllMyBuckets требует звёздочку в ресурсах.И вот, наконец, ему на замену есть
s3:ListCallerAccessGrants, который был нужен, чтобы реализовать Storage Browser for S3 — нам же нужно вывести всё, доступное пользователю.https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListCallerAccessGrants.html
Итого, с помощью
s3:ListCallerAccessGrants можно получить полный список доступных S3 бакетов и доступных только этому юзеру, где он не увидит имени сразу всех S3 бакетов в аккаунте.Это победа!
P.S. Жаль нет больше в AWS Василия Пантюхина. И эти титанические усилия на стороне AWS остаются не раскрытыми. А тут такая драма, нет, остросюжетный детектив, сериал, что угодно, а видно почти никому. Полезешь копаться, а там и пасхалки, и респауны, и шкафы со скелетами на каждом уровне.
#S3