Crear y aplicar políticas de límites de acceso de principales

Las políticas de límites de acceso de principales (PAB) te permiten limitar los recursos a los que puede acceder un conjunto de principales. En esta página se explica cómo crear y aplicar políticas de límite de acceso de principales.

Antes de empezar

Roles necesarios para crear políticas de límites de acceso de principales

Para obtener el permiso que necesitas para crear políticas de límites de acceso de principales, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de límites de acceso de principales (roles/iam.principalAccessBoundaryAdmin) en tu organización. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene el permiso iam.principalaccessboundarypolicies.create, que es necesario para crear políticas de límites de acceso de principales.

También puedes obtener este permiso con roles personalizados u otros roles predefinidos.

Roles necesarios para aplicar políticas de límites de acceso de principales

Los permisos que necesitas para aplicar una política de límites de acceso de principales dependen del conjunto de principales al que quieras aplicar la política.

Para obtener los permisos que necesitas para aplicar políticas de límites de acceso de principales, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para aplicar políticas de límites de acceso de principales. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Se necesitan los siguientes permisos para aplicar políticas de límites de acceso de principales:

  • iam.principalaccessboundarypolicies.bind de la organización
  • Aplica políticas de límites de acceso de principales a los grupos de Workforce Identity Federation: iam.workforcePools.createPolicyBinding en el grupo de Workforce Identity Federation de destino
  • Aplica políticas de límite de acceso de principales a grupos de federación de identidades de Workforce: iam.workloadIdentityPools.createPolicyBinding en el proyecto propietario del grupo de federación de identidades de Workforce de destino
  • Obtén el estado de una operación de larga duración para aplicar una política de límite de acceso de principal a un grupo de identidades de carga de trabajo: iam.operations.get en el proyecto propietario del grupo de identidades de carga de trabajo de destino
  • Aplica políticas de límite de acceso de principales a un dominio de Google Workspace: iam.workspacePools.createPolicyBinding en la organización
  • Aplica políticas de límite de acceso de principales a un conjunto de principales de un proyecto: resourcemanager.projects.createPolicyBinding en el proyecto
  • Obtiene el estado de una operación de larga duración para aplicar una política de límite de acceso principal al conjunto de principales de un proyecto: iam.operations.get en el proyecto
  • Aplica políticas de límites de acceso de principales a un conjunto de principales de una carpeta: resourcemanager.folders.createPolicyBinding en la carpeta
  • Aplica políticas de límite de acceso de principales al conjunto de principales de una organización: resourcemanager.organizations.createPolicyBinding en la organización

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Crear una política de límites de acceso de principales

Puede crear una política de límites de acceso de principales mediante la consola de Trusted Cloud , la CLI de gcloud o la API REST de gestión de identidades y accesos.

Consola

  1. En la Trusted Cloud consola, ve a la página Políticas de límite de acceso de principales.

    Ir a las políticas de límites de acceso de principales

  2. Seleccione la organización para la que quiera crear políticas de límite de acceso de principales.

  3. Haz clic en Crear política.

  4. Añade reglas de límite de acceso de principales a la política:

    1. Haz clic en Añadir regla de límite.
    2. En el campo Description (Descripción), añade una descripción de la regla de la política de límite de acceso de la principal. La descripción puede tener un máximo de 256 caracteres.
    3. En la sección Recursos, introduce todos los recursos de Resource Manager (proyectos, carpetas y organizaciones) a los que quieres que puedan acceder las principales. Cualquier principal que esté sujeto a esta política puede acceder a estos recursos.

      Cada política de límite de acceso de principales puede hacer referencia a un máximo de 500 recursos en todas las reglas de la política.

    4. Haz clic en Listo.

    5. Para añadir más reglas de la política, repite estos pasos. Cada política de límite de acceso de principal puede tener hasta 500 reglas.

  5. En la sección Nombre de la política, escribe el nombre que quieras asignar a la política. El nombre puede tener un máximo de 63 caracteres.

  6. En la lista Versión de la medida, seleccione la versión de la medida de la política. La versión de la política de límites de acceso de principales determina los permisos para los que IAM aplica la política de límites de acceso de principales.

    Para obtener más información sobre las versiones de aplicación, consulta Versiones de aplicación del límite de acceso de principales.

  7. Haz clic en Crear.

gcloud

