Cuando un derecho tiene un flujo de trabajo de aprobación, los principales especificados como responsables de aprobación pueden aprobar o rechazar las solicitudes de otorgamiento de ese derecho.
Si el nivel Premium o Enterprise de Security Command Center está activado a nivel de la organización, el flujo de trabajo de aprobación puede tener dos niveles de aprobaciones. Un aprobador puede estar en uno o ambos niveles de aprobación, pero solo puede aprobar una vez. Después de recibir la cantidad requerida de aprobaciones de primer nivel, se envían notificaciones por correo electrónico a los aprobadores de segundo nivel. Después de recibir la cantidad requerida de aprobaciones de segundo nivel, el subsidio pasa al estado active. Si algún aprobador rechaza el otorgamiento, este pasa al estado denied y no se envía a ningún aprobador adicional. Esta función está disponible en vista previa.
Ten en cuenta lo siguiente cuando apruebes o rechaces una solicitud de concesión en función de un derecho:
No puedes aprobar tu propia solicitud.
Si una solicitud no se aprueba ni se rechaza en 24 horas, el estado de la concesión cambia a
expired. Después de esto, un principal debe realizar una nueva solicitud de otorgamiento si aún se requiere la elevación de privilegios.
Aprueba o rechaza las concesiones con la consola de Google Cloud
Para aprobar o rechazar una solicitud de otorgamiento que se realizó en función de un derecho, completa las siguientes instrucciones:
Ve a la página Privileged Access Manager.
Haz clic en la pestaña Aprobar subvenciones y, luego, en la pestaña Aprobación pendiente.
En la fila relacionada con la solicitud que quieres aprobar o rechazar, haz clic en Aprobar/rechazar.
Si se requiere una justificación, ingrésala en el campo Comentario. Puedes ver el historial del subsidio en la pestaña Historial.
Haz clic en Aprobar o Rechazar.
Puedes ver tu historial de aprobaciones en la pestaña Mi historial de aprobación. El historial de aprobación está disponible durante 30 días después de que se realiza una acción de aprobación. Los permisos creados en derechos heredados de un recurso principal aparecen en el historial de aprobaciones del recurso principal.
Aprueba o rechaza las concesiones de forma programática
Para aprobar o rechazar las subvenciones, debes completar las siguientes acciones:
Busca los derechos para los que tienes permiso de aprobación.
Con el ID de derecho relevante, busca las solicitudes de otorgamiento que puedes aprobar o rechazar.
Aprobar o rechazar las solicitudes de otorgamiento.
Busca los derechos para los que tienes permiso de aprobación
gcloud
El
comando
gcloud pam entitlements search
con el tipo de acceso del emisor grant-approver
busca derechos en los que eres revisor.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
RESOURCE_TYPE: Opcional Es el tipo de recurso al que pertenece el derecho. Usa el valororganization,folderoproject.RESOURCE_ID: Se usa conRESOURCE_TYPE. Es el ID del proyecto, la carpeta o la organización de Google Cloud para el que deseas administrar los derechos. Los IDs de proyecto son cadenas alfanuméricas, comomy-project. Los IDs de carpeta y organización son numéricos, como123456789012.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud pam entitlements search \ --caller-access-type=grant-approver \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows (PowerShell)
gcloud pam entitlements search ` --caller-access-type=grant-approver ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows (cmd.exe)
gcloud pam entitlements search ^ --caller-access-type=grant-approver ^ --location=global ^ --RESOURCE_TYPE=RESOURCE_ID
Deberías recibir una respuesta similar a la que figura a continuación:
additionalNotificationTargets: {}
approvalWorkflow:
manualApprovals:
requireApproverJustification: true
steps:
- approvalsNeeded: 1
approvers:
- principals:
- user:alex@example.com
createTime: '22024-03-26T11:07:37.009498890Z'
etag: 00000000000000000000000000000000000000000000000000000000000=
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 de Privileged Access Manager
con el tipo de acceso del emisor GRANT_APPROVER
busca derechos en los que eres responsable de aprobación.
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 encuentra el derecho, en el formatoorganizations/ORGANIZATION_ID,folders/FOLDER_IDoprojects/PROJECT_ID. Los IDs de proyecto son cadenas alfanuméricas, comomy-project. Los IDs de carpeta y organización son numéricos, como123456789012.FILTER: Opcional Muestra los derechos cuyos valores de campo coinciden con una expresión de AIP-160.PAGE_SIZE: Opcional Es la cantidad de elementos que se mostrarán en una respuesta.PAGE_TOKEN: Opcional La página desde la que se debe iniciar la respuesta, con un token de página que se muestra en una respuesta anterior.
Método HTTP y URL:
GET https://privilegedaccessmanager.googleapis.com/v1/SCOPE/locations/global/entitlements:search?callerAccessType=GRANT_APPROVER&filter=FILTER&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN
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/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": "00000000000000000000000000000000000000000000000000000000000="
}
]
Busca solicitudes de otorgamiento que puedas aprobar o rechazar
gcloud
El
comando
gcloud alpha pam grants search
busca una subvención que puedas aprobar o rechazar o que ya
hayas aprobado o rechazado. Este método no requiere permisos específicos de Privileged Access Manager
para usarlo.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
ENTITLEMENT_ID: Es el ID del derecho al que pertenece la concesión. Para recuperar el ID, puedes buscar los derechos de los que eres revisor.-
CALLER_RELATIONSHIP_TYPE: Usa uno de los siguientes valores:had-approved: Muestra los permisos que el emisor aprobó o rechazó.can-approve: Muestra las concesiones que el emisor puede aprobar o rechazar.
RESOURCE_TYPE: Opcional Es el tipo de recurso al que pertenece el derecho. Usa el valororganization,folderoproject.RESOURCE_ID: Se usa conRESOURCE_TYPE. Es el ID del proyecto, la carpeta o la organización de Google Cloud para el que deseas administrar los derechos. Los IDs de proyecto son cadenas alfanuméricas, comomy-project. Los IDs de carpeta y organización son numéricos, como123456789012.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud alpha pam grants search \ --entitlement=ENTITLEMENT_ID \ --caller-relationship=CALLER_RELATIONSHIP_TYPE \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows (PowerShell)
gcloud alpha pam grants search ` --entitlement=ENTITLEMENT_ID ` --caller-relationship=CALLER_RELATIONSHIP_TYPE ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows (cmd.exe)
gcloud alpha pam grants search ^ --entitlement=ENTITLEMENT_ID ^ --caller-relationship=CALLER_RELATIONSHIP_TYPE ^ --location=global ^ --RESOURCE_TYPE=RESOURCE_ID
Deberías recibir una respuesta similar a la que figura a continuación:
additionalEmailRecipients:
- bola@example.com
createTime: '2024-03-07T00:34:32.557017289Z'
justification:
unstructuredJustification: Renaming a file to mitigate issue #312
name: projects/PROJECT_ID/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID
privilegedAccess:
gcpIamAccess:
resource: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID
resourceType: cloudresourcemanager.googleapis.com/Project
roleBindings:
- role: roles/storage.admin
id: hwqrt_1
requestedDuration: 3600s
requestedPrivilegedAccess:
gcpIamAccess:
resource: //cloudresourcemanager.googleapis.com/projects/PROJECT_ID
resourceType: cloudresourcemanager.googleapis.com/Project
roleBindings:
- role: roles/storage.admin
entitlementRoleBindingId: hwqrt_1
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'
REST
El método searchGrants de la API de Privileged Access Manager busca un otorgamiento que puedas aprobar o rechazar o que ya hayas aprobado o rechazado. Este método no requiere permisos específicos de Privileged Access Manager
para usarlo.
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 encuentra el derecho, en el formatoorganizations/ORGANIZATION_ID,folders/FOLDER_IDoprojects/PROJECT_ID. Los IDs de proyecto son cadenas alfanuméricas, comomy-project. Los IDs de carpeta y organización son numéricos, como123456789012.ENTITLEMENT_ID: Es el ID del derecho al que pertenece la concesión. Para recuperar el ID, puedes buscar los derechos de los que eres revisor.RELATIONSHIP_TYPE: Estos son los valores válidos:HAD_APPROVED: Muestra las concesiones que el emisor aprobó o denegó anteriormente.CAN_APPROVE: Muestra las concesiones que el emisor puede aprobar o rechazar.
FILTER: Opcional Muestra las subvenciones cuyos valores de campo coinciden con una expresión de AIP-160.PAGE_SIZE: Opcional Es la cantidad de elementos que se mostrarán en una respuesta.PAGE_TOKEN: Opcional La página desde la que se debe iniciar la respuesta, con un token de página que se muestra en una respuesta anterior.
Método HTTP y URL:
GET https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants:search?callerRelationship=RELATIONSHIP_TYPE&filter=FILTER&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{
"grants": [
{
"name": "projects/PROJECT_ID/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/PROJECT_ID",
"roleBindings": [
{
"role": "roles/storage.admin"
"id": "hwqrt_1"
}
]
}
},
"requestedPrivilegedAccess": {
"gcpIamAccess": {
"resourceType": "cloudresourcemanager.googleapis.com/Project",
"resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
"roleBindings": [
{
"role": "roles/storage.admin",
"entitlementRoleBindingId": "hwqrt_1"
}
]
}
},
"additionalEmailRecipients": [
"bola@google.com"
]
}
]
}
Cómo aprobar otorgamientos de manera programática
gcloud
El comando
gcloud pam grants describe
aprueba una solicitud de subvención específica.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
GRANT_ID: Es el ID de la subvención que apruebas. Para recuperar el ID, puedes buscar solicitudes de subvenciones que puedas aprobar o rechazar.ENTITLEMENT_ID: Es el ID del derecho al que pertenece la concesión.APPROVAL_REASON: Por qué se aprobó el otorgamiento.RESOURCE_TYPE: Opcional Es el tipo de recurso al que pertenece el derecho. Usa el valororganization,folderoproject.RESOURCE_ID: Se usa conRESOURCE_TYPE. Es el ID del proyecto, la carpeta o la organización de Google Cloud para el que deseas administrar los derechos. Los IDs de proyecto son cadenas alfanuméricas, comomy-project. Los IDs de carpeta y organización son numéricos, como123456789012.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud pam grants approve \ GRANT_ID \ --entitlement=ENTITLEMENT_ID \ --reason="APPROVAL_REASON" \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows (PowerShell)
gcloud pam grants approve ` GRANT_ID ` --entitlement=ENTITLEMENT_ID ` --reason="APPROVAL_REASON" ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows (cmd.exe)
gcloud pam grants approve ^ GRANT_ID ^ --entitlement=ENTITLEMENT_ID ^ --reason="APPROVAL_REASON" ^ --location=global ^ --RESOURCE_TYPE=RESOURCE_ID
Deberías recibir una respuesta similar a la que figura a continuación:
createTime: '2024-04-05T01:17:04.596455403Z'
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: 2700s
requester: cruz@example.com
state: SCHEDULED
timeline:
events:
- eventTime: '2024-04-05T01:17:04.732226659Z'
requested:
expireTime: '2024-04-06T01:17:04.732226659Z'
- approved:
actor: alex@example.com
reason: Access allowed under existing policy
eventTime: '2024-04-05T01:21:49.139539732Z'
- eventTime: '2024-04-05T01:21:49.139463954Z'
scheduled:
scheduledActivationTime: '2024-04-05T01:21:49.139463954Z'
updateTime: '2024-04-05T01:21:49.139463954Z'
REST
El método approveGrant de la API de Privileged Access Manager
aprueba una solicitud de otorgamiento específica.
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 encuentra el derecho, en el formatoorganizations/ORGANIZATION_ID,folders/FOLDER_IDoprojects/PROJECT_ID. Los IDs de proyecto son cadenas alfanuméricas, comomy-project. Los IDs de carpeta y organización son numéricos, como123456789012.ENTITLEMENT_ID: Es el ID del derecho al que pertenece la concesión.GRANT_ID: Es el ID de la subvención que apruebas. Para recuperar el ID, puedes buscar solicitudes de subvenciones que puedas aprobar o rechazar.REASON: El motivo por el que se aprobó la solicitud de otorgamiento.
Método HTTP y URL:
POST https://privilegedaccessmanager.googleapis.com/v1/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID:approve
Cuerpo JSON de la solicitud:
{
"reason": "REASON"
}
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/entitlements/ENTITLEMENT_ID/grants/GRANT_ID",
"createTime": "2024-03-06T03:08:49.330577625Z",
"updateTime": "2024-03-06T23:01:13.964619844Z",
"requester": "alex@example.com",
"requestedDuration": "3600s",
"justification": {
"unstructuredJustification": "Emergency service for outage"
},
"state": "SCHEDULED",
"timeline": {
"events": [
{
"eventTime": "2024-03-06T03:08:49.462765846Z",
"requested": {
"expireTime": "2024-03-07T03:08:49.462765846Z"
}
},
{
"eventTime": "2024-03-06T23:01:13.964685709Z",
"approved": {
"reason": "Approved escalation",
"actor": "cruz@example.com"
}
},
{
"eventTime": "2024-03-06T23:01:13.964619844Z",
"scheduled": {
"scheduledActivationTime": "2024-03-06T23:01:13.964619844Z"
}
}
]
},
"privilegedAccess": {
"gcpIamAccess": {
"resourceType": "cloudresourcemanager.googleapis.com/Project",
"resource": "//cloudresourcemanager.googleapis.com/projects/my-project",
"roleBindings": [
{
"role": "roles/storage.admin"
}
]
}
},
"additionalEmailRecipients": [
"bola@example.com.com"
]
}
Cómo denegar otorgamientos de manera programática
gcloud
El
comando
gcloud pam grants describe
rechaza una solicitud de subvención específica.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
GRANT_ID: Es el ID de la concesión que rechazas. Para recuperar el ID, busca las subvenciones que puedes aprobar o rechazar.ENTITLEMENT_ID: Es el ID del derecho al que pertenece la concesión.DENIAL_REASON: Por qué se rechazó el otorgamiento.RESOURCE_TYPE: Opcional Es el tipo de recurso al que pertenece el derecho. Usa el valororganization,folderoproject.RESOURCE_ID: Se usa conRESOURCE_TYPE. Es el ID del proyecto, la carpeta o la organización de Google Cloud para el que deseas administrar los derechos. Los IDs de proyecto son cadenas alfanuméricas, comomy-project. Los IDs de carpeta y organización son numéricos, como123456789012.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud pam grants deny \ GRANT_ID \ --entitlement=ENTITLEMENT_ID \ --reason="DENIAL_REASON" \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows (PowerShell)
gcloud pam grants deny ` GRANT_ID ` --entitlement=ENTITLEMENT_ID ` --reason="DENIAL_REASON" ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows (cmd.exe)
gcloud pam grants deny ^ GRANT_ID ^ --entitlement=ENTITLEMENT_ID ^ --reason="DENIAL_REASON" ^ --location=global ^ --RESOURCE_TYPE=RESOURCE_ID
Deberías recibir una respuesta similar a la que figura a continuación:
createTime: '2024-04-05T01:29:13.129192816Z'
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: 2700s
requester: cruz@example.com
state: DENIED
timeline:
events:
- eventTime: '2024-04-05T01:29:13.267878626Z'
requested:
expireTime: '2024-04-06T01:29:13.267878626Z'
- denied:
actor: alex@example.com
reason: Access denied under existing policy
eventTime: '2024-04-05T01:29:49.492161363Z'
updateTime: '2024-04-05T01:29:49.492097724Z'
REST
El método denyGrant de la API de Privileged Access Manager niega una solicitud de otorgamiento específica.
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 encuentra el derecho, en el formatoorganizations/ORGANIZATION_ID,folders/FOLDER_IDoprojects/PROJECT_ID. Los IDs de proyecto son cadenas alfanuméricas, comomy-project. Los IDs de carpeta y organización son numéricos, como123456789012.ENTITLEMENT_ID: Es el ID del derecho al que pertenece la concesión.GRANT_ID: Es el ID de la subvención que rechazas. Para recuperar el ID, puedes buscar las subvenciones que puedes aprobar o rechazar.REASON: Es el motivo por el que se rechazó la solicitud de otorgamiento.
Método HTTP y URL:
POST https://privilegedaccessmanager.googleapis.com/v1/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID:deny
Cuerpo JSON de la solicitud:
{
"reason": "REASON"
}
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/entitlements/ENTITLEMENT_ID/grants/GRANT_ID",
"createTime": "2024-03-07T00:34:32.557017289Z",
"updateTime": "2024-03-07T00:36:08.309046580Z",
"requester": "alex@example.com",
"requestedDuration": "3600s",
"justification": {
"unstructuredJustification": "Emergency service for outage"
},
"state": "DENIED",
"timeline": {
"events": [
{
"eventTime": "2024-03-07T00:34:32.793769042Z",
"requested": {
"expireTime": "2024-03-08T00:34:32.793769042Z"
}
},
{
"eventTime": "2024-03-07T00:36:08.309116203Z",
"denied": {
"reason": "Outage already resolved",
"actor": "cruz@example.com"
}
}
]
},
"privilegedAccess": {
"gcpIamAccess": {
"resourceType": "cloudresourcemanager.googleapis.com/Project",
"resource": "//cloudresourcemanager.googleapis.com/projects/my-project",
"roleBindings": [
{
"role": "roles/storage.admin"
}
]
}
},
"additionalEmailRecipients": [
"bola@example.com"
]
}