Solicitar acceso elevado temporal con Privileged Access Manager

Para elevar tus privilegios temporalmente, puedes solicitar una concesión de un derecho en Gestor de accesos privilegiados (PAM) durante un periodo fijo.

Un derecho contiene roles que se te conceden después de que tu solicitud se haya completado correctamente. Privileged Access Manager elimina estos roles cuando finaliza la concesión.

Ten en cuenta lo siguiente si quieres solicitar una concesión de derechos:

  • Solo puedes solicitar subvenciones para los derechos a los que se te haya añadido. Para que se te añada a un derecho, ponte en contacto con el responsable de administrarlo.

  • Solo puedes tener una concesión activa para un derecho a la vez.

  • En función de cómo se haya configurado, es posible que una solicitud de subvención requiera aprobación para concederse.

  • Si una solicitud de concesión requiere aprobación y no se aprueba ni se rechaza en un plazo de 24 horas, el estado de la concesión cambia a Expired. Después, debes hacer una nueva solicitud de concesión si sigue siendo necesario elevar los privilegios.

  • Las solicitudes de concesión correctas pueden tardar unos minutos en aplicarse.

Solicitar una concesión mediante la consola Trusted Cloud

Para solicitar una concesión de derechos, sigue estas 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 en el que quieras solicitar una subvención.

  3. En la pestaña Mis derechos, busca el derecho que quieras solicitar y, a continuación, haz clic en Solicitar concesión en la misma fila.

  4. Proporciona los siguientes datos:

    • La duración necesaria para la concesión, hasta la duración máxima establecida en el derecho.

    • Si es necesario, una justificación de la concesión.

    • Opcional: direcciones de correo a las que se debe enviar la notificación de la solicitud de concesión. Las identidades de Google asociadas a los aprobadores reciben una notificación automáticamente. Sin embargo, puede que quieras enviar notificaciones a otro conjunto de direcciones de correo, sobre todo si usas federación de identidades de la plantilla.

  5. Haz clic en Solicitar subvención.

  6. Para ver tu historial de subvenciones, incluidos los estados de aprobación, haz clic en la pestaña Subvenciones y, a continuación, en la pestaña Mis subvenciones.

Solicitar una concesión de forma programática

Para solicitar una concesión de derechos, debes seguir estos pasos:

  1. Busca los IDs de derechos disponibles para los que puedes solicitar concesiones.

  2. Solicita la concesión.

Después, puedes consultar el estado de tu concesión para ver si está activa, lo que significa que has recibido la elevación temporal.

Buscar derechos disponibles

gcloud

El comando gcloud pam entitlements search con el tipo de acceso de la persona que llama grant-requester busca los derechos para los que puedes solicitar una concesión.

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

  • RESOURCE_TYPE: opcional. El tipo de recurso al que pertenece el derecho. Usa el valor organization, folder o project.
  • RESOURCE_ID: se usa con RESOURCE_TYPE. El ID del proyecto, la carpeta o la organización Trusted Cloud para los que quieres gestionar los derechos. Los IDs de proyecto son cadenas alfanuméricas, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud pam entitlements search \
    --caller-access-type=grant-requester \
    --location=global \
    --RESOURCE_TYPE=RESOURCE_ID

Windows (PowerShell)