El comando gcloud iam principal-access-boundary-policies create crea una política de límites de acceso de principales.

Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:

  • ORG_ID: el ID de la organización en la que quieres crear la política de límites de acceso de principales. Los IDs de organización son numéricos, como 123456789012.
  • PAB_POLICY_ID: un ID único de la política de límite de acceso principal. Por ejemplo, example-policy. :
  • DISPLAY_NAME: opcional. Una descripción legible de la política de límites de acceso de principales. Por ejemplo, Example policy. El nombre visible puede tener un máximo de 63 caracteres.
  • FILE_PATH: ruta a un archivo JSON que contiene los detalles de la regla de la política de límite de acceso principal. Este archivo debe tener el siguiente formato:

    {
      "description": DESCRIPTION,
      "resources": [
        RESOURCES
      ],
      "effect": ALLOW
    }
        

    Sustituye los siguientes valores:

    • DESCRIPTION: opcional. Descripción de la regla de la política de límites de acceso de principales. La descripción puede tener un máximo de 256 caracteres.
    • RESOURCES: lista de recursos de Resource Manager (proyectos, carpetas y organizaciones) a los que quieres que puedan acceder las principales. Cualquier principal que esté sujeto a esta política puede acceder a estos recursos.

      Cada política de límite de acceso de principales puede hacer referencia a un máximo de 500 recursos en todas las reglas de la política.

  • ENFORCEMENT_VERSION: la versión de las políticas de límites de acceso de principales que usa IAM al aplicar la política. La versión de aplicación determina los permisos que aplica la gestión de identidades y accesos en la política de límites de acceso de principales.

    Los valores aceptados son 1, 2, 3 y latest.

    Para obtener más información sobre las versiones de cumplimiento, consulta Versiones de cumplimiento del límite de acceso de la entidad principal.

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud iam principal-access-boundary-policies create PAB_POLICY_ID \
    --organization=ORG_ID --location=global \
    --display-name=DISPLAY_NAME --details-rules=FILE_PATH.json \
    --details-enforcement-version=ENFORCEMENT_VERSION

Windows (PowerShell)

