불행히도, 나는이 작업에 대한 serveral 일 잃었습니다.다른 AWS 계정에서 AWS IAM 역할을 통해 자격 증명을 얻을 수 있습니까?
IAM 역할을 통해 임시 자격 증명을 얻으려면 어떻게해야합니까? 이것이 가능한가? 여기
내 시나리오와 코드입니다. (자바에 AWS SDK)STS AWS 계정 액세스 키에 의해 인스턴스와의 비밀
AWSSecurityTokenService tokenService = new AWSSecurityTokenServiceClient(new BasicAWSCredentials(awsProperty.getAccess(), awsProperty.getSecret()));
이
AssumeRoleRequest assumeRoleRequest = new AssumeRoleRequest(); assumeRoleRequest.setRoleArn(arn); assumeRoleRequest.setDurationSeconds(900); assumeRoleRequest.setRoleSessionName("for_test"); assumeRoleRequest.setExternalId("ext_id");
AssumeRoleRequest하기 SessionCredentials 받기
AssumeRoleResult roleResult = tokenService.assumeRole(assumeRoleRequest); Credentials credentials = roleResult.getCredentials(); AWSCredentials awsCredentials = new BasicSessionCredentials(credentials.getAccessKeyId(), credentials.getSecretAccessKey(), credentials.getSessionToken());
작업은
AmazonCloudFrontClient cloudFrontClient = new AmazonCloudFrontClient(awsCredentials);
는 AWSSecurityTokenServiceException
User: arn:aws:iam::{account}:user/{user_name} is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::{role_account}:role/{role_name} (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied;
가이 같은 정책을 던졌습니다. IAM 역할과 IAM 사용자 모두에게 첨부하십시오.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1490674259000",
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"*"
]
}
]
}
편집 :
내가 (수정) 정책을 테스트 IAM 정책 시뮬레이터. AWS Security Token Service-AssumeRole
을 IAM Role ARN
으로 선택 - 허용됩니다.
다른 AWS 계정에서 역할을 맡고 있습니까? 귀하의 역할에 [신뢰 관계]가 있습니까 (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html)? –
@JohnRotenstein 정말 고마워요! 신뢰 관계를 확인하고 매개 변수를 수정합니다. 그것은 작동합니다! – myoungjin