Google Cloud access control & privilege security checks
Admin roles, standing privileges, permission scopes and policy enforcement — the settings that decide how much damage one compromised account can do.
On Google Cloud, Black Cat runs 30 checks in this area on every scan. Each one below lists its severity, how to fix it, and the compliance controls it satisfies where a control applies. See what access the Google Cloud connector needs.
Checks (30)
severity: critical Overly Permissive IAM Binding fix difficulty: hard #
Replace overly permissive GCP IAM bindings with least-privilege predefined or custom roles
- Navigate to GCP Console > IAM & Admin > IAM
- Identify bindings using roles/editor or roles/owner on broad principals
- Replace with least-privilege predefined or custom roles
- Test workloads to confirm they still function correctly
Satisfies: ISO 27001:2022 A.5.18 SOC 2 Type II CC6.2 CIS Controls v8 CIS-05.4 NIST CSF 2.0 PR.AA-05 GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-308.a4 NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high SA Impersonation Role Binding fix difficulty: hard #
Remove or scope down GCP IAM bindings that grant service account impersonation roles
- Navigate to GCP Console > IAM & Admin > IAM
- Find bindings granting iam.serviceAccountTokenCreator or iam.serviceAccountUser
- Remove the binding or scope it to a specific service account
- Verify workloads do not break after the change
Satisfies: ISO 27001:2022 A.5.15 SOC 2 Type II CC6.2 CIS Controls v8 CIS-06.1 NIST CSF 2.0 PR.AA-05 GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: medium Excessive Project Owners fix difficulty: medium #
Reduce the number of GCP project Owners by removing users who do not require that role
- Navigate to GCP Console > IAM & Admin > IAM
- Identify principals with the Owner role
- Remove Owner role from users who do not require it
- Assign more specific roles as needed
Satisfies: ISO 27001:2022 A.5.15 SOC 2 Type II CC6.3 CIS Controls v8 CIS-06.1 NIST CSF 2.0 PR.AA-05 GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: medium Owner Role Group Assignment fix difficulty: medium #
Replace GCP group-based Owner role bindings with less permissive roles or individual assignments
- Navigate to GCP Console > IAM & Admin > IAM
- Identify group principals bound to the Owner role
- Replace with a more restrictive role or assign Owner to specific individuals only
- Audit group membership to ensure only trusted members are included
Satisfies: ISO 27001:2022 A.5.15 SOC 2 Type II CC6.3 CIS Controls v8 CIS-06.1 NIST CSF 2.0 PR.AA-05 GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: medium Privileged Service Account Binding fix difficulty: hard #
Replace privileged GCP IAM role bindings for service accounts with least-privilege roles
- Navigate to GCP Console > IAM & Admin > IAM
- Identify privileged role bindings assigned to service accounts
- Replace with least-privilege roles scoped to required resources
- Test service account workloads after changes
Satisfies: ISO 27001:2022 A.5.15 SOC 2 Type II CC6.2 CIS Controls v8 CIS-06.1 NIST CSF 2.0 PR.AA-05 GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high Old Service Account Keys fix difficulty: medium #
Rotate GCP service account keys older than 90 days and delete the old keys
- Navigate to GCP Console > IAM & Admin > Service Accounts
- Select the service account with old keys
- Create a new key and update dependent applications
- Delete the old key once the new key is confirmed working
Satisfies: ISO 27001:2022 A.8.27 SOC 2 Type II CC7.1 CIS Controls v8 CIS-07.4 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-32.1a HIPAA (SaaS Security) HIPAA-312.c NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: medium User Managed Service Account Keys fix difficulty: hard #
Migrate GCP workloads from user-managed service account keys to Workload Identity Federation
- Navigate to GCP Console > IAM & Admin > Service Accounts
- Identify service accounts with user-managed keys
- Migrate workloads to use Workload Identity Federation or attached service accounts
- Delete the user-managed keys once migration is complete
Satisfies: ISO 27001:2022 A.5.15 SOC 2 Type II CC7.1 CIS Controls v8 CIS-06.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-32.1a HIPAA (SaaS Security) HIPAA-312.c NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: medium Bucket Uniform Access Disabled fix difficulty: medium #
Enable uniform bucket-level access on GCP Storage buckets and migrate ACLs to IAM policies
- Navigate to GCP Console > Cloud Storage > Buckets
- Select the bucket without uniform access
- Go to the Permissions tab
- Enable uniform bucket-level access
- Migrate any existing ACLs to IAM policies
Satisfies: ISO 27001:2022 A.5.15 SOC 2 Type II CC8.1 CIS Controls v8 CIS-06.1 NIST CSF 2.0 PR.DS-01 GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high SA Key Creation Not Disabled fix difficulty: medium #
Enable the GCP organization policy to disable service account key creation
- Navigate to GCP Console > IAM & Admin > Organization Policies
- Search for constraints/iam.disableServiceAccountKeyCreation
- Enable the constraint to disable service account key creation
- Save changes
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC7.1 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: medium SA Key Upload Not Disabled fix difficulty: easy #
Enable the GCP organization policy to disable service account key uploads
- Navigate to GCP Console > IAM & Admin > Organization Policies
- Search for constraints/iam.disableServiceAccountKeyUpload
- Enable the constraint to disable service account key uploads
- Save changes
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC7.1 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high Default SA Grant Not Disabled fix difficulty: medium #
Enable the GCP org policy to prevent automatic IAM grants for default service accounts
- Navigate to GCP Console > IAM & Admin > Organization Policies
- Search for constraints/iam.automaticIamGrantsForDefaultServiceAccounts
- Enable the constraint to prevent automatic IAM grants for default service accounts
- Save changes
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC5.2 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: medium Service Account Key Expiry Not Enforced fix difficulty: medium #
Configure the GCP org policy to expire user-managed service account keys
- Navigate to GCP Console > IAM & Admin > Organization Policies
- Search for constraints/iam.serviceAccountKeyExpiryHours
- Set a maximum key validity duration (e.g. 2160h / 90 days)
- Save changes
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC7.1 CIS Controls v8 CIS-04.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high Unrestricted API Key fix difficulty: medium #
Add API and application restrictions to GCP API keys to limit their scope
- Navigate to GCP Console > APIs & Services > Credentials
- Select the unrestricted API key
- Add API restrictions to limit which APIs the key can call
- Add application restrictions (IP, HTTP referrer, or app) as appropriate
- Save changes
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC7.1 CIS Controls v8 CIS-07.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: medium Stale API Key fix difficulty: easy #
Delete stale GCP API keys that have not been used recently
- Navigate to GCP Console > APIs & Services > Credentials
- Identify API keys that have not been used recently
- Verify with teams that the key is no longer needed
- Delete the stale API key
Satisfies: ISO 27001:2022 A.8.9 SOC 2 Type II CC7.1 CIS Controls v8 CIS-07.1 NIST CSF 2.0 PR.IP GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.c NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high KMS Separation of Duties Violation fix difficulty: medium #
Remove conflicting GCP KMS roles to enforce separation of duties between admins and encrypters
- Navigate to GCP Console > IAM & Admin > IAM
- Identify users who have both KMS admin and encrypter/decrypter roles
- Remove one of the conflicting roles from each user
- Assign roles to separate individuals to enforce separation of duties
Satisfies: ISO 27001:2022 A.8.2 SOC 2 Type II CC5.1 CIS Controls v8 CIS-06.1 NIST CSF 2.0 ID.RA GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high SA Separation of Duties Violation fix difficulty: medium #
Remove conflicting GCP service account roles to enforce separation of duties
- Navigate to GCP Console > IAM & Admin > IAM
- Identify users who have both service account admin and service account user roles
- Remove one of the conflicting roles from each user
- Assign roles to separate individuals to enforce separation of duties
Satisfies: ISO 27001:2022 A.8.2 SOC 2 Type II CC5.1 CIS Controls v8 CIS-06.1 NIST CSF 2.0 ID.RA GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: critical Org-Level Owner Binding fix difficulty: hard #
Remove org-level Owner role bindings in GCP and grant Owner only at the project level
- Navigate to GCP Console > IAM & Admin > IAM (organization level)
- Identify principals with Owner role at the organization level
- Remove the org-level Owner binding
- Grant Owner only at the project level where needed
Satisfies: ISO 27001:2022 A.5.18 SOC 2 Type II CC6.1 CIS Controls v8 CIS-05.4 NIST CSF 2.0 PR.AA-05 GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high Org-Level Editor Binding fix difficulty: hard #
Remove org-level Editor role bindings in GCP and replace with project-level specific roles
- Navigate to GCP Console > IAM & Admin > IAM (organization level)
- Identify principals with Editor role at the organization level
- Remove the org-level Editor binding
- Grant more specific roles at the project level
Satisfies: ISO 27001:2022 A.5.18 SOC 2 Type II CC6.1 CIS Controls v8 CIS-05.4 NIST CSF 2.0 PR.AA-05 GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high External Members at Org Level fix difficulty: medium #
Remove external members from GCP organization-level IAM bindings
- Navigate to GCP Console > IAM & Admin > IAM (organization level)
- Identify external members (accounts outside your domain)
- Remove external member bindings at the organization level
- If access is required, grant it at the project level with limited roles
Satisfies: ISO 27001:2022 A.5.18 SOC 2 Type II CC6.1 CIS Controls v8 CIS-15.1 NIST CSF 2.0 PR.AA-05 GDPR (SaaS Security) GDPR-44.1 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high Instance Uses Default Service Account fix difficulty: medium #
Replace the default Compute Engine service account with a custom least-privilege service account (CIS GCP 4.1)
- Navigate to GCP Console > Compute Engine > VM Instances
- Select the flagged instance and click Edit
- Under Service account, select a custom service account with only the roles required by the workload
- Save changes and restart the instance if necessary
- Delete or disable the unused default compute service account bindings if no longer needed
Satisfies: ISO 27001:2022 A.5.15 SOC 2 Type II CC6.1 CIS Controls v8 CIS-06.1 NIST CSF 2.0 PR.AA-05 GDPR (SaaS Security) GDPR-25.2 HIPAA (SaaS Security) HIPAA-312.a NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: critical Cloud KMS Key Publicly Accessible fix difficulty: easy #
Remove public IAM members (allUsers, allAuthenticatedUsers) from Cloud KMS crypto keys
- Navigate to GCP Console > Security > Key Management
- Select the flagged key ring and crypto key
- Open the Permissions tab
- Remove allUsers and allAuthenticatedUsers from all IAM bindings
- Grant access only to specific service accounts or users as required
Satisfies: ISO 27001:2022 A.8.24 SOC 2 Type II CC6.1 CIS Controls v8 CIS-03.6 NIST CSF 2.0 PR.DS-01 NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: critical Secret Manager Secret Publicly Accessible fix difficulty: easy #
Remove public IAM members (allUsers, allAuthenticatedUsers) from Secret Manager secrets
- Navigate to GCP Console > Security > Secret Manager
- Select the flagged secret and open the Permissions tab
- Remove allUsers and allAuthenticatedUsers from all IAM bindings
- Grant access only to specific service accounts or users as required
- Verify workloads still function with the restricted bindings
Satisfies: ISO 27001:2022 A.8.24 SOC 2 Type II CC6.1 CIS Controls v8 CIS-03.6 NIST CSF 2.0 PR.DS-01 NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: critical GKE Legacy ABAC Enabled fix difficulty: medium #
Disable legacy Attribute-Based Access Control and use RBAC for GKE cluster authorization (CIS GKE 6.2.1)
- Navigate to GCP Console > Kubernetes Engine > Clusters
- Select the flagged cluster and click Edit
- Under Security, disable Legacy Authorization (ABAC)
- Save changes — existing ABAC policies will no longer take effect
- Review Kubernetes RBAC roles and bindings to ensure equivalent access is granted
Satisfies: ISO 27001:2022 A.5.18 SOC 2 Type II CC6.3 CIS Controls v8 CIS-06.1 NIST CSF 2.0 PR.AA-05 NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high GKE Workload Identity Disabled fix difficulty: medium #
Enable Workload Identity to bind Kubernetes service accounts to GCP IAM service accounts without key files (CIS GKE 6.2.2)
- Navigate to GCP Console > Kubernetes Engine > Clusters
- Select the flagged cluster and click Edit
- Under Security, enable Workload Identity
- Save changes
- Update workloads to use Kubernetes service accounts annotated with their corresponding GCP IAM service account
Satisfies: ISO 27001:2022 A.5.18 SOC 2 Type II CC6.3 CIS Controls v8 CIS-06.1 NIST CSF 2.0 PR.AA-05 NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high GKE Master Authorized Networks Disabled fix difficulty: easy #
Enable master authorized networks to restrict GKE control plane access to specific CIDR ranges (CIS GKE 6.6.3)
- Navigate to GCP Console > Kubernetes Engine > Clusters
- Select the flagged cluster and click Edit
- Under Networking, enable Control plane authorized networks
- Add the CIDR ranges for your corporate network, VPN, or bastion hosts
- Save changes
Satisfies: ISO 27001:2022 A.5.18 SOC 2 Type II CC6.3 CIS Controls v8 CIS-06.1 NIST CSF 2.0 PR.AA-05 NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high Unbounded Conditional Privileged Binding fix difficulty: medium #
Add a time bound to conditional grants of privileged GCP roles, or remove the grant
- Navigate to GCP Console > IAM & Admin > IAM
- Locate the binding for the reported role and open its condition
- Add a request.time upper bound (for example, request.time < timestamp("2026-12-31T23:59:59Z"))
- If the access is meant to be permanent, remove the condition and justify the grant through access review instead
- Re-run the scan to confirm the finding clears
Satisfies: NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: critical WIF Provider Trusts Public Issuer Without Attribute Condition fix difficulty: medium #
Restrict a workload identity provider that trusts a multi-tenant OIDC issuer with an attribute condition
- Navigate to GCP Console > IAM & Admin > Workload Identity Federation
- Open the flagged pool and provider
- Add an attribute condition that scopes trust to a specific repository, organization, or subject claim
- Re-run the scan to confirm the finding clears
Satisfies: NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: high WIF Provider Missing Attribute Condition fix difficulty: medium #
Add an attribute condition to a workload identity provider so it does not accept every identity it trusts
- Navigate to GCP Console > IAM & Admin > Workload Identity Federation
- Open the flagged pool and provider
- Add an attribute condition scoping which identities from the issuer are accepted
- Re-run the scan to confirm the finding clears
Satisfies: NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: critical Privileged Service Account Impersonable From Unconditioned WIF Pool fix difficulty: hard #
Remove the privileged role from this service account or add an attribute condition to the workload identity pool that can impersonate it
- Navigate to GCP Console > IAM & Admin > Workload Identity Federation
- Identify the pool and provider granted iam.workloadIdentityUser on this service account
- Add an attribute condition to the provider, or scope the workloadIdentityUser binding to specific identities
- Alternatively, remove the privileged project role from this service account
- Re-run the scan to confirm the finding clears
Satisfies: NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2
severity: critical Privileged Role Granted to Workload Identity Pool via Wildcard fix difficulty: hard #
Replace a principalSet wildcard IAM binding on a privileged role with an attribute-scoped grant
- Navigate to GCP Console > IAM & Admin > IAM
- Locate the binding granting the privileged role to the principalSet wildcard
- Replace the wildcard member with an attribute-scoped principalSet, or remove the binding
- Re-run the scan to confirm the finding clears
Satisfies: NIS2 Directive NIS2-21.i.1 DORA (SaaS Security) DORA-9.2