gcloud iam principal-access-boundary-policies create PAB_POLICY_ID `
    --organization=ORG_ID --location=global `
    --display-name=DISPLAY_NAME --details-rules=FILE_PATH.json `
    --details-enforcement-version=ENFORCEMENT_VERSION

Windows (cmd.exe)

gcloud iam principal-access-boundary-policies create PAB_POLICY_ID ^
    --organization=ORG_ID --location=global ^
    --display-name=DISPLAY_NAME --details-rules=FILE_PATH.json ^
    --details-enforcement-version=ENFORCEMENT_VERSION

La respuesta contiene una operación de larga duración que representa tu solicitud. Para saber cómo obtener el estado de una operación de larga duración, consulta Comprobar el estado de una operación de larga duración en esta página.

Create request issued for: [example-policy]
Waiting for operation [organizations/123456789012/locations/global/operations/operation-1715373988044-6181fa136df85-3b06a30a-4816d25b] to complete...done.
Created principalAccessBoundaryPolicy [example-policy].

REST

El método principalAccessBoundaryPolicies.create crea una política de límites de acceso de principales.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • ORG_ID: el ID de la organización en la que quieres crear la política de límites de acceso de principales. Los IDs de organización son numéricos, como 123456789012.
  • PAB_POLICY_ID: un ID único de la política de límite de acceso principal. Por ejemplo, example-policy.
  • DISPLAY_NAME: opcional. Una descripción legible de la política de límites de acceso de principales. Por ejemplo, Example policy. El nombre visible puede tener un máximo de 63 caracteres.
  • PAB_RULES: lista de reglas de límites de acceso de principales, que definen los recursos a los que pueden acceder los principales afectados. Una política de límites de acceso de principales puede tener hasta 500 reglas. Cada regla tiene el siguiente formato:

    {
    "description": "DESCRIPTION",
    "resources": [
      RESOURCES
    ],
    "effect": ALLOW
    }

    Sustituye los siguientes valores:

    • DESCRIPTION: opcional. Descripción de la regla de la política de límites de acceso de principales. La descripción puede tener un máximo de 256 caracteres.
    • RESOURCES: lista de recursos de Resource Manager (proyectos, carpetas y organizaciones) a los que quieres que puedan acceder las principales. Cualquier principal que esté sujeto a esta política puede acceder a estos recursos.

      Cada política de límite de acceso de principales puede hacer referencia a un máximo de 500 recursos en todas las reglas de la política.

  • ENFORCEMENT_VERSION: la versión de las políticas de límites de acceso de principales que usa IAM al aplicar la política. La versión de aplicación determina los permisos que aplica la gestión de identidades y accesos en la política de límites de acceso de principales.

    Los valores aceptados son 1, 2, 3 y latest.

    Para obtener más información sobre las versiones de cumplimiento, consulta Versiones de cumplimiento del límite de acceso de la entidad principal.

Método HTTP y URL:

POST https://iam.googleapis.com/v3/organizations/ORG_ID/locations/global?principalAccessBoundaryPolicyId=PAB_POLICY_ID

Cuerpo JSON de la solicitud:

{
  "displayName": DISPLAY_NAME,
  "details": {
    "rules": [
      PAB_RULES
    ],
    "effect": ALLOW
    }
  ],
  "enforcementVersion": "ENFORCEMENT_VERSION"
}

Para enviar tu solicitud, despliega una de estas opciones:

La respuesta contiene una operación de larga duración que representa tu solicitud. Para saber cómo obtener el estado de una operación de larga duración, consulta Comprobar el estado de una operación de larga duración en esta página.

{
  "name": "organizations/123456789012/locations/global/operations/operation-1715373120647-6181f6d8371d2-83309b71-2b8a7532",
  "metadata": {
    "@type": "type.googleapis.com/google.iam.v3.OperationMetadata",
    "createTime": "2024-05-10T20:32:00.898809495Z",
    "target": "organizations/123456789012/locations/global/policyBindings/example-policy",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v3"
  },
  "done": false
}

Aplicar una política de límites de acceso de principales a un conjunto de principales

Para aplicar una política de límites de acceso de principales a un conjunto de principales, crea un recurso de vinculación de políticas que vincule la política al conjunto de principales. Después de crear un enlace de política, se aplicará la política de límites de acceso de principales del enlace a los principales del enlace.

Puedes crear un enlace de política mediante la Trusted Cloud consola, la CLI de gcloud o la API REST de gestión de identidades y accesos.

Consola

  1. En la Trusted Cloud consola, ve a la página Políticas de límite de acceso de principales.

    Ir a las políticas de límites de acceso de principales

  2. Selecciona la organización propietaria de la política de límite de acceso de la entidad de seguridad para la que quieras crear una vinculación.

  3. Haga clic en el ID de la política de límites de acceso de principales para la que quiera crear un enlace.

  4. Haga clic en la pestaña Bindings y, a continuación, en Añadir binding.

  5. Introduce los detalles de la vinculación:

    1. Opcional: En el campo Nombre visible, introduce un nombre visible para la vinculación. El nombre visible puede tener un máximo de 63 caracteres.
    2. En el campo ID de vinculación, introduce un nombre único para la vinculación (por ejemplo, example-binding).
    3. En la sección Target principal set (Conjunto de principales de destino), introduzca el tipo y el ID del conjunto de principales al que quiera vincular la política. No puedes cambiar este valor después de crear el enlace de la política.

      Para obtener más información sobre las entidades incluidas en cada conjunto de entidades, consulta Conjuntos de entidades admitidos.

  6. Opcional: Para especificar a qué entidades principales del conjunto de entidades principales se aplica la política de límites de acceso de principales, añade una condición a la vinculación:

    1. Haz clic en Añadir condición.
    2. En el campo Título, escribe un breve resumen del propósito de la condición.
    3. Opcional: En el campo Descripción, escribe una descripción más larga de la condición.
    4. En el campo Expresión, introduce una expresión de condición que use la sintaxis del lenguaje de expresión común (CEL). La expresión debe hacer referencia a los atributos principal.type o principal.subject. No se admiten otros atributos.
    5. Haz clic en Guardar.
  7. Opcional: Para probar los cambios que has hecho en la política de límite de acceso de la cuenta principal con el simulador de políticas, haz clic en Probar cambios. Revisa los resultados de la simulación y actualiza la política si es necesario.

    Para obtener más información sobre cómo probar las políticas de límites de acceso de principales con el simulador de políticas, consulte el artículo Simulador de políticas para límites de acceso de principales.

  8. Para crear la vinculación, haz clic en Añadir.

gcloud

El comando gcloud iam policy-bindings create crea un enlace de política.

Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:

  • BINDING_ID: nombre único de la vinculación de la política. Por ejemplo, example-binding.
  • RESOURCE_TYPE: el tipo de recurso de Resource Manager (proyecto, carpeta u organización) del que es hijo el enlace de política. Usa el valor project, folder o organization.

    El tipo de recurso depende de la entidad definida en la vinculación de la política. Para ver qué tipo de recurso debes usar, consulta Tipos de principales admitidos.

  • RESOURCE_ID: ID del proyecto, la carpeta o la organización de los que depende el enlace de la política. Los IDs de proyecto son cadenas alfanuméricas, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.
  • ORG_ID: el ID de la organización propietaria de la política de límites de acceso de principales que quieres vincular al conjunto de principales. Los IDs de organización son numéricos, como 123456789012.
  • PAB_POLICY_ID: el ID de la política de límite de acceso principal que quieres vincular al conjunto principal. Por ejemplo, example-pab-policy. No podrás cambiar este valor después de crear la vinculación de la política.
  • PRINCIPAL_SET: el conjunto de principales al que quieres vincular la política. Para ver una lista de los tipos de principales válidos, consulta Conjuntos de principales admitidos. No podrá cambiar este valor después de crear la vinculación de la política.
  • DISPLAY_NAME: opcional. Una descripción legible por humanos de la vinculación. Por ejemplo, Example binding. El nombre visible puede tener un máximo de 63 caracteres.
  • CONDITION_DETAILS: opcional. Una expresión de condición que especifica a qué entidades principales del conjunto de entidades principales se aplica la política de límites de acceso de principales. Contiene los siguientes campos:

    • expression: expresión de condición que usa la sintaxis del lenguaje de expresión común (CEL). La expresión debe hacer referencia a los atributos principal.type o principal.subject. No se admiten otros atributos.

      La expresión puede contener hasta 10 operadores lógicos (&&, || y !) y tener una longitud máxima de 250 caracteres.

    • title: opcional. Un breve resumen del propósito de la condición.
    • description: opcional. Una descripción más larga de la afección.

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud iam policy-bindings create BINDING_ID \
    --RESOURCE_TYPE=RESOURCE_ID --location=global \
    --policy="organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID" \
    --target-principal-set=PRINCIPAL_SET_ID \
    --display-name=DISPLAY_NAME \
    CONDITION_DETAILS

Windows (PowerShell)

gcloud iam policy-bindings create BINDING_ID `
    --RESOURCE_TYPE=RESOURCE_ID --location=global `
    --policy="organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID" `
    --target-principal-set=PRINCIPAL_SET_ID `
    --display-name=DISPLAY_NAME `
    CONDITION_DETAILS

