Существует несколько шагов, которые необходимо предпринять для достижения этой цели.
Сначала необходимо создать соответствующую роль IAM, которую вы позволите своим пользователям выполнять.Если вы хотите предоставить S3-доступ своим пользователям, вам нужно настроить роль IAM таким образом и установить доверительные отношения между этой ролью и WebIdentity
(если вы идете в консоль -> IAM -> Роли -> Создать роль,вы увидите эту опцию в верхней части экрана - Select type of trusted entity
и настройте провайдера на основе вашего фактического провайдера OIDC.
Как только вы получите эту роль, вам нужно будет обменять токен WebIdentity, которым вы в настоящее время обладаетеSTS токен.В вашем случае вам нужно будет вызвать функцию sts.assume_role_with_web_identity
(которая является частью SDK), где вам нужно будет указать
RoleArn
- арн выше созданной роли, которая будет считатьсявашими пользователями RoleSessionName
- имя пользователя сеанса (может быть произвольной строкой) WebIdentityToken
- токен, совместимый с OIDC (тот, который у вас есть) Duration
- как долго возвращенные учетные данные будут действительны
После совершения вызова вы получите ответ, содержащий:
'Credentials': {
'AccessKeyId': 'string',
'SecretAccessKey': 'string',
'SessionToken': 'string',
'Expiration': datetime(2015, 1, 1)
},
...
Важными частями являются AccessKeyId
SecretAccessKey
и SessionToken
.Эти временные учетные данные можно использовать для прямого вызова S3, Lambda или любой другой службы AWS из вашего кода, но вам потребуется настроить SDK, который вы используете в настоящее время, для их включения.После того, как все это сделано, вы должны хорошо идти без проблем.