Skip to main content

Utility to parse and filter Google Cloud IAM policy documents.

Project description

Policy Parser

Easily parse and filter yaml or json-based Google Cloud Platform (GCP) IAM policy documents.

$ gcloud projects get-iam-policy my-project | pparse -o table
principal_type    principal                                                                    role
----------------  ---------------------------------------------------------------------------  ------------------------------------
serviceAccount    555555555555@cloudbuild.gserviceaccount.com                                  roles/cloudbuild.builds.builder
group             tech-dev-team@company.com                                                    roles/cloudbuild.builds.editor
serviceAccount    service-555555555555@gcp-sa-cloudbuild.iam.gserviceaccount.com               roles/cloudbuild.serviceAgent
serviceAccount    service-555555555555@gcp-sa-computescanning.iam.gserviceaccount.com          roles/computescanning.serviceAgent
group             tech-dev-managers@company.com                                                roles/owner
user              annbaker@company.com                                                         roles/storage.admin
user              louiefranco@company.com                                                      roles/storage.admin
user              annbaker@company.com                                                         roles/storage.objectAdmin
user              louiefranco@company.com                                                      roles/storage.objectAdmin
group             tech-all@company.com                                                         roles/viewer
group             tech-dev-team@company.com                                                    roles/viewer

Installation

# Requires Python >= 3.8
pip install pparse

Usage

Parse

Pass in a policy document into pparse directly from gcloud and select an output format using --output-format.

$ gcloud projects get-iam-policy my-project | pparse --output-format csv
  • csv
  • table
  • json
  • yaml

Filters

You can filter policy documents by using one of the following commands. Use the -s flag to return a simple list of users or roles.

Filter by User Principal: pparse principal

$ gcloud ... | pparse principal louiefranco@company.com -s
roles/owner
roles/storage.admin
roles/storage.objectAdmin

Filter by Role pparse role

$ gcloud ... | pparse role roles/owner -s
group:tech-code-guidance@company.com
group:tech-dev-managers@company.com
user:annbaker@company.com
user:jimmyjohn@company.com
user:louiefranco@company.com
user:rhondaseltzer@company.com

Filter by Domain pparse domain

$ gcloud ... | pparse domain company.com
bindings:
- members:
  - group:tech-dev-team@company.com
  role: roles/cloudbuild.builds.editor
- members:
  - group:tech-code-guidance@company.com
  - group:tech-dev-managers@company.com
  - user:annbaker@company.com
  - user:jimmyjohn@company.com
  - user:louiefranco@company.com
  - user:rhondaseltzer@company.com
  role: roles/owner

Filter by Principal Type pparse type

$ gcloud ... | pparse -o csv type serviceaccount
principal_type,principal,role
serviceAccount,555555555555@cloudbuild.gserviceaccount.com,roles/cloudbuild.builds.builder
serviceAccount,service-555555555555@gcp-sa-cloudbuild.iam.gserviceaccount.com,roles/cloudbuild.serviceAgent
serviceAccount,service-555555555555@compute-system.iam.gserviceaccount.com,roles/compute.serviceAgent
serviceAccount,service-555555555555@gcp-sa-computescanning.iam.gserviceaccount.com,roles/computescanning.serviceAgent
serviceAccount,service-555555555555@container-engine-robot.iam.gserviceaccount.com,roles/container.serviceAgent

Filter by Permission pparse permission

$ gcloud ... | pparse -o table permission storage.objects.get
principal_type    principal                                                                    role
----------------  ---------------------------------------------------------------------------  ------------------------------------
serviceAccount    555555555555@cloudbuild.gserviceaccount.com                                  roles/cloudbuild.builds.builder
serviceAccount    service-555555555555@gcp-sa-cloudbuild.iam.gserviceaccount.com               roles/cloudbuild.serviceAgent
serviceAccount    service-555555555555@container-analysis.iam.gserviceaccount.com              roles/containeranalysis.ServiceAgent
serviceAccount    service-555555555555@dataflow-service-producer-prod.iam.gserviceaccount.com  roles/dataflow.serviceAgent
serviceAccount    service-555555555555@gcp-sa-datamigration.iam.gserviceaccount.com            roles/datamigration.serviceAgent
serviceAccount    service-555555555555@firebase-rules.iam.gserviceaccount.com                  roles/firebaserules.system
serviceAccount    service-555555555555@gcp-sa-firestore.iam.gserviceaccount.com                roles/firestore.serviceAgent
user              annbaker@company.com                                                         roles/storage.admin
user              louiefranco@company.com                                                      roles/storage.admin
user              annbaker@company.com                                                         roles/storage.objectAdmin
user              louiefranco@company.com                                                      roles/storage.objectAdmin

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pparse-0.2.0.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pparse-0.2.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file pparse-0.2.0.tar.gz.

File metadata

  • Download URL: pparse-0.2.0.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for pparse-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ac9dfb6c76b029eeb179ba8ecae5a8294c67581f6aab1c8edfe6ad12c1b01489
MD5 7f1883a1e27882bed856804c28b1c375
BLAKE2b-256 00a8fd7af51078e15b00b4f641fa38155c34c041bb6244024f1456cecd559b2a

See more details on using hashes here.

File details

Details for the file pparse-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pparse-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for pparse-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 12a10cde742695697efbbf0f3fa138cdc6dd1589c447dad61f7f13bcc6411489
MD5 1ae63795f20661d7956fdcc534fd3594
BLAKE2b-256 2174c435c2b36269aae35d7bb1939b0f74667ce21f2b3f3cb31915ea416496cf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page