Windows (cmd.exe)

gcloud iam policy-bindings create BINDING_ID ^
    --RESOURCE_TYPE=RESOURCE_ID --location=global ^
    --policy="organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID" ^
    --target-principal-set=PRINCIPAL_SET_ID ^
    --display-name=DISPLAY_NAME ^
    CONDITION_DETAILS

La respuesta contiene una operación de larga duración que representa tu solicitud. Para saber cómo obtener el estado de una operación de larga duración, consulta Comprobar el estado de una operación de larga duración en esta página.

Create request issued for: [example-binding]
Waiting for operation [organizations/123456789012/locations/global/operations/operation-1715374545618-6181fc272c6f9-55ff07f4-97d0ac76] to complete...done.
Created policyBinding [example-binding].

REST

El método policyBindings.create crea un enlace de política.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • RESOURCE_TYPE: el tipo de recurso de Resource Manager (proyecto, carpeta u organización) del que es hijo el enlace de política. Usa el valor projects, folders o organizations.

    El tipo de recurso depende de la entidad definida en la vinculación de la política. Para ver qué tipo de recurso debes usar, consulta Tipos de principales admitidos.

  • RESOURCE_ID: ID del proyecto, la carpeta o la organización de los que depende el enlace de la política. Los IDs de proyecto son cadenas alfanuméricas, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.
  • BINDING_ID: nombre único de la vinculación de la política. Por ejemplo, example-binding.
  • DISPLAY_NAME: opcional. Una descripción legible por humanos de la vinculación. Por ejemplo, Example binding. El nombre visible puede tener un máximo de 63 caracteres.
  • PRINCIPAL_SET: el conjunto de principales al que quieres vincular la política. Para ver una lista de los tipos de principales válidos, consulta Conjuntos de principales admitidos. No podrá cambiar este valor después de crear la vinculación de la política.
  • ORG_ID: el ID de la organización propietaria de la política de límites de acceso de principales que quieres vincular al conjunto de principales. Los IDs de organización son numéricos, como 123456789012.
  • PAB_POLICY_ID: el ID de la política de límite de acceso principal que quieres vincular al conjunto principal. Por ejemplo, example-pab-policy. No podrás cambiar este valor después de crear la vinculación de la política.
  • CONDITION_DETAILS: opcional. Una expresión de condición que especifica a qué entidades principales del conjunto de entidades principales se aplica la política de límites de acceso de principales. Contiene los siguientes campos:

    • expression: expresión de condición que usa la sintaxis del lenguaje de expresión común (CEL). La expresión debe hacer referencia a los atributos principal.type o principal.subject. No se admiten otros atributos.

      La expresión puede contener hasta 10 operadores lógicos (&&, || y !) y tener una longitud máxima de 250 caracteres.

    • title: opcional. Un breve resumen del propósito de la condición.
    • description: opcional. Una descripción más larga de la afección.

