AWS S3 - назначить ограниченное разрешение корзине и создать IAM, который может получить доступ только к этой корзине - PullRequest
0 голосов
/ 18 июня 2019

Я занимаюсь разработкой мобильного приложения и хочу загрузить / получить / удалить файл в корзине AWS S3.

Но меня очень беспокоит проблема безопасности.

S3 Bucket: Оно не должно быть общедоступным, и только авторизованный пользователь IAM может получить доступ, у кого есть разрешение на доступ к моему ведру.

Итак, нужна помощь, чтобы настроить разрешение моей корзины S3 и создать пользователя IAM.

1 Ответ

0 голосов
/ 19 июня 2019

То есть , а не , как вы разрешаете доступ для мобильных приложений.Да, вы можете создать пользователя IAM, сгенерировать ключ доступа и секретный ключ доступа, сохранить эти ключи в коде приложения и настроить права доступа для пользователя IAM.Тогда вам даже не нужно настраивать политику корзины.По умолчанию ведро является частным, и только пользователи IAM в вашей учетной записи могут получить к нему доступ.Если вы разрешите пользователю IAM получить доступ к определенному сегменту S3, вам потребуется настроить явное запрещение политики сегментов для его переопределения.

Но вышеприведенный подход противоречит любой хорошей практике безопасности.Что вы действительно хотите сделать, так это создать роль IAM, которая обеспечивает доступ к корзине, и принять эту роль из приложения.Вы можете настроить Cognito + веб-федерацию (или другого провайдера веб-федерации) для своих пользователей и попросить службу STS сгенерировать недолговечные учетные данные с помощью команды sts:assumeRoleWithWebIdentity.

Что касается разрешений IAM, вам потребуетсяразрешите s3:PutObject, s3:GetObject и s3:DeleteObject, чтобы политика выглядела примерно так:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": "<arn-of-your-bucket>"
        }
    ]
}

Вы можете быть еще более детализированными и разрешить пользователям Cognito получать доступ только к «своей» папке внутриесли вам нужно.

Что касается роли, вам просто нужно присоединить к ней вышеуказанную политику и настроить доверительные отношения между ролью и поставщиком веб-удостоверений (как упоминалось выше, это может быть Cognito или любой OpenID).провайдер).

...