Depois que um direito de acesso é criado, alguns administradores podem solicitar uma concessão para esse direito de acesso. Se esse direito de acesso tiver um fluxo de trabalho de aprovação especificado, os principais configurados como aprovadores poderão aprovar ou negar solicitações de concessão desse direito.
Considere o seguinte ao aprovar ou negar um pedido de concessão de um direito de acesso:
Não é possível aprovar sua própria solicitação.
Se uma solicitação não for aprovada ou negada em 24 horas, o status de concessão será alterado para
expired
. Depois disso, um principal precisa fazer uma nova solicitação de concessão se a elevação de privilégio ainda for necessária.
Aprovar ou negar benefícios usando o console do Google Cloud
Para aprovar ou negar um pedido de concessão feito em relação a um direito, siga estas instruções:
Acesse a página Privileged Access Manager.
Clique na guia Aprovar concessões e, em seguida, na guia Aprovação pendente.
Na linha relacionada à solicitação que você quer aprovar ou negar, clique em Aprovar/negar.
Se for necessário, insira uma justificativa no campo Comentário.
Clique em Aprovar ou Negar.
Visualize o histórico de aprovação na guia Meu histórico de aprovação. O histórico de aprovação fica disponível por 30 dias após uma ação de aprovação.
Aprovar ou negar permissões de forma programática
Para aprovar ou negar permissões, faça as seguintes ações:
Pesquisar direitos de acesso que você aprovou.
Com o ID de direito relevante, pesquise solicitações de concessão para aprovar ou negar.
Aprovar ou negar as solicitações de concessão.
Pesquisar direitos de acesso que você aprovou
gcloud
O comando
gcloud beta pam entitlements search
com o tipo de acesso de chamador grant-approver
procura direitos a que você tem acesso de aprovação.
Antes de usar os dados do comando abaixo, faça estas substituições:
RESOURCE_TYPE
: opcional. O tipo de recurso ao qual o direito de acesso pertence. Use o valororganization
,folder
ouproject
.RESOURCE_ID
: usada comRESOURCE_TYPE
. O ID do projeto, da pasta ou da organização do Google Cloud que você quer gerenciar os direitos de acesso. Os IDs do projeto são strings alfanuméricas, comomy-project
. Os códigos de pastas e organizações são numéricos, como123456789012
.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud beta pam entitlements search \ --caller-access-type=grant-approver \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows (PowerShell)
gcloud beta pam entitlements search ` --caller-access-type=grant-approver ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows (cmd.exe)
gcloud beta pam entitlements search ^ --caller-access-type=grant-approver ^ --location=global ^ --RESOURCE_TYPE=RESOURCE_ID
Você receberá uma resposta semelhante a esta:
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
O método searchEntitlements
da API Privileged Access Manager com o tipo de acesso
de chamador GRANT_APPROVER
procura direitos de acesso a que você tem acesso para a aprovação.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
SCOPE
: a organização, a pasta ou o projeto em que o direito de acesso está, no formato deorganizations/ORGANIZATION_ID
,folders/FOLDER_ID
ouprojects/PROJECT_ID
. Os IDs do projeto são strings alfanuméricas, comomy-project
. Os códigos de pastas e organizações são numéricos, como123456789012
.FILTER
: opcional. Retorna os direitos de acesso cujos valores de campo correspondem a uma expressão AIP-160.PAGE_SIZE
: opcional. O número de itens a serem retornados em uma resposta.PAGE_TOKEN
: opcional. A página em que a resposta vai começar, usando um token de página retornado em uma resposta anterior.
Método HTTP e URL:
GET https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements:search?callerAccessType=GRANT_APPROVER&filter=FILTER&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
[ { "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=" } ]
Pesquisar solicitações de benefício que você pode aprovar ou negar
gcloud
O comando
gcloud beta pam grants search
pesquisa uma concessão que pode ser aprovada ou negada ou que já
foi aprovada ou negada. Esse método não exige permissões específicas do Privileged Access Manager
para ser usado.
Antes de usar os dados do comando abaixo, faça estas substituições:
ENTITLEMENT_ID
: o ID do direito de acesso a que o acesso pertence. Para recuperar o ID, pesquise os direitos de acesso que você aprovou.-
CALLER_RELATIONSHIP_TYPE
: use um dos seguintes valores:had-approved
: retorna as concessões que o autor da chamada aprovou ou negou.can-approve
: retorna as permissões que o autor da chamada pode aprovar ou negar.
RESOURCE_TYPE
: opcional. O tipo de recurso ao qual o direito de acesso pertence. Use o valororganization
,folder
ouproject
.RESOURCE_ID
: usada comRESOURCE_TYPE
. O ID do projeto, da pasta ou da organização do Google Cloud que você quer gerenciar os direitos de acesso. Os IDs do projeto são strings alfanuméricas, comomy-project
. Os códigos de pastas e organizações são numéricos, como123456789012
.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud beta pam grants search \ --entitlement=ENTITLEMENT_ID \ --caller-relationship=CALLER_RELATIONSHIP_TYPE \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows (PowerShell)
gcloud beta pam grants search ` --entitlement=ENTITLEMENT_ID ` --caller-relationship=CALLER_RELATIONSHIP_TYPE ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows (cmd.exe)
gcloud beta pam grants search ^ --entitlement=ENTITLEMENT_ID ^ --caller-relationship=CALLER_RELATIONSHIP_TYPE ^ --location=global ^ --RESOURCE_TYPE=RESOURCE_ID
Você receberá uma resposta semelhante a esta:
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'
REST
O método searchGrants
da API Privileged Access Manager pesquisa uma concessão que você pode aprovar ou recusar ou que já
foi aprovada ou recusada. Esse método não exige permissões específicas do Privileged Access Manager
para ser usado.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
SCOPE
: a organização, a pasta ou o projeto em que o direito de acesso está, no formato deorganizations/ORGANIZATION_ID
,folders/FOLDER_ID
ouprojects/PROJECT_ID
. Os IDs do projeto são strings alfanuméricas, comomy-project
. Os códigos de pastas e organizações são numéricos, como123456789012
.ENTITLEMENT_ID
: o ID do direito de acesso a que o acesso pertence. Para recuperar o ID, pesquise os direitos de acesso que você aprovou.RELATIONSHIP_TYPE
: os valores válidos são:HAD_APPROVED
: retorna as concessões que o autor da chamada aprovou ou negou anteriormente.CAN_APPROVE
: retorna as permissões que o autor da chamada pode aprovar ou negar.
FILTER
: opcional. Retorna as concessões cujos valores de campo correspondem a uma expressão AIP-160.PAGE_SIZE
: opcional. O número de itens a serem retornados em uma resposta.PAGE_TOKEN
: opcional. A página em que a resposta vai começar, usando um token de página retornado em uma resposta anterior.
Método HTTP e 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 a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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" ] } ] }
Aprovar benefícios de forma programática
gcloud
O comando
gcloud beta pam grants describe
aprova uma solicitação de concessão específica.
Antes de usar os dados do comando abaixo, faça estas substituições:
GRANT_ID
: o ID da concessão que você está aprovando. Para recuperar o ID, pesquise as solicitações de concessão que você pode aprovar ou negar.ENTITLEMENT_ID
: o ID do direito de acesso a que o acesso pertence.APPROVAL_REASON
: por que a concessão foi aprovada.RESOURCE_TYPE
: opcional. O tipo de recurso ao qual o direito de acesso pertence. Use o valororganization
,folder
ouproject
.RESOURCE_ID
: usada comRESOURCE_TYPE
. O ID do projeto, da pasta ou da organização do Google Cloud que você quer gerenciar os direitos de acesso. Os IDs do projeto são strings alfanuméricas, comomy-project
. Os códigos de pastas e organizações são numéricos, como123456789012
.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud beta pam grants approve \ GRANT_ID \ --entitlement=ENTITLEMENT_ID \ --reason="APPROVAL_REASON" \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows (PowerShell)
gcloud beta pam grants approve ` GRANT_ID ` --entitlement=ENTITLEMENT_ID ` --reason="APPROVAL_REASON" ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows (cmd.exe)
gcloud beta pam grants approve ^ GRANT_ID ^ --entitlement=ENTITLEMENT_ID ^ --reason="APPROVAL_REASON" ^ --location=global ^ --RESOURCE_TYPE=RESOURCE_ID
Você receberá uma resposta semelhante a esta:
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
O método
approveGrant
da API Privileged Access Manager aprova uma solicitação de concessão específica.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
SCOPE
: a organização, a pasta ou o projeto em que o direito de acesso está, no formato deorganizations/ORGANIZATION_ID
,folders/FOLDER_ID
ouprojects/PROJECT_ID
. Os IDs do projeto são strings alfanuméricas, comomy-project
. Os códigos de pastas e organizações são numéricos, como123456789012
.ENTITLEMENT_ID
: o ID do direito de acesso a que o acesso pertence.GRANT_ID
: o ID da concessão que você está aprovando. Para recuperar o ID, pesquise as solicitações de concessão que você pode aprovar ou negar.REASON
: o motivo pelo qual a solicitação de concessão foi aprovada.
Método HTTP e URL:
POST https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID:approve
Corpo JSON da solicitação:
{ "reason": "REASON" }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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" ] }
Negar benefícios de forma programática
gcloud
O comando
gcloud beta pam grants describe
nega uma solicitação de concessão específica.
Antes de usar os dados do comando abaixo, faça estas substituições:
GRANT_ID
: o ID da concessão que você está negando. É possível recuperar o ID pesquisando permissões que podem ser aprovadas ou negadas.ENTITLEMENT_ID
: o ID do direito de acesso a que o acesso pertence.DENIAL_REASON
: por que a concessão foi recusada.RESOURCE_TYPE
: opcional. O tipo de recurso ao qual o direito de acesso pertence. Use o valororganization
,folder
ouproject
.RESOURCE_ID
: usada comRESOURCE_TYPE
. O ID do projeto, da pasta ou da organização do Google Cloud que você quer gerenciar os direitos de acesso. Os IDs do projeto são strings alfanuméricas, comomy-project
. Os códigos de pastas e organizações são numéricos, como123456789012
.
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud beta pam grants deny \ GRANT_ID \ --entitlement=ENTITLEMENT_ID \ --reason="DENIAL_REASON" \ --location=global \ --RESOURCE_TYPE=RESOURCE_ID
Windows (PowerShell)
gcloud beta pam grants deny ` GRANT_ID ` --entitlement=ENTITLEMENT_ID ` --reason="DENIAL_REASON" ` --location=global ` --RESOURCE_TYPE=RESOURCE_ID
Windows (cmd.exe)
gcloud beta pam grants deny ^ GRANT_ID ^ --entitlement=ENTITLEMENT_ID ^ --reason="DENIAL_REASON" ^ --location=global ^ --RESOURCE_TYPE=RESOURCE_ID
Você receberá uma resposta semelhante a esta:
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
O método denyGrant
da API Privileged Access Manager
nega uma solicitação de concessão específica.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
SCOPE
: a organização, a pasta ou o projeto em que o direito de acesso está, no formato deorganizations/ORGANIZATION_ID
,folders/FOLDER_ID
ouprojects/PROJECT_ID
. Os IDs do projeto são strings alfanuméricas, comomy-project
. Os códigos de pastas e organizações são numéricos, como123456789012
.ENTITLEMENT_ID
: o ID do direito de acesso a que o acesso pertence.GRANT_ID
: o ID da concessão que você está negando. Para recuperar o ID, pesquise as permissões que você pode aprovar ou negar.REASON
: o motivo de recusa da solicitação de concessão.
Método HTTP e URL:
POST https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements/ENTITLEMENT_ID/grants/GRANT_ID:deny
Corpo JSON da solicitação:
{ "reason": "REASON" }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "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" ] }