Crea derechos en el Privileged Access Manager

Puedes crear derechos para permitir la elevación de privilegios temporal para un conjunto seleccionado de principales. Ten en cuenta lo siguiente cuando crees derechos:

  • Los derechos se pueden crear a nivel de la organización, la carpeta o el proyecto. Los roles que otorga un derecho en cada nivel siguen la jerarquía de recursos de Google Cloud. Por ejemplo, los roles otorgados por un derecho a nivel de la organización se heredan a nivel de la carpeta y el proyecto.

  • Si agregas un grupo como solicitante a un derecho, todas las cuentas individuales de ese grupo pueden solicitar la concesión de ese derecho. Sin embargo, solo la cuenta individual que solicita la concesión puede recibir privilegios elevados.

  • Si agregas un grupo como revisor a un derecho, todas las cuentas individuales de ese grupo pueden aprobar o rechazar una solicitud de otorgamiento.

  • No se admiten los roles básicos.

Antes de comenzar

Asegúrate de habilitar Privileged Access Manager y configurar los permisos correspondientes.

Crea derechos con la consola de Google Cloud

Para crear un derecho, completa las siguientes instrucciones:

  1. Ve a la página Privileged Access Manager.

    Ir a Privileged Access Manager

  2. Selecciona la organización, la carpeta o el proyecto al que deseas que se aplique el derecho.

  3. Haz clic en la pestaña Derechos.

  4. Haz clic en Crear.

  5. Agrega los siguientes detalles de derechos:

    • Un nombre de derecho

    • Hasta 30 roles que se otorgarán en la organización, la carpeta o el proyecto Puedes aplicar condiciones de IAM a estos roles, siempre que no coincidan con las etiquetas de recursos.

    • Es la duración de los otorgamientos en relación con el derecho.

  6. Haz clic en Siguiente.

  7. Busca y agrega hasta 20 principales solicitantes válidos para el derecho. Se admiten todos los tipos principales, excepto allUsers y allAuthenticatedUsers. Para agregar más de 20 identidades, agrégalas a un grupo y, luego, indícalo en el derecho.

  8. Elige si los principales deben proporcionar una justificación para la solicitud de otorgamiento.

  9. Haz clic en Siguiente.

  10. Elige permitir que se otorguen roles sin aprobación o busca y agrega principales válidos que puedan aprobar la solicitud. Los tipos principales válidos son los siguientes:

    • Cuentas de Google

    • Grupos de Google

    • Dominios de Google Workspace.

    • Identificadores de grupos de trabajadores

    Si decides tener aprobadores, también elige si estos deben proporcionar una justificación para aprobar la solicitud de subvención. Puedes agregar hasta 20 directores de aprobación por derecho. Para agregar más de 20 identidades, agrégalas a un grupo y, luego, indícalo en el derecho.

  11. Haz clic en Siguiente.

  12. Opcional: Agrega las direcciones de correo electrónico de las personas a las que se les notificará cuando el derecho esté disponible para solicitarse, cuando una concesión esté pendiente de aprobación y cuando se le otorgue acceso a un solicitante. Las identidades de Google asociadas con el derecho, como los responsables de aprobación y los solicitantes, reciben notificaciones automáticamente. Sin embargo, es posible que desees notificar a un conjunto diferente de direcciones de correo electrónico, en especial si usas la federación de identidades de personal.

  13. Haz clic en Crear derechos.

Crea derechos de manera programática

gcloud

El comando gcloud beta pam entitlements create crea un derecho a nivel de la organización, la carpeta o el proyecto.

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • ENTITLEMENT_ID: Es el ID del derecho que se creará. Un ID debe tener entre 4 y 63 caracteres, y usar los siguientes caracteres: [a-z0-9-]. El primer carácter debe ser una letra
  • RESOURCE_TYPE: Opcional Es el tipo de recurso al que pertenece el derecho. Usa el valor organization, folder o project.
  • RESOURCE_ID: Se usa con RESOURCE_TYPE. Es el ID de la organización, la carpeta o el proyecto de Google Cloud para el que deseas administrar los derechos. Los ID de proyecto son strings alfanuméricas, como my-project. Los IDs de carpeta y organización son numéricos, como 123456789012.
  • SCOPE: La organización, la carpeta o el proyecto en el que se creará el derecho, en el formato de organizations/ORGANIZATION_ID, folders/FOLDER_ID o projects/PROJECT_ID. Los ID de proyecto son strings alfanuméricas, como my-project. Los IDs de carpeta y organización son numéricos, como 123456789012.
  • RESOURCE_MANAGER_RESOURCE_TYPE: Puede ser Organization, Folder o Project, según el alcance.
  • ROLE: Los roles que se asignarán cuando se otorgue un derecho
  • TIME_IN_SECONDS: Es la duración máxima de un otorgamiento, en segundos.
  • REQUESTING_MEMBER: Son las principales que pueden solicitar que se otorgue el derecho. Se admiten todos los tipos principales, excepto allUsers y allAuthenticatedUsers.

  • APPROVING_EMAIL: Opcional Direcciones de correo electrónico adicionales para notificar cuando se haya solicitado una subvención Las identidades de Google asociadas con los revisores de subvenciones se notifican automáticamente. Sin embargo, es posible que desees notificar a un conjunto diferente de direcciones de correo electrónico, en especial si usas la federación de identidades de personal.
  • APPROVING_MEMBER: Son las principales que pueden aprobar la solicitud de derechos. Los tipos principales válidos son los siguientes:

    • Usuario
    • Grupo
    • Dominio
    • Identificadores de grupos de trabajadores
  • ADMIN_EMAIL_ADDRESS: Opcional Direcciones de correo electrónico adicionales para notificar cuando se le otorgue acceso a un solicitante. Las identidades de Google asociadas con los revisores de subvenciones se notifican automáticamente. Sin embargo, es posible que desees notificar a un conjunto diferente de direcciones de correo electrónico, en especial si usas la federación de identidades de personal.
  • REQUESTER_EMAIL_ADDRESS: Opcional Direcciones de correo electrónico adicionales para notificar cuando este derecho esté disponible para solicitarse Las identidades de Google asociadas con los solicitantes de subvenciones se notifican automáticamente. Sin embargo, es posible que desees notificar a un conjunto diferente de direcciones de correo electrónico, en especial si usas la federación de identidades de personal.

