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