繁体   English   中英

如何使用 python boto3 将新角色权限附加到 aws 中的 iam_role?

[英]How to attach new role permissions to iam_role in aws using python boto3?

我正在尝试使用 python boto3 将新权限附加到现有 IAM 角色。 我正在使用append()方法将新权限附加到 IAM 角色,但它并没有真正为角色添加权限。

Python:

import boto3
iam = boto3.client('iam',aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY)
rolename = ROLENAME
policyname = POLICYNAME

#Get rolepolicy 
response = iam.get_role_policy(RoleName=rolename,PolicyName=policyname)
add_permission = response['PolicyDocument']['Statement']

#Assume json_perm is the  permission that needs to be attached inside Statement block of policydocument.
json_perm = """ {'Action':'*','Resource':'','Effect':'Allow'})""" 

#Attaching new permissions to the role
add_permission.append(json_perm)
print(add_permission)

#Get response after appending
new_response = iam.get_role_policy(RoleName=rolename,PolicyName=policyname)
print(new_response)

打印add_permission时,我可以看到策略文档中附加了新权限。 但我无法在 AWS 控制台中看到该权限,并且在附加后,如果我打印new_response我也无法在 output 终端中看到新添加的权限。

将新权限附加到 IAM 角色实际上不会对角色进行任何更改..? 如何使用 python boto3 将新权限附加到 IAM 角色 PolicyDocument?

谢谢。

将新权限附加到 IAM 角色实际上不会对角色进行任何更改..?

这不起作用,因为您实际上并未在 AWS 更新策略。 您只是将它添加到 python 变量add_permission 不会自动转化为 AWS 策略的实际更改。

为此,您必须使用对 AWS 的put_role_policy调用来更新策略。

您可以尝试以下代码:

#Get rolepolicy 
response = iam.get_role_policy(
    RoleName=rolename,
    PolicyName=policyname)

add_permission = response['PolicyDocument']
#print(add_permission)

#Attaching new permissions to the role
#add_permission.append(json_perm)
#print(add_permission)

# NOT a good idea to allow all actions on all resources
add_permission['Statement'].append({
                       'Action':'*',
                       'Resource':'*',
                       'Effect':'Allow',
                       'Sid': 'AllowAlll'})

response = iam.put_role_policy(
    RoleName=rolename,
    PolicyName=policyname,
    PolicyDocument=json.dumps(add_permission)
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM