40 lines
1.3 KiB
Python
Executable File
40 lines
1.3 KiB
Python
Executable File
#!/usr/bin/python3
|
|
import boto3
|
|
import json
|
|
|
|
|
|
def list_custom_iam_policies():
|
|
# Create an IAM client
|
|
iam = boto3.client('iam')
|
|
|
|
# Initialize a paginator
|
|
paginator = iam.get_paginator('list_policies')
|
|
|
|
# List of custom policies
|
|
custom_policies = []
|
|
|
|
# Iterate through all pages of policies
|
|
for page in paginator.paginate(Scope='Local'):
|
|
for policy in page['Policies']:
|
|
if policy['PolicyName'] != 'AWSManaged':
|
|
policy_version = iam.get_policy_version(
|
|
PolicyArn=policy['Arn'],
|
|
VersionId=policy['DefaultVersionId']
|
|
)
|
|
custom_policies.append({
|
|
'PolicyName': policy['PolicyName'],
|
|
'PolicyArn': policy['Arn'],
|
|
'PolicyDocument': json.dumps(policy_version['PolicyVersion']['Document'], indent=2, separators=(',', ': '))
|
|
})
|
|
|
|
return custom_policies
|
|
|
|
|
|
if __name__ == "__main__":
|
|
custom_iam_policies = list_custom_iam_policies()
|
|
for policy in custom_iam_policies:
|
|
print(f"Policy Name: {policy['PolicyName']}")
|
|
print(f"Policy ARN: {policy['PolicyArn']}")
|
|
print("Policy Document:")
|
|
print(policy['PolicyDocument'])
|
|
print("=" * 40) |