使用 boto3 为 AWS 账户创建跨账户访问角色
Cross Account access Role creation for AWS Account using boto3
我想使用 boto3 创建一个 AWS 跨账户角色。从控制台创建角色。但无法使用 boto3 创建。我有两个不同的 AWS 账户。我想使用 Assume Role 从另一个帐户访问一个帐户。为此,我需要在帐户 1 中创建一个权限,以便帐户 2 可以访问它。但是,我需要使用 boto3 only.I 执行所有功能使用此代码 -
iam = boto3.client('iam',aws_access_key_id='XXXXX',aws_secret_access_key='YYYY')
role = iam.create_role(RoleName=<Role Name>,AssumeRolePolicyDocument='{"Version" : "2012-10-17","Statement": [{"Effect": "Allow","Principal":{"AWS":"arn:aws:iam::<Account ID to which permission is granted>:root"} ,"Action":["sts:AssumeRole" ]}]}')
policy = iam.create_policy(PolicyName=<Policy Name>, PolicyDocument='{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "*","Resource": "*"}]}')
policy_arn = policy['Policy']['Arn']
iam.attach_role_policy(PolicyArn=<Policy arn>,RoleName=<Name of the role to which policy need to be attached>)
这段代码能不能再优化一下,可能会少调用一些
为了从账户 B 承担账户 A 的角色,这里是程序。
在账户 A 中创建具有以下信任关系的角色。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "Root arn of the account B"
},
"Action": "sts:AssumeRole"
}
]
}
将以上 json 保存在其中一个文件中。然后编写一个函数来使用上面的信任关系创建一个角色。
import boto3
role_name = "Name of the role"
client = boto3.client('iam')
client.create_role(RoleName=role_name,
AssumeRolePolicyDocument=trust_relationship())
def trust_relationship(self, role_name):
with open('json_file_name', 'r') as data_file:
trust_relationship = json.load(data_file)
return json.dumps(trust_relationship)
现在在账户 B 中,使用以下 json 文档创建一个角色,以承担账户 A 的角色。
政策文件:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"sts:AssumeRole",
"Any other required actions"
],
"Resource": "*"
}
]
}
现在使用此策略文档附加到帐户 B 中的角色,然后该角色承担帐户 A 的角色。
无需优化。代码工作正常。
我想使用 boto3 创建一个 AWS 跨账户角色。从控制台创建角色。但无法使用 boto3 创建。我有两个不同的 AWS 账户。我想使用 Assume Role 从另一个帐户访问一个帐户。为此,我需要在帐户 1 中创建一个权限,以便帐户 2 可以访问它。但是,我需要使用 boto3 only.I 执行所有功能使用此代码 -
iam = boto3.client('iam',aws_access_key_id='XXXXX',aws_secret_access_key='YYYY')
role = iam.create_role(RoleName=<Role Name>,AssumeRolePolicyDocument='{"Version" : "2012-10-17","Statement": [{"Effect": "Allow","Principal":{"AWS":"arn:aws:iam::<Account ID to which permission is granted>:root"} ,"Action":["sts:AssumeRole" ]}]}')
policy = iam.create_policy(PolicyName=<Policy Name>, PolicyDocument='{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "*","Resource": "*"}]}')
policy_arn = policy['Policy']['Arn']
iam.attach_role_policy(PolicyArn=<Policy arn>,RoleName=<Name of the role to which policy need to be attached>)
这段代码能不能再优化一下,可能会少调用一些
为了从账户 B 承担账户 A 的角色,这里是程序。
在账户 A 中创建具有以下信任关系的角色。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "Root arn of the account B"
},
"Action": "sts:AssumeRole"
}
]
}
将以上 json 保存在其中一个文件中。然后编写一个函数来使用上面的信任关系创建一个角色。
import boto3
role_name = "Name of the role"
client = boto3.client('iam')
client.create_role(RoleName=role_name,
AssumeRolePolicyDocument=trust_relationship())
def trust_relationship(self, role_name):
with open('json_file_name', 'r') as data_file:
trust_relationship = json.load(data_file)
return json.dumps(trust_relationship)
现在在账户 B 中,使用以下 json 文档创建一个角色,以承担账户 A 的角色。
政策文件:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"sts:AssumeRole",
"Any other required actions"
],
"Resource": "*"
}
]
}
现在使用此策略文档附加到帐户 B 中的角色,然后该角色承担帐户 A 的角色。
无需优化。代码工作正常。