Skip to content

Crash while scanning principals that use deprecated permission policies #136

@rdegraaf

Description

@rdegraaf

Describe the bug
AWS has deprecated a few of its more broken AWS-managed Policies, including arn:aws:iam::aws:policy/AWSCodePipelineFullAccess. When I try to scan an account containing a principal with this Policy attached, I get a crash with the following stack trace:

$ scout-venv-5.12.0/bin/pmapper graph create2023-10-03 15:19:37-0700 | Obtaining IAM Users/Roles/Groups/Policies in the account.
2023-10-03 15:20:28-0700 | Sorting users, roles, groups, policies, and their relationships.
Traceback (most recent call last):
  File "/home/rdegraaf/MIO/scout-venv-5.12.0/bin/pmapper", line 8, in <module>
    sys.exit(main())
  File "/home/rdegraaf/MIO/scout-venv-5.12.0/lib/python3.10/site-packages/principalmapper/__main__.py", line 145, in main
    return graph_cli.process_arguments(parsed_args)
  File "/home/rdegraaf/MIO/scout-venv-5.12.0/lib/python3.10/site-packages/principalmapper/graphing/graph_cli.py", line 179, in process_arguments
    graph = graph_actions.create_new_graph(session, service_list, parsed_args.include_regions,
  File "/home/rdegraaf/MIO/scout-venv-5.12.0/lib/python3.10/site-packages/principalmapper/graphing/graph_actions.py", line 39, in create_new_graph
    return gathering.create_graph(session, service_list, region_allow_list, region_deny_list, scps, client_args_map)
  File "/home/rdegraaf/MIO/scout-venv-5.12.0/lib/python3.10/site-packages/principalmapper/graphing/gathering.py", line 75, in create_graph
    results = get_nodes_groups_and_policies(iamclient)
  File "/home/rdegraaf/MIO/scout-venv-5.12.0/lib/python3.10/site-packages/principalmapper/graphing/gathering.py", line 226, in get_nodes_groups_and_policies
    role_policies.append(_get_policy_by_arn_or_raise(p['PolicyArn'], result['policies']))
  File "/home/rdegraaf/MIO/scout-venv-5.12.0/lib/python3.10/site-packages/principalmapper/graphing/gathering.py", line 1005, in _get_policy_by_arn_or_raise
    raise ValueError('Could not locate policy {}.'.format(arn))
ValueError: Could not locate policy arn:aws:iam::aws:policy/AWSCodePipelineFullAccess.

When I look up this specific principal in AWS Console and follow the link to AWSCodePipelineFullAccess, I get a page with the warning "[DEPRECATED] this policy has been removed -- please use [AWSCodePipeline_FullAccess] instead.". It does still list permissions, so maybe there is still a way to retrieve the permissions through the API?

I'm not sure what other deprecated AWS-managed Policies there are.

To Reproduce
I'm not sure if it's still possible to attach this Policy to a new principal. You might need to find an existing Principal that already has it attached. Assuming that it's still possible:

  1. Create a principal with the Policy "AWSCodePipelineFullAccess" attached.
  2. Run pmapper graph create against the account.
  3. Crash.

Expected behavior
If possible, look up the details of the deprecated Policy. If not, catch the exception and move on.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions