En esta página, se explica cómo denegar el acceso de las principales evitando que usen permisos específicos de Identity and Access Management (IAM).
En IAM, deniegas el acceso con políticas de denegación. Cada política de denegación está vinculada a una organización, una carpeta o un proyecto de Google Cloud. Una política de denegación contiene reglas de denegación, que identifican las principales y enumeran los permisos que las principales no pueden usar.
Las políticas de denegación son independientes de las políticas de permiso, también conocidas como políticas de IAM. Una política de permiso proporciona acceso a los recursos mediante la asignación de funciones de IAM a las principales.
Puedes administrar las políticas de denegación con Google Cloud CLI o la API de REST v2
de IAM.
Antes de comenzar
Enable the IAM API.
Configura la autenticación.
Select the tab for how you plan to use the samples on this page:
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 gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local en la documentación de autenticación de Google Cloud.
Go
Para usar las muestras de Go de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local en la documentación de autenticación de Google Cloud.
Java
Para usar las muestras de Java de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local en la documentación de autenticación de Google Cloud.
Node.js
Para usar las muestras de Node.js de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local en la documentación de autenticación de Google Cloud.
Python
Para usar las muestras de Python de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local en la documentación de autenticación de Google Cloud.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Roles obligatorios
Si deseas obtener los permisos que necesitas para administrar las políticas de denegación, pídele al administrador que te otorgue los siguientes roles de IAM en la organización:
- Para ver las políticas de denegación, otorga:
Revisor de denegaciones (
roles/iam.denyReviewer
) - Para ver, crear, actualizar y borrar políticas de denegación, otorga: Administrador de denegación (
roles/iam.denyAdmin
)
Si quieres obtener más información para otorgar roles, consulta Administra el acceso.
Estas funciones predefinidas contienen los permisos necesarios para administrar las políticas de denegación. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para administrar las políticas de denegación:
-
Para ver las políticas de denegación, haz lo siguiente:
-
iam.denypolicies.get
-
iam.denypolicies.list
-
-
Para crear, actualizar y borrar políticas de denegación, otorga:
-
iam.denypolicies.create
-
iam.denypolicies.delete
-
iam.denypolicies.get
-
iam.denypolicies.update
-
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Identifica los permisos para denegar
Antes de crear una política de denegación, debes decidir qué permisos deseas denegar y a qué principales deben denegarse.
Solo se pueden denegar algunos permisos. Para obtener 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 administran con la API de REST
v2
, que requiere un formato especial para los nombres de los permisos. Por ejemplo, el permiso para crear un rol personalizada de IAM tiene el siguiente nombre:v1
API:iam.roles.create
v2
API:iam.googleapis.com/roles.create
Identifica el punto de conexión
Cada política de denegación se adjunta a una organización, carpeta o proyecto. Cuando se adjuntan a uno de estos recursos, todos los recursos de nivel inferior de ese proyecto, carpeta u organización heredan las políticas de denegación. Para trabajar con políticas de denegación, necesitas un identificador del recurso al que se adjunta la política de denegación, que se denomina punto de conexión. Este identificador usa uno de los siguientes formatos:
Formato de punto de conexión Organización cloudresourcemanager.googleapis.com/organizations/ORG_ID
ReemplazaORG_ID
por el ID numérico de la organización. Para la API de REST, codifica todo el valor en URL.Ejemplo de la CLI de gcloud:
cloudresourcemanager.googleapis.com/organizations/123456789012
Ejemplo de la API de REST:
cloudresourcemanager.googleapis.com%2Forganizations%2F123456789012
Carpeta cloudresourcemanager.googleapis.com/folders/FOLDER_ID
ReemplazaFOLDER_ID
por el ID de la carpeta numérica. Para la API de REST, codifica todo el valor en URL.Ejemplo de la CLI de gcloud:
cloudresourcemanager.googleapis.com/folders/987654321098
Ejemplo de la API de REST:
cloudresourcemanager.googleapis.com%2Ffolders%2F987654321098
Proyecto cloudresourcemanager.googleapis.com/projects/PROJECT_ID
ReemplazaPROJECT_ID
por el ID del proyecto alfanumérico o numérico. Para la API de REST, codifica todo el valor en URL.Ejemplo de la CLI de gcloud:
cloudresourcemanager.googleapis.com/projects/my-project
Ejemplo de la API de REST:
cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project
Crea una política de denegación
Puedes agregar 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 deben denegar.
- Las principales que a las que se deniegan esos permisos.
Opcional: Principales que están exentas de la denegación de permisos.
Por ejemplo, puedes denegar un permiso a un grupo, pero eximir a usuarios específicos que pertenecen a ese grupo.
Es una expresión de condición que especifica cuándo las principales no pueden usar los permisos. En las políticas de denegación, las expresiones de condiciones 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 sus políticas de denegación adjuntas.
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 la organización, ese permiso también se denegará en las carpetas y proyectos de esa organización y en los recursos específicos del servicio dentro de cada proyecto.
Las políticas de denegación anulan las políticas de permiso. Si a una principal se le otorga un rol que contiene un permiso específico, pero una política de denegación indica que la principal no puede usar ese permiso, la principal no puede usar el permiso.
gcloud
A fin de crear una política de denegación para un recurso, primero crea 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 } ] }
Ingresa los siguientes valores:
POLICY_NAME
: Es el nombre visible de la política de denegación.-
DENY_RULE_1
,DENY_RULE_2
,...DENY_RULE_N
: Son las reglas de denegación de la política. Cada regla de denegación puede contener estos campos:-
deniedPermissions
: Es una lista de permisos que no pueden usar las principales especificadas. Los permisos deben ser compatibles con 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.
-
deniedPrincipals
: Es una lista de principales que no pueden usar los permisos especificados. Usa el formato de la APIv2
para los identificadores principales. -
exceptionPrincipals
: Opcional Una lista de principales que pueden usar los permisos especificados, incluso si esas principales se incluyen endeniedPrincipals
. Por ejemplo, puedes usar este campo a fin de hacer una excepción para usuarios específicos que pertenecen a un grupo denegado. Usa el formato de la APIv2
para los identificadores principales. -
denialCondition
: Opcional Es una expresión de condición que especifica cuándo las principales no pueden usar los permisos. Contiene los campos siguientes:-
expression
: Es una expresión de condición que usa la sintaxis de Common Expression Language (CEL). La expresión debe usar las funciones de CEL para evaluar las etiquetas de recursos. No se admiten otras funciones ni operadores. -
title
: Opcional Es un breve resumen del propósito de la condición. -
description
: Opcional Es una descripción más larga de la condición.
-
Para ver ejemplos de reglas de denegación, consulta Casos de uso comunes.
-
Por ejemplo, la siguiente política de denegación contiene una regla de denegación, que niega un permiso al usuario
lucian@example.com
:{ "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
Ingresa los siguientes valores:
-
POLICY_ID
: Es el identificador de la política de denegación. -
ATTACHMENT_POINT
: un identificador para el recurso al que se adjunta la política de denegación. Para obtener información sobre cómo dar formato a este valor, consulta Identifica el punto de conexión en esta página. -
POLICY_FILE
: Es la ruta del archivo JSON que contiene la política de denegación.
De forma predeterminada, si este comando tiene éxito, no imprime ningún resultado. Para imprimir una respuesta detallada, agrega la marca
--format=json
al comando.Por ejemplo, el siguiente comando crea una política de denegación llamada
my-deny-policy
para el proyectomy-project
, mediante un archivo llamadopolicy.json
:gcloud iam policies create my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --policy-file=policy.json
Terraform
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform. Para obtener más información, consulta la documentación de referencia del proveedor de Terraform.
Go
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Go.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Java
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Java.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Node.js
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Node.js.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Python
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Python.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
REST
El método
policies.createPolicy
crea una política de denegación para un recurso.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
ENCODED_ATTACHMENT_POINT
: un identificador codificado en URL para el recurso al que se adjunta la política de denegación. Para obtener información sobre cómo dar formato a este valor, consulta Identifica el punto de conexión en esta página. POLICY_ID
: Es un identificador para la política de denegación.POLICY_NAME
: Es el nombre visible de la política de denegación.-
DENY_RULE_1
,DENY_RULE_2
,...DENY_RULE_N
: Son las reglas de denegación de la política. Cada regla de denegación puede contener estos campos:-
deniedPermissions
: Es una lista de permisos que no pueden usar las principales especificadas. Los permisos deben ser compatibles con 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.
-
deniedPrincipals
: Es una lista de principales que no pueden usar los permisos especificados. Usa el formato de la APIv2
para los identificadores principales. -
exceptionPrincipals
: Opcional Una lista de principales que pueden usar los permisos especificados, incluso si esas principales se incluyen endeniedPrincipals
. Por ejemplo, puedes usar este campo a fin de hacer una excepción para usuarios específicos que pertenecen a un grupo denegado. Usa el formato de la APIv2
para los identificadores principales. -
denialCondition
: Opcional Es una expresión de condición que especifica cuándo las principales no pueden usar los permisos. Contiene los campos siguientes:-
expression
: Es una expresión de condición que usa la sintaxis de Common Expression Language (CEL). La expresión debe usar las funciones de CEL para evaluar las etiquetas de recursos. No se admiten otras funciones ni operadores. -
title
: Opcional Es un breve resumen del propósito de la condición. -
description
: Opcional Es una descripción más larga de la condición.
-
Para ver ejemplos de reglas de denegación, consulta Casos de uso comunes.
-
Método HTTP y URL:
POST https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies?policyId=POLICY_ID
Cuerpo JSON de la solicitud:
{ "displayName": "POLICY_NAME", "rules": [ { "denyRule": DENY_RULE_1 }, { "denyRule": DENY_RULE_2 }, { "denyRule": DENY_RULE_N } ] }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/89cb3e508bf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2022-06-28T19:06:12.455151Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-06-28T22:26:21.968687Z" "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] } }
La respuesta identifica una operación de larga duración. Puedes supervisar el estado de la operación de larga duración para saber cuándo se completa. Para obtener más información, consulta Revisa el estado de una operación de larga duración en esta página.
Enumera las políticas de denegación
Un recurso puede tener varias políticas de denegación. Puedes enumerar todas las políticas de denegación que están conectadas a un recurso y, luego, ver cada política de denegación para ver las reglas de denegación de cada política.
gcloud
Para enumerar las políticas de denegación de un recurso, ejecuta el comando
gcloud iam policies list
:gcloud iam policies list \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
Ingresa el siguiente valor:
-
ATTACHMENT_POINT
: un identificador para el recurso al que se adjunta la política de denegación. Para obtener información sobre cómo dar formato a este valor, consulta Identifica el punto de conexión en esta página.
Por ejemplo, con el siguiente comando, se enumeran las políticas de denegación adjuntas a una organización cuyo ID numérico es
123456789012
:gcloud iam policies list \ --attachment-point=cloudresourcemanager.googleapis.com/organizations/123456789012 \ --kind=denypolicies \ --format=json
Go
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Go.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Java
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Java.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Node.js
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Node.js.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Python
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Python.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
REST
El método
policies.listPolicies
permite enumerar las políticas de denegación de un recurso.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
ENCODED_ATTACHMENT_POINT
: un identificador codificado en URL para el recurso al que se adjunta la política de denegación. Para obtener información sobre cómo dar formato a este valor, consulta Identifica el punto de conexión en esta página.
Método HTTP y URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "policies": [ { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-06-28T22:26:21.968687Z" }, { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy-2", "uid": "8465d710-ea20-0a08-d92c-b2a3ebf766ab", "kind": "DenyPolicy", "displayName": "My second deny policy.", "createTime": "2022-06-05T19:21:53.595455Z", "updateTime": "2022-06-05T19:21:53.595455Z" }, { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy-3", "uid": "ee9f7c2f-7e8c-b05c-d4e5-e03bfb2954e0", "kind": "DenyPolicy", "displayName": "My third deny policy.", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z" } ] }
Visualiza una política de denegación
Puedes ver una política de denegación para ver las reglas de denegación que contiene, incluidos los permisos denegados y las principales que no pueden usar esos permisos.
gcloud
Para obtener la política de denegación de un recurso, ejecuta el comando
gcloud iam policies get
:gcloud iam policies get POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
Ingresa los siguientes valores:
-
POLICY_ID
: Es el identificador de la política de denegación. -
ATTACHMENT_POINT
: un identificador para el recurso al que se adjunta la política de denegación. Para obtener información sobre cómo dar formato a este valor, consulta Identifica el punto de conexión en esta página.
Por ejemplo, con el siguiente comando, se obtiene la política de denegación
my-deny-policy
para el proyectomy-project
y se guarda en un archivo llamadopolicy.json
:gcloud iam policies get my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --format=json \ > ./policy.json
Go
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Go.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Java
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Java.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Node.js
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Node.js.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Python
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Python.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
REST
El método
policies.get
obtiene una política de denegación para un recurso.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
ENCODED_ATTACHMENT_POINT
: un identificador codificado en URL para el recurso al que se adjunta la política de denegación. Para obtener información sobre cómo dar formato a este valor, consulta Identifica el punto de conexión en esta página. POLICY_ID
: Es un identificador para la política de denegación.
Método HTTP y URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }
Actualiza una política de denegación
Después de crear una política de denegación, puedes actualizar las reglas de denegación que contiene y su nombre visible.
Para actualizar una política de denegación, usa el patrón read-modify-write:
- Lee la versión actual de la política.
- Modifica la información en la política según sea necesario.
- Escribe la política actualizada:
Lee la política de denegación
gcloud
Para obtener la política de denegación de un recurso, ejecuta el comando
gcloud iam policies get
:gcloud iam policies get POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
Ingresa los siguientes valores:
-
POLICY_ID
: Es el identificador de la política de denegación. -
ATTACHMENT_POINT
: un identificador para el recurso al que se adjunta la política de denegación. Para obtener información sobre cómo dar formato a este valor, consulta Identifica el punto de conexión en esta página.
Por ejemplo, con el siguiente comando, se obtiene la política de denegación
my-deny-policy
para el proyectomy-project
y se guarda en un archivo llamadopolicy.json
:gcloud iam policies get my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --format=json \ > ./policy.json
Go
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Go.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Java
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Java.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Node.js
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Node.js.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Python
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Python.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
REST
El método
policies.get
obtiene una política de denegación para un recurso.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
ENCODED_ATTACHMENT_POINT
: un identificador codificado en URL para el recurso al que se adjunta la política de denegación. Para obtener información sobre cómo dar formato a este valor, consulta Identifica el punto de conexión en esta página. POLICY_ID
: Es un identificador para la política de denegación.
Método HTTP y URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }
Modifica la política de denegación
Para modificar la política de denegación, realiza cambios en la copia de la política que leíste desde IAM. Puedes actualizar el nombre visible o agregar, cambiar o quitar reglas de denegación. Los cambios no se aplicarán hasta que escribas la política actualizada.
Por ejemplo, puedes agregar un permiso a una regla de denegación existente:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2021-10-05T19:22:26.770543Z", "updateTime": "2021-10-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] }
Escribe la política de denegación actualizada
Después de modificar la política de denegación de forma local, debes escribir la política de denegación actualizada en IAM.
Cada política de denegación contiene un campo
etag
que identifica la versión de la política. Eletag
cambia cada vez que actualizas la política. Cuando escribes la política actualizada, eletag
en tu solicitud debe coincidir con eletag
actual almacenado en IAM. Si los valores no coinciden, la solicitud falla. Esta característica ayuda a evitar que los cambios simultáneos se reemplacen entre sí.gcloud
Para actualizar la política de denegación de un recurso, ejecuta el comando
gcloud iam policies update
:gcloud iam policies update POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --policy-file=POLICY_FILE
Ingresa los siguientes valores:
-
POLICY_ID
: Es el identificador de la política de denegación. -
ATTACHMENT_POINT
: un identificador para el recurso al que se adjunta la política de denegación. Para obtener información sobre cómo dar formato a este valor, consulta Identifica el punto de conexión en esta página. -
POLICY_FILE
: Es la ruta del archivo JSON que contiene la política de denegación.
De forma predeterminada, si este comando tiene éxito, no imprime ningún resultado. Para imprimir una respuesta detallada, agrega la marca
--format=json
al comando.Por ejemplo, con el siguiente comando, se actualiza una política de denegación llamada
my-deny-policy
para el proyectomy-project
, mediante un archivo llamadopolicy.json
:gcloud iam policies update my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --policy-file=policy.json
Go
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Go.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Java
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Java.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Node.js
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Node.js.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Python
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Python.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
REST
El método
policies.update
actualiza una política de denegación.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
ENCODED_ATTACHMENT_POINT
: un identificador codificado en URL para el recurso al que se adjunta la política de denegación. Para obtener información sobre cómo dar formato a este valor, consulta Identifica el punto de conexión en esta página. POLICY_ID
: Es un identificador para la política de denegación.-
POLICY
: Es la política de denegación actualizada.Por ejemplo, para agregar un permiso a la política que se muestra en el paso anterior, reemplaza
POLICY
por lo siguiente:{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] }
Método HTTP y URL:
PUT https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
Cuerpo JSON de la solicitud:
POLICY
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/8b2d0ab2daf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2021-10-05T22:26:21.968687Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTgxNTIxNDE3NTYxNjQxODYxMTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T22:26:21.968687Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] } }
La respuesta identifica una operación de larga duración. Puedes supervisar el estado de la operación de larga duración para saber cuándo se completa. Para obtener más información, consulta Revisa el estado de una operación de larga duración en esta página.
Borra una política de denegación
Si ya no deseas aplicar las reglas en una política de denegación, puedes borrar la política.
De manera opcional, puedes especificar el
etag
para la versión de la política que estás borrando. Si especificasetag
, este debe coincidir con eletag
actual que almacena IAM. Si los valores no coinciden, la solicitud falla. Puedes usar esta función para asegurarte de borrar la política deseada, en lugar de una versión actualizada de esa política.Si omites el
etag
de la solicitud, IAM borra la política de forma incondicional.gcloud
Para borrar una política de denegación de un recurso, ejecuta el comando
gcloud iam policies delete
:gcloud iam policies delete POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies
Ingresa los siguientes valores:
-
POLICY_ID
: Es el identificador de la política de denegación. -
ATTACHMENT_POINT
: un identificador para el recurso al que se adjunta la política de denegación. Para obtener información sobre cómo dar formato a este valor, consulta Identifica el punto de conexión en esta página.
También puedes agregar la marca
--etag=ETAG
. ReemplazaETAG
con el valoretag
actual para la política de denegación.De forma predeterminada, si este comando tiene éxito, no imprime ningún resultado. Para imprimir una respuesta detallada, agrega la marca
--format=json
al comando.Por ejemplo, el siguiente comando borra una política de denegación llamada
my-deny-policy
del proyectomy-project
:gcloud iam policies delete my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies
Go
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Go.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Java
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Java.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Node.js
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Node.js.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Python
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Python.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
REST
Mediante el método
policies.delete
, se borra una política de denegación de un recurso.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
ENCODED_ATTACHMENT_POINT
: un identificador codificado en URL para el recurso al que se adjunta la política de denegación. Para obtener información sobre cómo dar formato a este valor, consulta Identifica el punto de conexión en esta página. POLICY_ID
: Es un identificador para la política de denegación.-
ETAG
: Opcional Es un identificador para la versión de la política. Si está presente, este valor debe coincidir con el valoretag
actual para la política.
Método HTTP y URL:
DELETE https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID?etag=ETAG
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/8223fe308bf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2021-10-05T19:45:00.133311Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-07-05T19:45:00.133311Z", "deleteTime": "2022-07-05T19:45:00.133311Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] } }
La respuesta identifica una operación de larga duración. Puedes supervisar el estado de la operación de larga duración para saber cuándo se completa. Para obtener más información, consulta Revisa el estado de una operación de larga duración en esta página.
Revisa el estado de una operación de larga duración
Cuando usas la API de REST o las bibliotecas cliente, cualquier método que cambie una política de denegación mostrará una operación de larga duración o LRO. La operación de larga duración realiza un seguimiento del estado de la solicitud y también indica si se completó el cambio en la política.
Go
En las muestras de código de esta página, se muestra cómo esperar a que finalice una operación de larga duración y, luego, acceder a su resultado.
Java
En las muestras de código de esta página, se muestra cómo esperar a que finalice una operación de larga duración y, luego, acceder a su resultado.
Node.js
En las muestras de código de esta página, se muestra cómo esperar a que finalice una operación de larga duración y, luego, acceder a su resultado.
Python
En las muestras de código de esta página, se muestra cómo esperar a que finalice una operación de larga duración y, luego, acceder a su resultado.
REST
El método
policies.operations.get
muestra el estado de una operación de larga duración.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
ENCODED_ATTACHMENT_POINT
: un identificador codificado en URL para el recurso al que se adjunta la política de denegación. Para obtener información sobre cómo dar formato a este valor, consulta Identifica el punto de conexión en esta página. -
OPERATION_ID
: Es el identificador para la operación. Recibirás este identificador en la respuesta a tu solicitud original, como parte del nombre de la operación. Usa el valor hexadecimal al final del nombre de la operación. Por ejemplo,89cb3e508bf1ff01
Método HTTP y URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/operations/OPERATION_ID
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/89cb3e508bf1ff01", "done": true }
Si el campo
done
de la operación no está presente, continúa supervisando su estado mediante la obtención de la operación repetidas veces. Usa la retirada exponencial truncada para ingresar una demora entre cada solicitud. Cuando el campodone
se establece comotrue
, la operación está completa, y puedes dejar de obtener la operación.¿Qué sigue?
- Identifica los permisos compatibles con las políticas de denegación.
- Obtén el formato de los identificadores de principales en las políticas de denegación.
- Descubre cómo solucionar problemas de acceso con políticas de denegación.
- Obtén más información sobre cómo denegar el acceso a las principales.
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-09-12 (UTC)