Мне нужно сгенерировать токены только для чтения и записать только токены для файла в S3.
Что я пробовал до сих пор:
- создать роль IAM с доступом для чтения и записи в указанную корзину
- создать клиента STS
- предположим, что роль IAM была создана на шаге 1 клиентом STS.
- сгенерировать учетные данные с помощью клиента sts
Что это значит
- позволяет пользователю получить доступ к файлу в S3 с токеном
- но этот доступ не ограничивается только чтением или только записью
- также, если у роли IAM есть доступ к большему количеству сегментов, токен будет обращаться ко всем сегментам.
Создать клиента STS
AWSSecurityTokenServiceClient sts_client = (AWSSecurityTokenServiceClient) AWSSecurityTokenServiceClientBuilder.standard()
.withRegion(Regions.DEFAULT_REGION).build();
Создать запрос на роль
AssumeRoleRequest assumeRoleRequest = new AssumeRoleRequest()
.withRoleArn("arn:aws:iam::123456789123:role/iam-role-name")
.withDurationSeconds(7200)
.withRoleSessionName("session-role-"+System.currentTimeMillis());
Создать запрос токена
GetSessionTokenRequest session_token_request = new GetSessionTokenRequest();
Создать токены
GetSessionTokenResult session_token_result = sts_client.getSessionToken(session_token_request);
Создать учетные данные
Credentials session_creds = session_token_result.getCredentials();
Создайте базовые учетные данные
BasicSessionCredentials sessionCredentials = new BasicSessionCredentials(
session_creds.getAccessKeyId(),
session_creds.getSecretAccessKey(),
session_creds.getSessionToken());
ожидание
- иметь возможность генерировать токены только для чтения и только для записи
- иметь возможность генерировать токены для конкретных путей
- токен должен быть ограничен только указанным ресурсом, а не всеми сегментами, прикрепленными к роли IAM