En esta página se explica cómo denegar el acceso a las entidades impidiéndoles usar permisos específicos de Gestión de Identidades y Accesos (IAM).
En Gestión de Identidades y Accesos, se deniega el acceso con políticas de denegación. Cada política de denegación se adjunta a una organización, una carpeta o un proyecto. Google Cloud Una política de denegación contiene reglas de denegación, que identifican entidades principales y enumeran los permisos que no pueden usar.
Las políticas de denegación son independientes de las políticas de permiso, también conocidas como políticas de gestión de identidades y accesos. Una política de permiso proporciona acceso a los recursos concediendo roles de gestión de identidades y accesos a las entidades principales.
Puedes gestionar las políticas de denegación con la consola de Google Cloud , la CLI de Google Cloud o la API REST de v2 de gestión de identidades y accesos.
Antes de empezar
Enable the IAM API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.Configura la autenticación.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Terraform
Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Configurar ADC para un entorno de desarrollo local en la documentación de autenticación Google Cloud .
Go
Para usar las Go muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Configurar ADC para un entorno de desarrollo local en la documentación de autenticación Google Cloud .
Java
Para usar las Java muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Configurar ADC para un entorno de desarrollo local en la documentación de autenticación Google Cloud .
Node.js
Para usar las Node.js muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Configurar ADC para un entorno de desarrollo local en la documentación de autenticación Google Cloud .
Python
Para usar las Python muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Configurar ADC para un entorno de desarrollo local en la documentación de autenticación Google Cloud .
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre Google Cloud autenticación.
Consulta la información general sobre las políticas de denegación.
Roles obligatorios
Para obtener los permisos que necesitas para gestionar las políticas de denegación, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en la organización:
-
Para ver las políticas de denegación, sigue estos pasos:
Revisor de denegaciones (
roles/iam.denyReviewer) -
Para ver, crear, actualizar y eliminar políticas de denegación, haz lo siguiente:
Deny Admin (
roles/iam.denyAdmin)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para gestionar las políticas de denegación. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Se necesitan los siguientes permisos para gestionar las políticas de denegación:
-
Para ver las políticas de denegación, sigue estos pasos:
-
iam.denypolicies.get -
iam.denypolicies.list
-
-
Para crear, actualizar y eliminar políticas de denegación, sigue estos pasos:
-
iam.denypolicies.create -
iam.denypolicies.delete -
iam.denypolicies.get -
iam.denypolicies.update
-
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Identificar los permisos que se deben denegar
Antes de crear una política de denegación, debes decidir qué permisos quieres denegar y a qué principales.
Solo se pueden denegar algunos permisos. Para ver una lista de los permisos que puedes denegar, consulta Permisos admitidos en las políticas de denegación.
En algunos casos, también puedes usar grupos de permisos para denegar conjuntos de permisos. Para obtener más información, consulta Grupos de permisos.
Las políticas de denegación se gestionan con la API REST
v2, que requiere un formato especial para los nombres de los permisos. Por ejemplo, el permiso para crear un rol personalizado de gestión de identidades y accesos se denomina de la siguiente manera:v1API:iam.roles.createv2API:iam.googleapis.com/roles.create
Crear una política de denegación
Puedes añadir políticas de denegación a organizaciones, carpetas y proyectos. Cada recurso puede tener hasta 500 políticas de denegación.
Las políticas de denegación contienen reglas de denegación, que especifican lo siguiente:
- Los permisos que se van a denegar.
- Las entidades a las que se les deniegan esos permisos.
Opcional: principales que están exentos de la denegación de permisos.
Por ejemplo, puedes denegar un permiso a un grupo, pero eximir a usuarios específicos que pertenezcan a ese grupo.
Opcional: una expresión de condición que especifica cuándo no pueden usar los permisos las entidades. En las políticas de denegación, las expresiones de condición solo pueden usar funciones para etiquetas de recursos. No se admiten otras funciones ni operadores.
Cada recurso puede tener hasta 500 reglas de denegación en todas las políticas de denegación asociadas.
Las políticas de denegación se heredan a través de la jerarquía de recursos. Por ejemplo, si deniegas un permiso a nivel de organización, ese permiso también se denegará en las carpetas y los proyectos de esa organización, así como en los recursos específicos del servicio de cada proyecto.
Las políticas de denegación prevalecen sobre las políticas de permiso. Si a una entidad se le asigna un rol que contiene un permiso específico, pero una política de denegación indica que la entidad no puede usar ese permiso, la entidad no podrá usarlo.
Consola
En la Google Cloud consola, ve a la pestaña Denegar de la página Gestión de identidades y accesos.
Selecciona un proyecto, una carpeta o una organización.
Haz clic en Crear política de denegación.
En la sección Nombre de la política, define el ID de la política de una de las siguientes formas:
- En el campo Nombre visible, introduce un nombre visible para la política. Al rellenar este campo, se rellena automáticamente el campo ID. Si quieres cambiar el ID de la política, actualiza el texto del campo ID.
- En el campo ID, introduce un ID para la política.
En la sección Reglas de denegación, define las reglas de denegación de la política. Cada política de denegación debe tener al menos una regla de denegación. Para añadir más reglas de denegación, haz clic en Añadir regla de denegación.
En cada regla de denegación, haga lo siguiente:
- En el campo Principales denegados, añade uno o varios principales a los que quieras impedir que usen los permisos especificados. La entidad principal puede ser cualquiera de los tipos de entidades principales de los identificadores de entidades principales de las políticas de denegación, excepto las entidades principales cuyos IDs empiecen por
deleted:. Opcional: En el campo Entidades principales de excepción, añada las entidades principales que quiera que puedan usar los permisos especificados, aunque estén incluidas en la sección Entidades principales denegadas. Por ejemplo, puedes usar este campo para hacer una excepción con usuarios concretos que pertenezcan a un grupo denegado.
En las secciones Permisos denegados, añade los permisos que quieras denegar. Los permisos deben admitirse en las políticas de denegación.
En algunos casos, también puedes usar grupos de permisos para denegar conjuntos de permisos. Para obtener más información, consulta Grupos de permisos.
Opcional: Añade permisos de excepción. Los permisos de excepción son permisos que no quieres que deniegue esta regla de denegación, aunque estén incluidos en la lista de permisos denegados. Por ejemplo, puedes usar este campo para crear excepciones de permisos específicos en un grupo de permisos.
Para añadir permisos de excepción, haz clic en Permisos de excepción, en Añadir otro permiso y, a continuación, introduce el permiso en el campo Permiso 1. Sigue añadiendo permisos hasta que hayas añadido todos los que quieras excluir de la política de denegación.
Opcional: Añade una condición de denegación para especificar cuándo no pueden usar los principales el permiso. Para añadir una condición de denegación, haga clic en Añadir condición de denegación y, a continuación, defina los siguientes campos:
- Título: opcional. Un breve resumen del propósito de la condición.
- Descripción: opcional. Una descripción más larga de la condición.
Expresión condicional: puedes añadir una expresión condicional con el Creador de condiciones o el Editor de condiciones. El creador de condiciones proporciona una interfaz interactiva para seleccionar el tipo de condición, el operador y otros detalles aplicables de la expresión. El editor de condiciones proporciona una interfaz basada en texto para introducir manualmente una expresión con la sintaxis del lenguaje de expresión común (CEL).
Las condiciones de denegación deben basarse en etiquetas de recursos. No se admiten otras funciones ni operadores.
- En el campo Principales denegados, añade uno o varios principales a los que quieras impedir que usen los permisos especificados. La entidad principal puede ser cualquiera de los tipos de entidades principales de los identificadores de entidades principales de las políticas de denegación, excepto las entidades principales cuyos IDs empiecen por
Haz clic en Crear.
gcloud
Para crear una política de denegación para un recurso, empieza por crear un archivo JSON que contenga la política. Una política de denegación usa el siguiente formato:
{ "displayName": "POLICY_NAME", "rules": [ { "denyRule": DENY_RULE_1 }, { "denyRule": DENY_RULE_2 }, { "denyRule": DENY_RULE_N } ] }
Proporciona los siguientes valores:
POLICY_NAME: nombre visible de la política de denegación.-
DENY_RULE_1,DENY_RULE_2,...DENY_RULE_N: las reglas de denegación de la política. Cada regla de denegación puede contener los siguientes campos:-
deniedPermissions: lista de permisos que no pueden usar las entidades de seguridad especificadas. Los permisos deben admitirse en las políticas de denegación.En algunos casos, también puedes usar grupos de permisos para denegar conjuntos de permisos. Para obtener más información, consulta Grupos de permisos.
-
exceptionPermissions: lista de permisos que pueden usar las entidades de seguridad especificadas, aunque esos permisos estén incluidos endeniedPermissions. Por ejemplo, puede usar este campo para crear excepciones de permisos específicos en un grupo de permisos. -
deniedPrincipals: Lista de principales que no pueden usar los permisos especificados. Para saber cómo dar formato a los identificadores de principales, consulte Identificadores de principales de las políticas de denegación. -
exceptionPrincipals: opcional. Lista de principales que pueden usar los permisos especificados, aunque estén incluidos endeniedPrincipals. Por ejemplo, puedes usar este campo para hacer una excepción con usuarios concretos que pertenezcan a un grupo denegado. Para saber cómo dar formato a los identificadores de principales, consulte Identificadores de principales de las políticas de denegación. -
denialCondition: opcional. Una expresión de condición que especifica cuándo no pueden usar los permisos las entidades. Contiene los siguientes campos:-
expression: una expresión de condición que usa la sintaxis del lenguaje de expresión común (CEL). La expresión debe usar las funciones de CEL para evaluar etiquetas de recursos. No se admiten otras funciones ni operadores. -
title: opcional. Un breve resumen del propósito de la condición. -
description: opcional. Una descripción más larga de la condición.
-
Para ver ejemplos de reglas de denegación, consulta Casos prácticos habituales.
-
Por ejemplo, la siguiente política de denegación contiene una regla de denegación que deniega un permiso a Lucian:
{ "displayName": "My deny policy.", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }A continuación, ejecuta el comando
gcloud iam policies create:gcloud iam policies create POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --policy-file=POLICY_FILE
Proporciona los siguientes valores:
-
POLICY_ID: identificador de la política de denegación. -
ATTACHMENT_POINT: identificador del recurso al que se adjunta la política de denegación. Para saber cómo dar formato a este valor, consulte Punto de fijación. -
POLICY_FILE: la ruta del archivo JSON que contiene la política de denegación.
De forma predeterminada, si este comando se ejecuta correctamente, no muestra ningún resultado. Para imprimir una respuesta detallada, añade la marca
--format=jsonal comando.Por ejemplo, el siguiente comando crea una política de denegación llamada
my-deny-policypara el proyectomy-project, usando un archivo llamadopolicy.json:gcloud iam policies create my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --policy-file=policy.jsonTerraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform. Para obtener más información, consulta la documentación de referencia del proveedor Terraform.