gcloud pam entitlements search `
    --caller-access-type=grant-requester `
    --location=global `
    --RESOURCE_TYPE=RESOURCE_ID

Windows (cmd.exe)

gcloud pam entitlements search ^
    --caller-access-type=grant-requester ^
    --location=global ^
    --RESOURCE_TYPE=RESOURCE_ID

Deberías recibir una respuesta similar a la siguiente:

additionalNotificationTargets: {}
approvalWorkflow:
  manualApprovals:
    requireApproverJustification: true
    steps:
    - approvalsNeeded: 1
      approvers:
      - principals:
        - user:alex@example.com
createTime: '22024-03-26T11:07:37.009498890Z'
etag: ETAG
maxRequestDuration: 3600s
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:
  notMandatory: {}
state: AVAILABLE
updateTime: '2024-03-26T11:07:40.056780645Z'

REST

El método searchEntitlements de la API Privileged Access Manager con el tipo de acceso de la persona que llama GRANT_REQUESTER busca los derechos para los que puedes solicitar una concesión.

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

  • SCOPE: la organización, la carpeta o el proyecto en el que se encuentra el derecho, con el formato organizations/ORGANIZATION_ID, folders/FOLDER_ID o projects/PROJECT_ID. Los IDs de proyecto son cadenas alfanuméricas, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.
  • FILTER: opcional. Devuelve los derechos cuyos valores de campo coinciden con una expresión AIP-160.
  • PAGE_SIZE: opcional. Número de elementos que se van a devolver en una respuesta.
  • PAGE_TOKEN: opcional. Página desde la que se inicia la respuesta, mediante un token de página devuelto en una respuesta anterior.

Método HTTP y URL:

GET https://privilegedaccessmanager.googleapis.com/v1/SCOPE/locations/global/entitlements:search?callerAccessType=GRANT_REQUESTER&filter=FILTER&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN

Para enviar tu solicitud, despliega una de estas opciones:

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

[
  {
    "name": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID",
    "createTime": "2023-11-21T17:28:39.962144708Z",
    "updateTime": "2023-11-21T17:28:43.160309410Z",
    "eligibleUsers": [
      {
        "principals": [
          "user:alex@example.com"
        ]
      }
    ],
    "approvalWorkflow": {
      "manualApprovals": {
        "steps": [
          {
            "approvers": [
              {
                "principals": [
                  "user:bola@example.com"
                ]
              }
            ],
            "approvalsNeeded": 1
          }
        ]
      }
    },
    "privilegedAccess": {
      "gcpIamAccess": {
        "resourceType": "cloudresourcemanager.googleapis.com/Project",
        "resource": "//cloudresourcemanager.googleapis.com/projects/my-project",
        "roleBindings": [
          {
            "role": "roles/storage.admin"
          }
        ]
      }
    },
    "maxRequestDuration": "14400s",
    "state": "AVAILABLE",
    "requesterJustificationConfig": {
      "unstructured": {}
    },
    "additionalNotificationTargets": {
      "adminEmailRecipients": [
        "alex@example.com"
      ]
    },
    "etag": "ETAG"
  }
]

Solicitar una concesión de un derecho

gcloud

El comando gcloud pam grants create solicita un permiso.

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

  • ENTITLEMENT_ID: ID del derecho para crear la concesión.
  • GRANT_DURATION: duración solicitada de la concesión, en segundos.
  • JUSTIFICATION: la justificación de la solicitud de la subvención.
  • EMAIL_ADDRESS: opcional. Direcciones de correo adicionales a las que se debe notificar la solicitud de concesión. Las identidades de Google asociadas a los aprobadores reciben una notificación automáticamente. Sin embargo, puede que quieras enviar notificaciones a otro conjunto de direcciones de correo, sobre todo si usas Federación de identidades de la plantilla.
  • RESOURCE_TYPE: opcional. El tipo de recurso al que pertenece el derecho. Usa el valor organization, folder o project.
  • RESOURCE_ID: se usa con RESOURCE_TYPE. El ID del proyecto, la carpeta o la organización Trusted Cloud para los que quieres gestionar los derechos. Los IDs de proyecto son cadenas alfanuméricas, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud pam grants create \
    --entitlement=ENTITLEMENT_ID \
    --requested-duration="GRANT_DURATIONs" \
    --justification="JUSTIFICATION" \
    --location=global \
    [--additional-email-recipients=EMAIL_ADDRESS_1, EMAIL_ADDRESS_2] \
    --RESOURCE_TYPE=RESOURCE_ID

Windows (PowerShell)

gcloud pam grants create `
    --entitlement=ENTITLEMENT_ID `
    --requested-duration="GRANT_DURATIONs" `
    --justification="JUSTIFICATION" `
    --location=global `
    [--additional-email-recipients=EMAIL_ADDRESS_1, EMAIL_ADDRESS_2] `
    --RESOURCE_TYPE=RESOURCE_ID

Windows (cmd.exe)

gcloud pam grants create ^
    --entitlement=ENTITLEMENT_ID ^
    --requested-duration="GRANT_DURATIONs" ^
    --justification="JUSTIFICATION" ^
    --location=global ^
    [--additional-email-recipients=EMAIL_ADDRESS_1, EMAIL_ADDRESS_2] ^
    --RESOURCE_TYPE=RESOURCE_ID

Deberías recibir una respuesta similar a la siguiente:

Created [GRANT_ID].

REST

El método createGrant de la API Privileged Access Manager solicita una concesión.

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

  • SCOPE: la organización, la carpeta o el proyecto en el que se encuentra el derecho, con el formato organizations/ORGANIZATION_ID, folders/FOLDER_ID o projects/PROJECT_ID. Los IDs de proyecto son cadenas alfanuméricas, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.
  • ENTITLEMENT_ID: ID del derecho para crear la concesión.
  • REQUEST_ID: opcional. Debe ser un UUID distinto de cero. Si el servidor recibe una solicitud con un ID de solicitud, comprueba si ya se ha completado otra solicitud con ese ID en los últimos 60 minutos. Si es así, se ignora la nueva solicitud.
  • GRANT_DURATION: duración solicitada de la concesión, en segundos.
  • JUSTIFICATION: la justificación de la solicitud de la subvención.
  • EMAIL_ADDRESS: opcional. Direcciones de correo adicionales a las que se debe notificar la solicitud de concesión. Las identidades de Google asociadas a los aprobadores reciben una notificación automáticamente. Sin embargo, puede que quieras enviar notificaciones a otro conjunto de direcciones de correo, sobre todo si usas Federación de identidades de la plantilla.

Método HTTP y URL:

POST https://privilegedaccessmanager.googleapis.com/v1/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants?requestId=REQUEST_ID

Cuerpo JSON de la solicitud:

{
  "requestedDuration": "GRANT_DURATIONs",
  "justification": {
    "unstructuredJustification": "JUSTIFICATION"
  },
  "additionalEmailRecipients": [
    "EMAIL_ADDRESS_1",
    "EMAIL_ADDRESS_2",
    ...
  ]
}

Para enviar tu solicitud, despliega una de estas opciones:

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

{
  "name": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID",
  "createTime": "2024-03-06T03:08:49.330577625Z",
  "updateTime": "2024-03-06T03:08:49.330577625Z",
  "requester": "bola@example.com",
  "requestedDuration": "3600s",
  "justification": {
    "unstructuredJustification": "Emergency service for outage"
  },
  "state": "APPROVAL_AWAITED",
  "timeline": {
    "events": [
      {
        "eventTime": "2024-03-06T03:08:49.462765846Z",
        "requested": {
          "expireTime": "2024-03-07T03:08:49.462765846Z"
        }
      }
    ]
  },
  "privilegedAccess": {
    "gcpIamAccess": {
      "resourceType": "cloudresourcemanager.googleapis.com/Project",
      "resource": "//cloudresourcemanager.googleapis.com/projects/my-project",
      "roleBindings": [
        {
          "role": "roles/storage.admin"
        }
      ]
    }
  },
  "additionalEmailRecipients": [
    "alex@example.com"
  ]
}

Consultar el estado de una solicitud de subvención

gcloud

El comando gcloud pam grants search se usa con la relación de llamada had-created para buscar las concesiones que has creado. Para comprobar su estado, busca el campo state en la respuesta.

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

  • ENTITLEMENT_ID: ID del derecho al que pertenece la concesión.
  • RESOURCE_TYPE: opcional. El tipo de recurso al que pertenece el derecho. Usa el valor organization, folder o project.
  • RESOURCE_ID: se usa con RESOURCE_TYPE. El ID del proyecto, la carpeta o la organización Trusted Cloud para los que quieres gestionar los derechos. Los IDs de proyecto son cadenas alfanuméricas, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud pam grants search \
    --entitlement=ENTITLEMENT_ID \
    --caller-relationship=had-created \
    --location=global \
    --RESOURCE_TYPE=RESOURCE_ID

Windows (PowerShell)

gcloud pam grants search `
    --entitlement=ENTITLEMENT_ID `
    --caller-relationship=had-created `
    --location=global `
    --RESOURCE_TYPE=RESOURCE_ID

Windows (cmd.exe)

gcloud pam grants search ^
    --entitlement=ENTITLEMENT_ID ^
    --caller-relationship=had-created ^
    --location=global ^
    --RESOURCE_TYPE=RESOURCE_ID

Deberías recibir una respuesta similar a la siguiente:

additionalEmailRecipients:
- bola@example.com
createTime: '2024-03-07T00:34:32.557017289Z'
justification:
  unstructuredJustification: Renaming a file to mitigate issue #312
name: projects/my-project/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID
privilegedAccess:
  gcpIamAccess:
    resource: //cloudresourcemanager.googleapis.com/projects/my-project
    resourceType: cloudresourcemanager.googleapis.com/Project
    roleBindings:
    - role: roles/storage.admin
requestedDuration: 3600s
requester: cruz@example.com
state: DENIED
timeline:
  events:
  - eventTime: '2024-03-07T00:34:32.793769042Z'
    requested:
      expireTime: '2024-03-08T00:34:32.793769042Z'
  - denied:
      actor: alex@example.com
      reason: Issue has already been resolved
    eventTime: '2024-03-07T00:36:08.309116203Z'
updateTime: '2024-03-07T00:34:32.926967128Z'

Las subvenciones pueden tener los siguientes estados:

Estado Descripción
ACTIVANDO La concesión está en proceso de activación.
ACTIVATION_FAILED Privileged Access Manager no ha podido conceder los roles debido a un error no recuperable.
ACTIVA La concesión está activa y la entidad principal tiene acceso a los recursos permitidos por los roles.
APPROVAL_AWAITED La solicitud de concesión está pendiente de la decisión de un aprobador.
RECHAZADA Un aprobador ha denegado la solicitud de concesión.
FINALIZADO La concesión ha finalizado y los roles se han quitado de la entidad principal.
CADUCADA La solicitud de concesión ha caducado porque no se ha concedido la aprobación en un plazo de 24 horas.
REVOKED Se revoca la concesión y la entidad principal ya no tiene acceso a los recursos permitidos por los roles.
REVOCACIÓN La concesión se está revocando.

REST

El método searchGrants de la API Privileged Access Manager se usa con la relación de la persona que llama HAD_CREATED para buscar las concesiones que has creado. Para comprobar su estado, busca el campo state en la respuesta.

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

  • SCOPE: la organización, la carpeta o el proyecto en el que se encuentra el derecho, con el formato organizations/ORGANIZATION_ID, folders/FOLDER_ID o projects/PROJECT_ID. Los IDs de proyecto son cadenas alfanuméricas, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.
  • ENTITLEMENT_ID: ID del derecho al que pertenece la concesión.
  • FILTER: opcional. Devuelve las concesiones cuyos valores de campo coinciden con una expresión AIP-160.
  • PAGE_SIZE: opcional. Número de elementos que se van a devolver en una respuesta.
  • PAGE_TOKEN: opcional. Página desde la que se inicia la respuesta, mediante un token de página devuelto en una respuesta anterior.

Método HTTP y URL:

GET https://privilegedaccessmanager.googleapis.com/v1/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants:search?callerRelationship=HAD_CREATED&filter=FILTER&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN

Para enviar tu solicitud, despliega una de estas opciones:

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

{
  "grants": [
    {
      "name": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID",
      "createTime": "2024-03-06T03:08:49.330577625Z",
      "updateTime": "2024-03-06T03:08:49.625874598Z",
      "requester": "alex@example.com",
      "requestedDuration": "3600s",
      "justification": {
        "unstructuredJustification": "Emergency service for outage"
      },
      "state": "APPROVAL_AWAITED",
      "timeline": {
        "events": [
          {
            "eventTime": "2024-03-06T03:08:49.462765846Z",
            "requested": {
              "expireTime": "2024-03-07T03:08:49.462765846Z"
            }
          }
        ]
      },
      "privilegedAccess": {
        "gcpIamAccess": {
          "resourceType": "cloudresourcemanager.googleapis.com/Project",
          "resource": "//cloudresourcemanager.googleapis.com/projects/my-project",
          "roleBindings": [
            {
              "role": "roles/storage.admin"
            }
          ]
        }
      },
      "additionalEmailRecipients": [
        "bola@google.com"
      ]
    }
  ]
}

En la siguiente tabla se detallan los estados de las concesiones.

Estado Descripción
ACTIVANDO La concesión está en proceso de activación.
ACTIVATION_FAILED Privileged Access Manager no ha podido conceder los roles debido a un error no recuperable.
ACTIVA La concesión está activa y la entidad principal tiene acceso a los recursos permitidos por los roles.
APPROVAL_AWAITED La solicitud de concesión está pendiente de la decisión de un aprobador.
RECHAZADA Un aprobador ha denegado la solicitud de concesión.
FINALIZADO La concesión ha finalizado y los roles se han quitado de la entidad principal.
CADUCADA La solicitud de concesión ha caducado porque no se ha concedido la aprobación en un plazo de 24 horas.
REVOKED Se revoca la concesión y la entidad principal ya no tiene acceso a los recursos permitidos por los roles.
REVOCACIÓN La concesión se está revocando.