如何在 python boto3 中获取 iam 用户的 aws 托管策略的策略文档?

How to get policy document for aws managed policy of a iam user in python boto3?

我能够通过“get_user_policy()”客户端检索内联策略的策略文档。有什么方法可以检索 IAM 用户的 AWS 托管策略的策略文档吗?

import boto3
client = boto3.client('iam')
policy = iam.get_user_policy(UserName="<string>",PolicyName = "<string>")
doc = dict((k,response[k]) for k in ['PolicyDocument']if k in policy)
print(doc)

看来我们可以使用其 arn 获取托管策略的策略文档。但我不确定如何获取附加到特定 IAM 用户的所有托管策略的 arn。

那么,如何在 python 中获取 iam 用户 的 aws 管理策略的策略文档?

提前致谢。

  • 您可以使用以下 link 获取附加到用户的所有策略。 fetch users and policies

  • 然后获取您可以使用的所有保单文件

    get_account_authorization_details

我创建了一个名为 test1 的用户并附加了 IAMReadOnlyAccess 和 PowerUserAccess。关键在于 AWS 托管策略和客户托管策略的 ARN 差异。 For more info.

import boto3

iam_res = boto3.resource('iam')
user = iam_res.User('test1')

policy_iterator = user.attached_policies.all()

for each in policy_iterator:
    if each.arn.startswith('arn:aws:iam::aws'):
        print(each.default_version.document)

这是输出。

{'Statement': [{'Action': ['iam:GenerateCredentialReport',
                           'iam:GenerateServiceLastAccessedDetails',
                           'iam:Get*',
                           'iam:List*',
                           'iam:SimulateCustomPolicy',
                           'iam:SimulatePrincipalPolicy'],
                'Effect': 'Allow',
                'Resource': '*'}],
 'Version': '2012-10-17'}
{'Statement': [{'Effect': 'Allow',
                'NotAction': ['iam:*', 'organizations:*', 'account:*'],
                'Resource': '*'},
               {'Action': ['iam:CreateServiceLinkedRole',
                           'iam:DeleteServiceLinkedRole',
                           'iam:ListRoles',
                           'organizations:DescribeOrganization',
                           'account:ListRegions'],
                'Effect': 'Allow',
                'Resource': '*'}],
 'Version': '2012-10-17'}