Método HTTP y URL:

POST https://iam.googleapis.com/v3/RESOURCE_TYPE/RESOURCE_ID/locations/global/policyBindings?policyBindingId=BINDING_ID

Cuerpo JSON de la solicitud:

{
  "displayName": DISPLAY_NAME,
  "target": {
    "principalSet": PRINCIPAL_SET
  },
  "policyKind": "PRINCIPAL_ACCESS_BOUNDARY",
  "policy": "organizations/ORG_ID/locations/global/principalAccessBoundaryPolicies/PAB_POLICY_ID",
  "condition": {
    CONDITION_DETAILS
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

La respuesta contiene una operación de larga duración que representa tu solicitud. Para saber cómo obtener el estado de una operación de larga duración, consulta Comprobar el estado de una operación de larga duración en esta página.

{
  "name": "organizations/123456789012/locations/global/operations/operation-1715373120647-6181f6d8371d2-83309b71-2b8a7532",
  "metadata": {
    "@type": "type.googleapis.com/google.iam.v3.OperationMetadata",
    "createTime": "2024-05-10T20:32:00.898809495Z",
    "target": "organizations/123456789012/locations/global/policyBindings/example-binding",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v3"
  },
  "done": false
}

Comprobar el estado de una operación de larga duración

Cuando usas la API REST o las bibliotecas de cliente, cualquier método que cambie una política o una vinculación de límite de acceso principal devuelve una operación de larga duración (OLD). La operación de larga duración monitoriza el estado de la solicitud e indica si se ha completado el cambio en la política o la vinculación.

REST

El método operations.get devuelve el estado de una operación de larga duración.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • OPERATION_NAME: nombre completo de la operación. Recibirás este nombre en la respuesta a tu solicitud original.

    El nombre de la operación tiene el siguiente formato:

          RESOURCE_TYPE/RESOURCE_ID/locations/global/operations/OPERATION_ID
        

Método HTTP y URL:

GET https://iam.googleapis.com/v3/OPERATION_NAME

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "organizations/314340013352/locations/global/operations/operation-1732752311821-627edd607a3df-9a62cdea-2a7d9f07",
  "metadata": {
    "@type": "type.googleapis.com/google.iam.v3.OperationMetadata",
    "createTime": "2024-11-28T00:05:12.006289686Z",
    "endTime": "2024-11-28T00:05:12.192141801Z",
    "target": "organizations/314340013352/locations/global/principalAccessBoundaryPolicies/example-policy",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v3"
  },
  "done": true,
  "response": {
    PAB_POLICY
  }
}

Si el campo done de la operación no está presente, sigue monitorizando su estado obteniendo la operación repetidamente. Usa un tiempo de espera exponencial truncado para introducir un retraso entre cada solicitud. Cuando el campo done se define como true, la operación se completa y puedes dejar de obtener la operación.

Siguientes pasos