[英]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.