The Organization Policy Service has several predefined and managed constraints that can affect service accounts in your organization. This page helps you understand what errors those organization policies generate, and the steps that you can take to resolve those errors.
Required roles
To get the permissions that
      you need to troubleshoot organization policy issues,
    
      ask your administrator to grant you the Organization policy administrator 
( roles/orgpolicy.policyAdmin 
)
     IAM role on the organization.
  
  
  
  
  For more information about granting roles, see Manage access to projects, folders, and organizations 
.
You might also be able to get the required permissions through custom roles or other predefined roles .
Troubleshoot disabled service account key creation
If the iam.disableServiceAccountKeyCreation 
constraint is enforced for your
organization, then you can't create keys for any service accounts in your
organization. For more information about this constraint, see Disable service account key creation 
.
Key creation error
If you try to create a service account key, but the action is blocked by
the iam.disableServiceAccountKeyCreation 
constraint, you get the following
error message:
Console
In the Google Cloud console, a dialog appears with the heading Service
account key creation is disabled. The dialog states that the iam.disableServiceAccountKeyCreation 
constraint is enforced on your
organization.
gcloud
  ERROR: (gcloud.iam.service-accounts.keys.create) FAILED_PRECONDITION 
 : 
  
 Key 
 creation is not allowed on this service account. 
 - 
  
 '@type' 
 : 
  
 type.googleapis.com/google.rpc.PreconditionFailure 
  
 violations 
 : 
  
 - 
  
 description 
 : 
  
 Key creation is not allowed on this service account. 
  
 subject 
 : 
  
 projects/ PROJECT_ID 
/serviceAccounts/ SERVICE_ACCOUNT_ID 
@ PROJECT_ID 
.iam.gserviceaccount.com?configvalue= SERVICE_ACCOUNT_ID 
%40 PROJECT_ID 
. 
iam.gserviceaccount.com  
 type 
 : 
  
 constraints/iam.disableServiceAccountKeyCreation 
 
 
REST
  { 
  
 "error" 
 : 
  
 { 
  
 "code" 
 : 
  
 400 
 , 
  
 "message" 
 : 
  
 "Key creation is not allowed on this service account." 
 , 
  
 "status" 
 : 
  
 "FAILED_PRECONDITION" 
 , 
  
 "details" 
 : 
  
 [ 
  
 { 
  
 "@type" 
 : 
  
 "type.googleapis.com/google.rpc.PreconditionFailure" 
 , 
  
 "violations" 
 : 
  
 [ 
  
 { 
  
 "type" 
 : 
  
 "constraints/iam.disableServiceAccountKeyCreation" 
 , 
  
 "subject" 
 : 
  
 "projects/ PROJECT_ID 
/serviceAccounts/ SERVICE_ACCOUNT_ID 
@ PROJECT_ID 
.iam.gserviceaccount.com?configvalue= SERVICE_ACCOUNT_ID 
%40 PROJECT_ID 
.iam.gserviceaccount.com" 
 , 
  
 "description" 
 : 
  
 "Key creation is not allowed on this service account." 
  
 } 
  
 ] 
  
 } 
  
 ] 
  
 } 
 } 
 
 
Recommended resolution for service account key creation error
If an organization policy prevents you from creating a service account key, we recommend that you do the following:
-  Assess whether a service account key is needed. We don't recommend using service account keys for authentication. This is because service account keys can become a security risk if they're not managed properly, increasing your vulnerability to threats like credential leakage, privilege escalation, information disclosure, and non-repudiation. In most cases, you should use a more secure alternative to authenticate instead of using a service account key. 
-  If a service account key is needed for your use case, disable the iam.disableServiceAccountKeyCreationconstraint for your project.
To disable the organization policy constraint, either turn off enforcement for the constraint, or exempt your project from enforcement:
-  To turn off enforcement for the constraint for your entire organization, do the following: -  Ensure that you have the Organization Policy Administrator role ( roles/orgpolicy.policyAdmin) at the organization level. This role is only available to grant on organizations, and doesn't appear in the role list for projects.To learn how to grant roles at the organization level, see Manage access to projects, folders, and organizations . 
-  In the Google Cloud console, go to the Organization policiespage. 
-  In the project selector, select the organization that you want to disable the iam.disableServiceAccountKeyCreationconstraint for.
-  In the Filterfield, enter iam.disableServiceAccountKeyCreation. Then, in the policy list, click Disable service account key creation.
-  Click Manage policy. 
-  In the Policy sourcesection, ensure that Override parent's policyis selected. 
-  Under Enforcement, turn off enforcement for this organization policy constraint. 
-  Click Set policy. 
 
