簡體   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