要实现AWS STS凭证访问权限跨账户的解决方法,可以使用以下步骤:
步骤1:设置源账户的IAM策略 在源账户中,创建一个IAM策略,允许STS AssumeRole操作。下面是一个示例策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::目标账户ID:role/目标角色名称"
}
]
}
步骤2:创建源账户的IAM角色 在源账户中,创建一个IAM角色,并将步骤1中创建的策略附加到该角色上。
步骤3:设置目标账户的IAM策略 在目标账户中,创建一个IAM策略,允许需要访问目标资源的操作。下面是一个示例策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
步骤4:创建目标账户的IAM角色 在目标账户中,创建一个IAM角色,并将步骤3中创建的策略附加到该角色上。
步骤5:在源账户中创建STS凭证 在源账户中,使用AWS SDK或AWS CLI创建STS凭证,指定目标账户的角色ARN作为要扮演的角色。下面是一个使用AWS CLI的示例命令:
aws sts assume-role --role-arn "arn:aws:iam::目标账户ID:role/目标角色名称" --role-session-name "mySession"
步骤6:使用STS凭证访问目标资源 使用步骤5中创建的STS凭证,可以在源账户上执行需要访问目标资源的操作。下面是一个使用AWS SDK(Python)的示例代码:
import boto3
sts_client = boto3.client('sts')
response = sts_client.assume_role(
RoleArn='arn:aws:iam::目标账户ID:role/目标角色名称',
RoleSessionName='mySession'
)
# 使用response中返回的临时凭证访问目标资源
s3_client = boto3.client('s3',
aws_access_key_id=response['Credentials']['AccessKeyId'],
aws_secret_access_key=response['Credentials']['SecretAccessKey'],
aws_session_token=response['Credentials']['SessionToken']
)
response = s3_client.get_object(
Bucket='my-bucket',
Key='my-object-key'
)
print(response)
以上步骤将允许源账户使用STS凭证访问目标账户中指定的资源。请根据实际需求和具体情况进行调整和配置。