AWSSecurityTokenServiceException:访问被拒绝。用户无权执行 sts:AssumeRole

问题描述 投票:0回答:1

我是 AWS 新手。我想为 aws 调用生成临时凭证。为此,我使用使用 IAM 用户临时凭证发出请求 - 适用于 Java 的 AWS 开发工具包

中的示例

我经过的地方

String clientRegion = "<specific region>";
String roleARN = "<ARN from role>";
String roleSessionName = "Just random string"; //<-- maybe I should pass specific SessionName?
String bucketName = "<specific bucket name>";

当尝试扮演角色时

stsClient.assumeRole(roleRequest);

出现错误

com.amazonaws.services.securitytoken.model.AWSSecurityTokenServiceException: 用户:arn:aws:iam:::user/ 无权执行:

sts:AssumeRole on resource: arn:aws:iam::<ID>:role/<ROLE_NAME> (Service: AWSSecurityTokenService; Status Code: 403; Error Code:

访问被拒绝;请求ID:)

我有一个“认知”角色。 我认为问题出在角色信任关系设置上。 看起来像这样: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<iam user ID>:user/<USER_NAME>", "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "<user pool ID>" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }

用户策略

(此用户策略也附加到此角色): { "Version": "2012-10-17", "Statement": [ { "Sid": "<sidId1>", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::<path>*" ] }, { "Sid": "sidId2", "Effect": "Allow", "Action": [ "sts:AssumeRole", "sts:AssumeRoleWithWebIdentity" ], "Resource": [ "arn:aws:iam::<ID>:role/<ROLE_NAME>" ] } ] }

用户政策有两个警告:

我做错了什么?

UPD

我改变了角色信任关系,只需删除条件 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com", "AWS": "arn:aws:iam::<ID>:user/<USER>" }, "Action": [ "sts:AssumeRole", "sts:AssumeRoleWithWebIdentity" ] } ] }

现在
访问被拒绝

另一行代码发生错误: // Verify that assuming the role worked and the permissions are set correctly // by getting a set of object keys from the bucket. ObjectListing objects = s3Client.listObjects(bucketName);

收到错误响应:com.amazonaws.services.s3.model.AmazonS3Exception:访问被拒绝(服务:Amazon S3;状态代码:403;错误代码:AccessDenied;请求 ID:),S3 扩展请求 ID:

amazon-web-services amazon-cognito aws-java-sdk aws-sts
1个回答
0
投票

关于另一个错误,正如 @user818510 所提到的,您的角色没有 s3:ListBucket 操作的权限。

© www.soinside.com 2019 - 2024. All rights reserved.