Guarda el siguiente código en un archivo llamado entitlement.yaml.

privilegedAccess:
  gcpIamAccess:
    resourceType: cloudresourcemanager.googleapis.com/RESOURCE_MANAGER_RESOURCE_TYPE
    resource: //cloudresourcemanager.googleapis.com/SCOPE
    roleBindings:
    - role: ROLE_1
    - role: ROLE_2
maxRequestDuration: TIME_IN_SECONDSs
eligibleUsers:
- principals:
  - REQUESTING_MEMBER_1
  - REQUESTING_MEMBER_2
approvalWorkflow:
  manualApprovals:
    requireApproverJustification: true
    steps:
    - approvalsNeeded: 1
      approverEmailRecipients:
      - APPROVING_EMAIL_1
      - APPROVING_EMAIL_2
      approvers:
      - principals:
        - APPROVING_MEMBER_1
        - APPROVING_MEMBER_2
requesterJustificationConfig:
  unstructured: {}
additionalNotificationTargets:
  adminEmailRecipients:
  - ADMIN_EMAIL_ADDRESS_1
  - ADMIN_EMAIL_ADDRESS_2
  requesterEmailRecipients:
  - REQUESTER_EMAIL_ADDRESS_1
  - REQUESTER_EMAIL_ADDRESS_2

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud beta pam entitlements create \
    ENTITLEMENT_ID \
    --entitlement-file=entitlement.yaml \
    --location=global \
    --RESOURCE_TYPE=RESOURCE_ID

Windows (PowerShell)

gcloud beta pam entitlements create `
    ENTITLEMENT_ID `
    --entitlement-file=entitlement.yaml `
    --location=global `
    --RESOURCE_TYPE=RESOURCE_ID

Windows (cmd.exe)

gcloud beta pam entitlements create ^
    ENTITLEMENT_ID ^
    --entitlement-file=entitlement.yaml ^
    --location=global ^
    --RESOURCE_TYPE=RESOURCE_ID

Deberías recibir una respuesta similar a la que figura a continuación:

Create request issued for: [ENTITLEMENT_ID]
Waiting for operation [projects/my-project/locations/global/operations/OPERATION_ID] to complete...done.
Created entitlement [ENTITLEMENT_ID].
additionalNotificationTargets: {}
approvalWorkflow:
  manualApprovals:
    requireApproverJustification: true
    steps:
    - approvalsNeeded: 1
      approvers:
      - principals:
        - user:alex@example.com
createTime: '2024-04-09T02:39:37.011866832Z'
eligibleUsers:
- principals:
  - user:bola@example.com
etag: 00000000000000000000000000000000000000000000000000000000000=
maxRequestDuration: 7200s
name: projects/my-project/locations/global/entitlements/ENTITLEMENT_ID
privilegedAccess:
  gcpIamAccess:
    resource: //cloudresourcemanager.googleapis.com/projects/my-project
    resourceType: cloudresourcemanager.googleapis.com/Project
    roleBindings:
    - role: roles/storage.admin
requesterJustificationConfig:
  unstructured: {}
state: AVAILABLE
updateTime: '2024-04-09T02:39:40.066770306Z'

REST

