python - 如何使用 python boto3 将新角色权限附加到 aws 中的 iam_role?
问题描述
我正在尝试使用 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
,我也无法在输出终端中看到新添加的权限。
将新权限附加到 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)
)
推荐阅读
- python - 按出现排序
- python - Heroku 仍在访问队列中的旧作业并且不使用更新的代码
- c++ - 如何在 C++ 中为两个 args 的函数重载 [] 运算符?
- python - 使用多列数据绘制折线图(熊猫)
- javascript - 由于 chrome 中的 URL 地址栏,滚动抽屉闪烁
- python - 如何从 Python 3 中的唯一值中获取均值、中值和众数
- python - 在方法内创建动画
- python - 引用最后一个被调用的对象?
- reactjs - React 首先显示三元比较的 ELSE 部分而不是 IF 部分
- excel - VBA:我的 SolverAdd 没有添加我的约束