То есть , а не , как вы разрешаете доступ для мобильных приложений.Да, вы можете создать пользователя 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).провайдер).