Pra*_*ant 28 python amazon-web-services amazon-iam boto3
我有两个AWS账户 - 比方说A和B.
在帐户B中,我定义了一个角色,允许从帐户A访问另一个角色.让我们将其称为Role-B
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::********:role/RoleA"
},
"Action": "sts:AssumeRole"
}]
}
Run Code Online (Sandbox Code Playgroud)
在帐户A中,我定义了一个允许root用户承担角色的角色.让我们称之为Role-A
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::********:root"
},
"Action": "sts:AssumeRole"
}]
}
Run Code Online (Sandbox Code Playgroud)
角色A附加了以下策略
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::****:role/RoleB",
"Effect": "Allow"
}]
}
Run Code Online (Sandbox Code Playgroud)
作为帐户A中的用户,我假设了角色-A.现在使用这个临时凭证,我想假设角色B并访问帐户B拥有的资源.我有以下代码
client = boto3.client('sts')
firewall_role_object = client.assume_role(
RoleArn=INTERMEDIARY_IAM_ROLE_ARN,
RoleSessionName=str("default"),
DurationSeconds=3600)
firewall_credentials = firewall_role_object['Credentials']
firewall_client = boto3.client(
'sts',
aws_access_key_id=firewall_credentials['AccessKeyId'],
aws_secret_access_key=firewall_credentials['SecretAccessKey'],
aws_session_token=firewall_credentials['SessionToken'], )
optimizely_role_object = firewall_client.assume_role(
RoleArn=CUSTOMER_IAM_ROLE_ARN,
RoleSessionName=str("default"),
DurationSeconds=3600)
print(optimizely_role_object['Credentials'])
Run Code Online (Sandbox Code Playgroud)
此代码适用于我从客户端获得的一组角色,但不适用于我在我有权访问的两个AWS账户之间定义的角色.
Pra*_*ant 27
终于搞定了这个.以上配置是正确的.政策中存在拼写错误.
我会在这里保留这个问题,因为它可以帮助那些想要使用角色实现双跳认证的人.
| 归档时间: |
|
| 查看次数: |
11236 次 |
| 最近记录: |