AWS S3 бакет – Разрешить скачивание файлов для всех IAM и пользователей из конкретной учетной записи AWS

Вопрос или проблема

Ищите политику для S3 bucket, которая позволит всем IAM ролям и пользователям из разных аккаунтов загружать файлы из bucket, который находится в моем аккаунте AWS.

Спасибо за помощь

{
   "Версия": "2012-10-17",
   "Заявление": [
      {
         "Sid": "Пример разрешений",
         "Эффект": "Разрешить",
         "Главный": {
            "AWS": "arn:aws:iam::AccountB-ID:root"
         },
         "Действие": [
            "s3:GetBucketLocation",
            "s3:ListBucket"
         ],
         "Ресурс": [
            "arn:aws:s3:::awsexamplebucket1"
         ]
      }
   ]
}

Прямо из документации.

.

Ответ или решение

Для того чтобы обеспечить возможность загрузки файлов из вашего S3 бакета для всех IAM-ролей и пользователей из определенного AWS аккаунта, вам необходимо настроить правильную политику на уровне бакета S3. Рассмотрим ключевые аспекты создания такой политики.

Архитектура решения

Вам нужно будет создать политику доступа, позволяющую пользователям из другого AWS аккаунта скачивать файлы из вашего S3 бакета. Эта политика будет интегрирована с IAM ролями и пользователями, обеспечивая необходимый доступ без излишних ограничений.

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

Вот пример IAM политики, которая позволяет всем IAM-ролям и пользователям из другого аккаунта загружать файлы из вашего S3 бакета. Политика также включает доступ к информации о местоположении бакета и возможность перечисления объектов в бакете.

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "AllowCrossAccountS3Access",
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::AccountB-ID:root"
         },
         "Action": [
            "s3:GetObject",
            "s3:ListBucket"
         ],
         "Resource": [
            "arn:aws:s3:::awsexamplebucket1",
            "arn:aws:s3:::awsexamplebucket1/*"
         ]
      }
   ]
}

Объяснение параметров

  • Version: Версия политики. Используйте версию 2012-10-17, так как она является последней и самой актуальной.
  • Statement: Основной блок, где задаются разрешения.
    • Sid: Идентификатор блока политики, его можно использовать для управления и понимания функций этой части.
    • Effect: Указывает, что действие разрешено (Allow).
    • Principal: Определяет, кто имеет доступ. Здесь указано корневое учётное имя другого аккаунта (arn:aws:iam::AccountB-ID:root).
    • Action: Действия, разрешенные для выполнения. В данном случае это s3:GetObject для загрузки файлов и s3:ListBucket для получения информации о содержимом бакета.
    • Resource: Указывает, на какие ресурсы распространяется политика. Здесь вы указываете как сам бакет, так и все объекты в нем, добавляя /* после имени бакета.

Настройка IAM-пользователей и ролей

Убедитесь, что IAM-пользователи или роли в аккаунте B имеют настройку, завершение которой будет включать соответствующий доступ к бакету. Если доступ к бакету будет необходим в рамках каких-либо других операций, добавьте соответствующие действия в политику.

Внедрение политики

Для применения политики:

  1. Откройте AWS Management Console.
  2. Перейдите к сервису S3 и выберите нужный бакет.
  3. Перейдите в раздел "Permissions" (Разрешения).
  4. Выберите "Bucket Policy" (Политика бакета) и вставьте вашу политику.
  5. Сохраните изменения.

Заключение

Следуя данным рекомендациям и используя предоставленный пример политики, вы сможете настроить S3 бакет так, чтобы все IAM роли и пользователи из определенного AWS аккаунта могли загружать файлы. Убедитесь, что новые настройки не нарушают безопасность и конфиденциальность вашего контента, и проводите регулярные проверки политик доступа для поддержания высокого уровня безопасности.

Оцените материал
Добавить комментарий

Капча загружается...