El método createEntitlement de la API de Privileged Access Manager crea un derecho a nivel de la organización, la carpeta o el proyecto.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • SCOPE: La organización, la carpeta o el proyecto en el que se creará el derecho, en el formato de organizations/ORGANIZATION_ID, folders/FOLDER_ID o projects/PROJECT_ID. Los ID de proyecto son strings alfanuméricas, como my-project. Los IDs de carpeta y organización son numéricos, como 123456789012.
  • ENTITLEMENT_ID: Es el ID del derecho que se creará. Un ID debe tener entre 4 y 63 caracteres, y usar los siguientes caracteres: [a-z0-9-]. El primer carácter debe ser una letra
  • REQUEST_ID: Opcional Debe ser un UUID distinto de cero. Si el servidor recibe una solicitud con un ID de solicitud, verifica si ya se completó otra solicitud con ese ID en los últimos 60 minutos. Si es así, se ignora la solicitud nueva.
  • RESOURCE_MANAGER_RESOURCE_TYPE: Puede ser Organization, Folder o Project, según el alcance.
  • ROLE: Los roles que se asignarán cuando se otorgue un derecho
  • TIME_IN_SECONDS: Es la duración máxima de un otorgamiento, en segundos.
  • REQUESTING_MEMBER: Son los principales que pueden solicitar que se otorgue el derecho. Se admiten todos los tipos principales, excepto allUsers y allAuthenticatedUsers.

  • APPROVING_MEMBER: Son las principales que pueden aprobar la solicitud de derechos. Los tipos principales válidos son los siguientes:

    • Usuario
    • Grupo
    • Dominio
    • Identificadores de grupos de trabajadores
  • APPROVING_EMAIL: Opcional Direcciones de correo electrónico adicionales para notificar cuando se haya solicitado una subvención Las identidades de Google asociadas con los revisores de subvenciones se notifican automáticamente. Sin embargo, es posible que desees notificar a un conjunto diferente de direcciones de correo electrónico, en especial si usas la federación de identidades de personal.
  • ADMIN_EMAIL_ADDRESS: Opcional Direcciones de correo electrónico adicionales para notificar cuando se le otorgue acceso a un solicitante. Las identidades de Google asociadas con los revisores de subvenciones se notifican automáticamente. Sin embargo, es posible que desees notificar a un conjunto diferente de direcciones de correo electrónico, en especial si usas la federación de identidades de personal.
  • REQUESTER_EMAIL_ADDRESS: Opcional Direcciones de correo electrónico adicionales para notificar cuando este derecho esté disponible para solicitarse Las identidades de Google asociadas con los solicitantes de subvenciones se notifican automáticamente. Sin embargo, es posible que desees notificar a un conjunto diferente de direcciones de correo electrónico, en especial si usas la federación de identidades de personal.

Método HTTP y URL:

POST https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements?entitlementId=ENTITLEMENT_ID&requestId=REQUEST_ID

Cuerpo JSON de la solicitud:

{
  "privilegedAccess": {
    "gcpIamAccess": {
      "resourceType": "cloudresourcemanager.googleapis.com/RESOURCE_MANAGER_RESOURCE_TYPE",
      "resource": "//cloudresourcemanager.googleapis.com/SCOPE",
      "roleBindings": [
        {
          "role": "ROLE_1"
        },
        {
          "role": "ROLE_2"
        }
      ]
    }
  },
  "maxRequestDuration": "TIME_IN_SECONDSs",
  "eligibleUsers": [
    {
      "principals": [
        "REQUESTING_MEMBER_1",
        "REQUESTING_MEMBER_2",
        ...
      ]
    }
  ],
  "approvalWorkflow": {
    "manualApprovals": {
      "requireApproverJustification": true,
      "steps": [
        {
          "approvers": [
            {
              "principals": [
                "APPROVING_MEMBER_1",
                "APPROVING_MEMBER_2",
                ...
              ]
            }
          ],
          "approvalsNeeded": 1,
          "approverEmailRecipients": [
            "APPROVING_EMAIL_1",
            "APPROVING_EMAIL_2",
            ...
          ]
        }
      ]
    }
  },
  "requesterJustificationConfig": {
    "unstructured": {
    }
  },
  "additionalNotificationTargets": {
    "adminEmailRecipients": [
      "ADMIN_EMAIL_ADDRESS_1",
      "ADMIN_EMAIL_ADDRESS_2",
      ...
    ],
    "requesterEmailRecipients": [
      "REQUESTER_EMAIL_ADDRESS_1",
      "REQUESTER_EMAIL_ADDRESS_2",
      ...
    ]
  }
}

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": "projects/my-project/locations/global/operations/OPERATION_ID",
    "metadata": {
      "@type": "type.googleapis.com/google.cloud.privilegedaccessmanager.v1beta.OperationMetadata",
      "createTime": "2024-03-05T03:35:14.596739353Z",
      "target": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID",
      "verb": "create",
      "requestedCancellation": false,
      "apiVersion": "v1beta"
    },
    "done": false
}

Para verificar el progreso de una operación de creación, puedes enviar una solicitud GET al siguiente extremo:

https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/operations/OPERATION_ID

Envía una solicitud GET al siguiente extremo para enumerar todas las operaciones:

https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/operations

Terraform

Puedes usar Terraform para crear derechos. Para obtener más información, consulta google_privileged_access_manager_entitlement en la documentación de Terraform.

¿Qué sigue?