El servicio de políticas de la organización tiene varias restricciones predefinidas y administradas que pueden afectar a las cuentas de servicio de tu organización. En esta página, se explica qué errores generan esas políticas de la organización y los pasos que puedes seguir para resolverlos.
Soluciona problemas relacionados con la creación de claves de cuentas de servicio inhabilitadas
Si se aplica la restricción iam.disableServiceAccountKeyCreation
a tu organización, no podrás crear claves para ninguna cuenta de servicio en tu organización. Para obtener más información sobre esta restricción, consulta
Cómo inhabilitar la creación de claves de cuentas de servicio.
Error de creación de claves
Si intentas crear una clave de cuenta de servicio, pero la restricción iam.disableServiceAccountKeyCreation
bloquea la acción, recibirás el siguiente mensaje de error:
Console
En la consola de Google Cloud, aparece un diálogo con el encabezado Se inhabilitó la creación de claves de cuenta de servicio. El diálogo indica que la restricción iam.disableServiceAccountKeyCreation
se aplica a tu organización.
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%40PROJECT_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%40PROJECT_ID.iam.gserviceaccount.com",
"description": "Key creation is not allowed on this service account."
}
]
}
]
}
}
Resolución recomendada para el error de creación de claves de la cuenta de servicio
Si una política de la organización te impide crear una clave de cuenta de servicio, te recomendamos que hagas lo siguiente:
Evalúa si se necesita una clave de cuenta de servicio.
No recomendamos usar claves de cuenta de servicio para la autenticación. Esto se debe a que las claves de cuenta de servicio pueden convertirse en un riesgo para la seguridad si no se administran de forma adecuada, lo que aumenta la vulnerabilidad a amenazas como filtración de credenciales, elevación de privilegios, divulgación de información y no repudio.
En la mayoría de los casos, debes usar una alternativa más segura para autenticarte en lugar de usar una clave de cuenta de servicio.
Si se necesita una clave de cuenta de servicio para tu caso de uso, inhabilita la restricción
iam.disableServiceAccountKeyCreation
para tu proyecto.
Para inhabilitar la restricción de la política de la organización, desactiva la aplicación de la restricción o exime tu proyecto de la aplicación:
Para desactivar la aplicación de la restricción para toda la organización, haz lo siguiente:
Asegúrate de tener el rol de administrador de políticas de la organización (
roles/orgpolicy.policyAdmin
) a nivel de la organización. Este rol solo está disponible para otorgar en organizaciones y no aparece en la lista de roles de los proyectos.Si deseas obtener información para otorgar roles a nivel de la organización, consulta Administra el acceso a proyectos, carpetas y organizaciones.
En la consola de Google Cloud, ve a la página Políticas de la organización.
En el selector de proyectos, selecciona la organización para la que deseas inhabilitar la restricción
iam.disableServiceAccountKeyCreation
.En el campo Filtro, ingresa
iam.disableServiceAccountKeyCreation
. Luego, en la lista de políticas, haz clic en Inhabilitar la creación de claves de cuentas de servicio.Haz clic en Administrar política.
En la sección Fuente de la política, asegúrate de que esté seleccionada la opción Anular la política del elemento superior.
En Aplicación, desactiva la aplicación de esta restricción de la política de la organización.
Haz clic en Establecer política.
Para eximir tu proyecto de la aplicación forzosa, haz lo siguiente:
-
Asegúrate de tener el rol de administrador de etiquetas (
roles/resourcemanager.tagAdmin
) y el rol de administrador de políticas de la organización (roles/orgpolicy.policyAdmin
) a nivel de la organización. Si deseas obtener información para otorgar roles a nivel de la organización, consulta Administra el acceso a proyectos, carpetas y organizaciones. -
A nivel de la organización, crea una clave y un valor de etiqueta que usarás para definir si un recurso debe estar exento de la política de la organización. Recomendamos crear una etiqueta con la clave
disableServiceAccountKeyCreation
y los valoresenforced
ynot_enforced
.Para aprender a crear claves y valores de etiqueta, consulta Crea y define una etiqueta nueva.
-
Adjunta la etiqueta
disableServiceAccountKeyCreation
a la organización y configúrala con el valorenforced
. Todos los recursos de la organización heredan este valor de etiqueta, a menos que se reemplace por un valor de etiqueta diferente.Para obtener información sobre cómo adjuntar etiquetas a los recursos, consulta Adjunta etiquetas a los recursos.
-
Para cada cuenta de servicio que desees eximir de la política de la organización, adjunta la etiqueta
disableServiceAccountKeyCreation
y establece su valor ennot_enforced
. Configurar un valor de etiqueta para una cuenta de servicio de esta manera anula el valor de la etiqueta heredado de la organización. -
Crea o actualiza la política de la organización que impide la creación de claves de cuentas de servicio para que no aplique la restricción para los recursos exentos. Esta política debe tener las siguientes reglas:
-
Configura la restricción
iam.disableServiceAccountKeyCreation
para que no se aplique en ningún recurso con la etiquetadisableServiceAccountKeyCreation: not_enforced
. La condición en esta regla debería verse de la siguiente manera:"resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyCreation', 'not_enforced')"
- Configura la restricción
iam.disableServiceAccountKeyCreation
para que se aplique en todos los demás recursos.
-
-
Asegúrate de tener el rol de administrador de etiquetas (
Soluciona problemas relacionados con la creación de cuentas de servicio inhabilitadas
Si se aplica la restricción iam.disableServiceAccountCreation
a tu organización, no podrás crear cuentas de servicio en ningún proyecto de tu organización. Para obtener más información sobre esta restricción, consulta Cómo inhabilitar la creación de cuentas de servicio.
Error de creación de la cuenta de servicio
Si intentas crear una cuenta de servicio, pero la restricción iam.disableServiceAccountCreation
bloquea la acción, recibirás el siguiente mensaje de error:
Console
En la consola de Google Cloud, aparece un diálogo con el encabezado Falló la creación de la cuenta de servicio. El diálogo indica que se produjo un error en la acción que intentas realizar. Vuelve a intentarlo.
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."
}
]
}
]
}
}
Resolución recomendada para el error de creación de la cuenta de servicio
Si una política de la organización te impide crear una cuenta de servicio, te recomendamos que hagas lo siguiente:
Evalúa si se necesita una cuenta de servicio.
Revisa Elige cuándo usar las cuentas de servicio para confirmar que se necesita una cuenta de servicio para tu caso de uso.
Si se necesita una cuenta de servicio para tu caso de uso, inhabilita la restricción
iam.disableServiceAccountCreation
para tu proyecto.
Para inhabilitar la restricción de la política de la organización, desactiva la aplicación de la restricción o exime tu proyecto de la aplicación:
Para desactivar la aplicación de la restricción para toda la organización, haz lo siguiente:
Asegúrate de tener el rol de administrador de políticas de la organización (
roles/orgpolicy.policyAdmin
) a nivel de la organización. Este rol solo está disponible para otorgar en organizaciones y no aparece en la lista de roles de los proyectos.Si deseas obtener información para otorgar roles a nivel de la organización, consulta Administra el acceso a proyectos, carpetas y organizaciones.
En la consola de Google Cloud, ve a la página Políticas de la organización.
En el selector de proyectos, selecciona la organización para la que deseas inhabilitar la restricción
iam.disableServiceAccountCreation
.En el campo Filtro, ingresa
iam.disableServiceAccountCreation
. Luego, en la lista de políticas, haz clic en Inhabilitar la creación de cuentas de servicio.Haz clic en Administrar política.
En la sección Fuente de la política, asegúrate de que esté seleccionada la opción Anular la política del elemento superior.
En Aplicación, desactiva la aplicación de esta restricción de la política de la organización.
Haz clic en Establecer política.
Para eximir tu proyecto de la aplicación forzosa, haz lo siguiente:
-
Asegúrate de tener el rol de administrador de etiquetas (
roles/resourcemanager.tagAdmin
) y el rol de administrador de políticas de la organización (roles/orgpolicy.policyAdmin
) a nivel de la organización. Si deseas obtener información para otorgar roles a nivel de la organización, consulta Administra el acceso a proyectos, carpetas y organizaciones. -
A nivel de la organización, crea una clave y un valor de etiqueta que usarás para definir si un recurso debe estar exento de la política de la organización. Recomendamos crear una etiqueta con la clave
disableServiceAccountCreation
y los valoresenforced
ynot_enforced
.Para aprender a crear claves y valores de etiqueta, consulta Crea y define una etiqueta nueva.
-
Adjunta la etiqueta
disableServiceAccountCreation
a la organización y configúrala con el valorenforced
. Todos los recursos de la organización heredan este valor de etiqueta, a menos que se reemplace por un valor de etiqueta diferente.Para obtener información sobre cómo adjuntar etiquetas a los recursos, consulta Adjunta etiquetas a los recursos.
-
Para cada proyecto o carpeta que desees eximir de la política de la organización, adjunta la etiqueta
disableServiceAccountCreation
y establece su valor ennot_enforced
. Configurar un valor de etiqueta para un proyecto o carpeta de esta manera anula el valor de la etiqueta heredado de la organización. -
Crea o actualiza la política de la organización que impide la creación de cuentas de servicio para que no aplique la restricción para los recursos exentos. Esta política debe tener las siguientes reglas:
-
Configura la restricción
iam.disableServiceAccountCreation
para que no se aplique en ningún recurso con la etiquetadisableServiceAccountCreation: not_enforced
. La condición en esta regla debería verse de la siguiente manera:"resource.matchTag('ORGANIZATION_ID/disableServiceAccountCreation', 'not_enforced')"
- Configura la restricción
iam.disableServiceAccountCreation
para que se aplique en todos los demás recursos.
-
-
Asegúrate de tener el rol de administrador de etiquetas (
Soluciona problemas relacionados con la asignación de roles a cuentas de servicio predeterminadas
Las cuentas de servicio predeterminadas se crean automáticamente cuando usas ciertos servicios de Google Cloud. Tienen los siguientes identificadores:
- Cuenta de servicio predeterminada del servicio de App Engine:
PROJECT_ID@appspot.gserviceaccount.com
- Cuenta de servicio predeterminada de Compute Engine:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
A todas las cuentas de servicio predeterminadas se les otorga automáticamente el rol de Editor (roles/editor
) cuando se crean, a menos que una política de la organización inhabilite ese comportamiento. Hay dos restricciones de la política de la organización que impiden que se otorgue el rol de Editor a las cuentas de servicio predeterminadas:
iam.automaticIamGrantsForDefaultServiceAccounts
: Es una restricción predefinida que evita que se otorguen roles automáticamente a las cuentas de servicio predeterminadas. Esta restricción no te impide otorgar más adelante el rol de editor a las cuentas de servicio predeterminadas.constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
: Es una restricción administrada que evita que los roles de editor y propietario (roles/owner
) se otorguen a las cuentas de servicio predeterminadas.
Error de otorgamiento de roles básicos a cuentas de servicio
Si se aplica la restricción iam.automaticIamGrantsForDefaultServiceAccounts
o constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
a tu proyecto, es posible que las cargas de trabajo de tu proyecto que usan las cuentas de servicio predeterminadas encuentren errores de permisos insuficientes.
Para obtener información sobre qué roles otorgar a una cuenta de servicio predeterminada, consulta Recomendación para otorgar roles a cuentas de servicio predeterminadas.
La restricción iam.automaticIamGrantsForDefaultServiceAccounts
no genera errores por sí sola. Sin embargo, debido a esta restricción, es posible que una carga de trabajo que use la cuenta de servicio predeterminada no tenga los permisos que necesita.
Además, si se aplica la restricción constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
a tu proyecto, verás un mensaje de error como el siguiente si intentas otorgar el rol de propietario o editor a una cuenta de servicio predeterminada:
Console
En la consola de Google Cloud, aparece un diálogo con el encabezado Error de actualización de la política de IAM. El diálogo indica que el administrador de políticas de la organización restringió los cambios que intentas realizar en tu política de IAM y, luego, enumera las restricciones que bloquean la actualización. Las restricciones que se enumeran incluyen la restricción customConstraints/custom.cantGrantProjectIamAdmin
.
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"
}
}
]
}
}
Resolución recomendada para otorgar roles a las cuentas de servicio predeterminadas
Si una política de la organización te impide otorgar el rol de Editor o Propietario a una cuenta de servicio predeterminada, debes encontrar un rol menos permisivo para otorgarle a la cuenta de servicio. El rol que necesita la cuenta de servicio depende del servicio que usas y de las tareas que deseas realizar.
Revisa la siguiente tabla para determinar qué rol otorgar a qué cuenta de servicio predeterminada, según el servicio que uses:
Servicio | Cuenta de servicio predeterminada | Rol que se otorgará |
---|---|---|
App Engine |
Cuenta de servicio predeterminada de App Engine (PROJECT_ID@appspot.gserviceaccount.com )
|
Rol de la cuenta de Cloud Build (roles/cloudbuild.builds.builder )
|
Compute Engine |
Cuenta de servicio predeterminada de Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Los roles que necesita la cuenta de servicio predeterminada dependen de la tarea que desees realizar. Para saber qué roles son necesarios, revisa la documentación de la tarea que deseas realizar o consulta Elige roles predefinidos. Cuando decidas qué rol otorgar, sigue las prácticas recomendadas que se describen en la página Cuentas de servicio de la documentación de Compute Engine. |
Cloud Build |
Cuenta de servicio predeterminada de Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Rol de la cuenta de servicio de Cloud Build (roles/cloudbuild.builds.builder )
|
Cloud Deploy |
Cuenta de servicio predeterminada de Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Para ver qué roles otorgar a esta cuenta de servicio, busca la guía de inicio rápido de Cloud Deploy que corresponda a tu caso de uso y, luego, otorga los roles que se describen en esa guía. Para obtener una lista de las guías de inicio rápido de Cloud Deploy, consulta Guías de inicio rápido en la documentación de Cloud Deploy. |
Funciones de Cloud Run y Cloud Functions |
Cuenta de servicio predeterminada de Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Para implementar funciones: Rol de cuenta de Cloud Build ( Para obtener más información, consulta Cuenta de servicio personalizada para Cloud Build. |
Cloud Run |
Cuenta de servicio predeterminada de Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Los roles que necesita la cuenta de servicio predeterminada dependen de la tarea que desees realizar. Para saber qué roles son necesarios, revisa la documentación de la tarea que deseas realizar o consulta Elige roles predefinidos. Para obtener detalles sobre los roles de Cloud Run, consulta Control de acceso con IAM en la documentación de Cloud Run. |
Google Kubernetes Engine |
Cuenta de servicio predeterminada de Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Rol de la cuenta de servicio predeterminada de nodos de Kubernetes Engine ( Para obtener más información, consulta Usa cuentas de servicio de IAM con privilegios mínimos. |
Workflows |
Cuenta de servicio predeterminada de Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Los roles que necesita la cuenta de servicio predeterminada dependen de la tarea que desees realizar. Para determinar qué roles son necesarios, revisa la documentación de la tarea que deseas realizar o consulta Elige roles predefinidos. Sigue las prácticas recomendadas que se describen en la página Otorga permiso a un flujo de trabajo para acceder a recursos de Google Cloud en la documentación de Workflows. |