-  
-  To exempt your project from enforcement, do the following: - Ensure that you have the Tag Administrator role ( roles/resourcemanager.tagAdmin) and the Organization Policy Administrator role (roles/orgpolicy.policyAdmin) at the organization level. To learn how to grant roles at the organization level, see Manage access to projects, folders, and organizations .
-  At the organization level, create a tag key and tag value that you will use to define whether a resource should be exempt from the organization policy. We recommend creating a tag with the key disableServiceAccountKeyCreationand the valuesenforcedandnot_enforced.To learn how to create tag keys and tag values, see Creating and defining a new tag . 
-  Attach the disableServiceAccountKeyCreationtag to the organization and set its value toenforced. All resources in the organization inherit this tag value, unless it's overwritten with a different tag value.To learn how to attach tags to resources, see Attaching tags to resources . 
- For each service account that you want to exempt from the organization policy, attach the disableServiceAccountKeyCreationtag and set its value tonot_enforced. Setting a tag value for a service account in this way overrides the tag value inherited from the organization.
-  Create or update the organization policy that prevents the creation of service account keys so that it doesn't enforce the constraint for exempt resources. This policy should have the following rules: -  Configure the iam.disableServiceAccountKeyCreationconstraint to not be enforced on any resources with thedisableServiceAccountKeyCreation: not_enforcedtag. The condition in this rule should look like the following:"resource.matchTag(' ORGANIZATION_ID /disableServiceAccountKeyCreation', 'not_enforced')" 
- Configure the iam.disableServiceAccountKeyCreationconstraint to be enforced on all other resources.
 
-  
 
- Ensure that you have the Tag Administrator role ( 
Troubleshoot disabled service account creation
If the iam.disableServiceAccountCreation 
constraint is enforced for your
organization, then you can't create service accounts in any projects in
your organization. For more information about this constraint, see Disable service account creation 
.
Service account creation error
If you try to create a service account, but the action is blocked by
the iam.disableServiceAccountCreation 
constraint, you get the following
error message:
Console
In the Google Cloud console, a dialog appears with the heading Service account creation failed. The dialog states, The attempted action failed, please try again.
gcloud
  ERROR: (gcloud.iam.service-accounts.create) FAILED_PRECONDITION 
 : 
  
 Service account 
 creation is not allowed on this project. 
 - 
  
 '@type' 
 : 
  
 type.googleapis.com/google.rpc.PreconditionFailure 
  
 violations 
 : 
  
 - 
  
 description 
 : 
  
 Service account creation is not allowed on this project. 
  
 subject 
 : 
  
 projects/ PROJECT_ID 
/serviceAccounts/?configvalue= 
  
 type 
 : 
  
 constraints/iam.disableServiceAccountCreation 
 
 
REST
  { 
  
 "error" 
 : 
  
 { 
  
 "code" 
 : 
  
 400 
 , 
  
 "message" 
 : 
  
 "Service account creation is not allowed on this project." 
 , 
  
 "status" 
 : 
  
 "FAILED_PRECONDITION" 
 , 
  
 "details" 
 : 
  
 [ 
  
 { 
  
 "@type" 
 : 
  
 "type.googleapis.com/google.rpc.PreconditionFailure" 
 , 
  
 "violations" 
 : 
  
 [ 
  
 { 
  
 "type" 
 : 
  
 "constraints/iam.disableServiceAccountCreation" 
 , 
  
 "subject" 
 : 
  
 "projects/ PROJECT_ID 
/serviceAccounts/?configvalue=" 
 , 
  
 "description" 
 : 
  
 "Service account creation is not allowed on this project." 
  
 } 
  
 ] 
  
 } 
  
 ] 
  
 } 
 } 
 
 
Recommended resolution for service account creation error
If an organization policy prevents you from creating a service account, we recommend that you do the following:
-  Assess whether a service account is needed. Review Choose when to use service accounts to confirm that a service account is needed for your use case. 
-  If a service account is needed for your use case, disable the iam.disableServiceAccountCreationconstraint for your project.
To disable the organization policy constraint, either turn off enforcement for the constraint, or exempt your project from enforcement:
-  To turn off enforcement for the constraint for your entire organization, do the following: -  Ensure that you have the Organization Policy Administrator role ( roles/orgpolicy.policyAdmin) at the organization level. This role is only available to grant on organizations, and doesn't appear in the role list for projects.To learn how to grant roles at the organization level, see Manage access to projects, folders, and organizations . 
-  In the Google Cloud console, go to the Organization policiespage. 
-  In the project selector, select the organization that you want to disable the iam.disableServiceAccountCreationconstraint for.
-  In the Filterfield, enter iam.disableServiceAccountCreation. Then, in the policy list, click Disable service account creation.
-  Click Manage policy. 
-  In the Policy sourcesection, ensure that Override parent's policyis selected. 
-  Under Enforcement, turn off enforcement for this organization policy constraint. 
-  Click Set policy. 
 
-  
-  To exempt your project from enforcement, do the following: - Ensure that you have the Tag Administrator role ( roles/resourcemanager.tagAdmin) and the Organization Policy Administrator role (roles/orgpolicy.policyAdmin) at the organization level. To learn how to grant roles at the organization level, see Manage access to projects, folders, and organizations .
-  At the organization level, create a tag key and tag value that you will use to define whether a resource should be exempt from the organization policy. We recommend creating a tag with the key disableServiceAccountCreationand the valuesenforcedandnot_enforced.To learn how to create tag keys and tag values, see Creating and defining a new tag . 
-  Attach the disableServiceAccountCreationtag to the organization and set its value toenforced. All resources in the organization inherit this tag value, unless it's overwritten with a different tag value.To learn how to attach tags to resources, see Attaching tags to resources . 
- For each project or folder that you want to exempt from the organization policy, attach the disableServiceAccountCreationtag and set its value tonot_enforced. Setting a tag value for a project or folder in this way overrides the tag value inherited from the organization.
-  Create or update the organization policy that prevents the creation of service accounts so that it doesn't enforce the constraint for exempt resources. This policy should have the following rules: -  Configure the iam.disableServiceAccountCreationconstraint to not be enforced on any resources with thedisableServiceAccountCreation: not_enforcedtag. The condition in this rule should look like the following:"resource.matchTag(' ORGANIZATION_ID /disableServiceAccountCreation', 'not_enforced')" 
- Configure the iam.disableServiceAccountCreationconstraint to be enforced on all other resources.
 
-  
 
- Ensure that you have the Tag Administrator role ( 
Troubleshoot granting roles to default service accounts
Default service accounts are created automatically when you use certain Google Cloud services. They have the following identifiers:
- App Engine service default service account: PROJECT_ID @appspot.gserviceaccount.com
- Compute Engine default service account: PROJECT_NUMBER -compute@developer.gserviceaccount.com
All default service accounts are automatically granted the Editor role
( roles/editor 
) when they're created, unless that behavior is disabled by an
organization policy. There are two organization policy constraints that prevent
the Editor role from being granted to the default service accounts:
-  iam.automaticIamGrantsForDefaultServiceAccounts: A predefined constraint that prevents the default service accounts from being granted roles automatically. This constraint doesn't prevent you from later granting the Editor role to default service accounts.
-  constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts: A managed constraint that prevents the Editor and Owner (roles/owner) roles from ever being granted to the default service accounts.
Granting basic roles to service accounts error
If the iam.automaticIamGrantsForDefaultServiceAccounts 
constraint or the constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts 
constraint is enforced for your project, then workloads in your project that
use the default service accounts might encounter insufficient permission errors.
To learn which roles to grant to a default service account, see Recommended resolution for granting roles to default service
accounts 
.
The iam.automaticIamGrantsForDefaultServiceAccounts 
constraint doesn't cause
errors on its own. However, because of this constraint, it's possible that a
workload that uses the default service account won't have the permissions that
it needs.
Additionally, if the constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts 
constraint is enforced for your project, then you'll see an error message like
the following if you try to grant the Owner or Editor role to a default service
account:
Console
In the Google Cloud console, a dialog appears with the heading IAM policy
updated failed. The dialog states that the changes you are trying to make to
your IAM policy have been restricted by your organization policy
administrator, then lists the constraints blocking the updated. The constraints
listed includes the customConstraints/custom.cantGrantProjectIamAdmin 
constraint.
gcloud
  ERROR: (gcloud.projects.set-iam-policy) FAILED_PRECONDITION 
 : 
  
 Operation denied by 
 org policy on resource ' RESOURCE_ID 
' 
 : 
 [ 
 "constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts" 
 : 
 "When 
  
 this 
  
 constraint 
  
 is 
  
 enforced, 
  
 it 
  
 prevents 
  
 anyone 
  
 from 
  
 granting 
  
 the 
  
 Editor 
 role 
  
 (roles/editor) 
  
 or 
  
 the 
  
 Owner 
  
 role 
  
 (roles/owner) 
  
 to 
  
 the 
  
 Compute 
  
 Engine 
  
 and 
 App 
  
 Engine 
  
 default 
  
 service 
  
 accounts, 
  
 at 
  
 any 
  
 time. 
  
 To 
  
 learn 
  
 more 
  
 about 
  
 default 
 service 
  
 accounts, 
  
 see 
 https://cloud.google.com/iam/help/service-accounts/default. 
  
 Enforcing 
  
 this 
 constraint 
  
 prevents 
  
 the 
  
 default 
  
 service 
  
 accounts 
  
 from 
  
 automatically 
  
 being 
 granted 
  
 the 
  
 Editor 
  
 role 
  
 (roles/editor). 
  
 This 
  
 might 
  
 cause 
  
 permission 
  
 issues 
  
 for 
 services 
  
 that 
  
 use 
  
 these 
  
 service 
  
 accounts. 
  
 To 
  
 learn 
  
 which 
  
 roles 
  
 to 
  
 grant 
  
 to 
  
 each 
 service 
  
 account, 
  
 see 
 https://cloud.google.com/iam/help/service-accounts/troubleshoot-roles-default." 
 ] 
 . 
 
 
REST
  { 
  
 "error" 
 : 
  
 { 
  
 "code" 
 : 
  
 400 
 , 
  
 "message" 
 : 
  
 "Operation denied by org policy on resource 
 ' RESOURCE_ID 
': 
 [\"constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts\": 
 \"When this constraint is enforced, it prevents anyone from granting the 
 Editor role (roles/editor) or the Owner role (roles/owner) to the Compute 
 Engine and App Engine default service accounts, at any time. To learn more 
 about default service accounts, see 
 https://cloud.google.com/iam/help/service-accounts/default.\n Enforcing this 
 constraint prevents the default service accounts from automatically being 
 granted the Editor role (roles/editor). This might cause permission issues 
 for services that use these service accounts. To learn which roles to grant 
 to each service account, see 
 https://cloud.google.com/iam/help/service-accounts/troubleshoot-roles-default.\"]." 
 , 
  
 "status" 
 : 
  
 "FAILED_PRECONDITION" 
 , 
  
 "details" 
 : 
  
 [ 
  
 { 
  
 "@type" 
 : 
  
 "type.googleapis.com/google.rpc.ErrorInfo" 
 , 
  
 "reason" 
 : 
  
 "CUSTOM_ORG_POLICY_VIOLATION" 
 , 
  
 "domain" 
 : 
  
 "googleapis.com" 
 , 
  
 "metadata" 
 : 
  
 { 
  
 "customConstraints" 
 : 
  
 "constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts" 
 , 
  
 "resource" 
 : 
  
 "projects/ PROJECT_ID 
" 
  
 } 
  
 } 
  
 ] 
  
 } 
 } 
 
 
Recommended resolution for granting roles to default service accounts
If an organization policy prevents you from granting the Editor or Owner role to a default service account, then you should find a less permissive role to grant to the service account. The role that the service account needs depends on the service you're using and the tasks you want to accomplish.
Review the following table to determine which role to grant to which default service account, depending on the service you're using:
| Service | Default service account | Role to grant | 
|---|---|---|
|   
App Engine | App Engine default service account (  PROJECT_ID 
@appspot.gserviceaccount.com) | Cloud Build Account role ( roles/cloudbuild.builds.builder) | 
|   
Compute Engine | Compute Engine default service account
      (  PROJECT_NUMBER 
-compute@developer.gserviceaccount.com) | The roles that the default service account needs depend on the task that you want to accomplish. To figure out which roles are required, review the documentation for the task that you want to accomplish, or review Find the right predefined roles . When deciding which role to grant, follow the best practices described on the Service accounts page in the Compute Engine documentation. | 
|   
Cloud Build | Compute Engine default service account
      (  PROJECT_NUMBER 
-compute@developer.gserviceaccount.com) | Cloud Build Service Account role ( roles/cloudbuild.builds.builder) | 
|   
Cloud Deploy | Compute Engine default service account
      (  PROJECT_NUMBER 
-compute@developer.gserviceaccount.com) | To see which roles to grant to this service account, find the Cloud Deploy quickstart that corresponds with your use case, then grant the roles described in that quickstart. For a list of Cloud Deploy quickstarts, see Quickstarts in the Cloud Deploy documentation. | 
|   
Cloud Run functions and Cloud Functions | Compute Engine default service account
      (  PROJECT_NUMBER 
-compute@developer.gserviceaccount.com) | To deploy functions: Cloud Build Account role (  For more information, see Custom service account for Cloud Build . | 
|   
Cloud Run | Compute Engine default service account
      (  PROJECT_NUMBER 
-compute@developer.gserviceaccount.com) | The roles that the default service account needs depend on the task that you want to accomplish. To figure out which roles are required, review the documentation for the task that you want to accomplish, or review Find the right predefined roles . For details about Cloud Run roles, see Access control with IAM in the Cloud Run documentation. | 
|   
Google Kubernetes Engine | Compute Engine default service account
      (  PROJECT_NUMBER 
-compute@developer.gserviceaccount.com) | Kubernetes Engine Default Node Service Account role (  For more information, see Use least privilege IAM service accounts . | 
|   
Workflows | Compute Engine default service account
      (  PROJECT_NUMBER 
-compute@developer.gserviceaccount.com) | The roles that the default service account needs depend on the task that you want to accomplish. To figure out which roles are required, review the documentation for the task that you want to accomplish, or review Find the right predefined roles . Follow the best practices described on the Grant a workflow permission to access Google Cloud resources page in the Workflows documentation. | 

