Controlar o acesso aos endpoints da Agent Platform

Nesta página, você vai aprender a controlar o acesso a um endpoint da Gemini Enterprise Agent Platform configurando uma política do IAM.

Ela pressupõe que você já conheça os conceitos do IAM, como políticas, papéis, permissões e principais, conforme descrito em Controle de acesso da Agent Platform com o IAM e Conceitos relacionados ao gerenciamento de acesso.

Uma política do IAM inclui uma ou mais vinculações de papel que definem quais papéis do IAM são associados a quais principais. Um papel é um conjunto de permissões concedidas a um principal. A Gemini Enterprise Agent Platform oferece papéis predefinidos que podem ser usados nas suas políticas. Também é possível criar papéis personalizados.

Receber uma política do IAM

É possível visualizar a política atual do IAM em um endpoint da Plataforma de agentes do Gemini Enterprise usando a API REST. Para fazer isso, você precisa ter a permissão endpoints.getIamPolicy no endpoint ou no projeto. O papel de administrador da Agent Platform (roles/aiplatform.admin) concede essa permissão.

REST

Para receber a política do IAM de um recurso, envie uma solicitação POST que use o método getIamPolicy.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION_ID: a região em que o endpoint está localizado, por exemplo, us-central1.
  • PROJECT_ID: o ID do projeto do Google Cloud .
  • ENDPOINT_ID: o ID do endpoint.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy

Para enviar a solicitação, escolha uma destas opções:

curl

Execute o seguinte comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy"

PowerShell

execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy" | Select-Object -Expand Content

Você receberá uma resposta JSON com a política atual do IAM:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.user",
      "members": [
        "user:example@example.com"
      ]
    }
  ]
}

Definir uma política do IAM.

É possível definir uma política do IAM em um endpoint usando a API REST. Para fazer isso, você precisa ter a permissão endpoints.setIamPolicy no endpoint ou no projeto. O papel de administrador da Agent Platform (roles/aiplatform.admin) concede essa permissão.

REST

Para definir a política do IAM em um recurso, envie uma solicitação POST que use o método setIamPolicy.

A definição de uma política do IAM modifica qualquer política atual. As alterações não são anexadas. Para modificar a política de um recurso, use o método getIamPolicy para receber a política e faça modificações. Inclua a política modificada com etag na solicitação setIamPolicy.

Se você receber um código de erro 409, isso significa que uma solicitação setIamPolicy simultânea já atualizou a política. Use o método getIamPolicy para receber o etag atualizado da política e, em seguida, tente fazer a solicitação setIamPolicy novamente com o novo etag.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION_ID: a região em que o endpoint está localizado, por exemplo, us-central1.
  • PROJECT_ID: o ID do projeto do Google Cloud .
  • ENDPOINT_ID: o ID do endpoint.
  • ROLE: um papel do IAM que inclui as permissões a serem concedidas, como roles/aiplatform.user.
  • PRINCIPAL: o principal que tem as permissões do papel, como user:myuser@example.com.
  • ETAG: um valor de string usado para evitar que atualizações simultâneas de uma política sejam substituídas. Esse valor é retornado como parte da resposta de getIamPolicy.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy

Corpo JSON da solicitação:

{
  "policy": {
    "bindings": [
      {
        "role": "ROLE",
        "members": [
          "PRINCIPAL"
        ]
      },
      ...
    ],
    "etag": "ETAG"
  }
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy" | Select-Object -Expand Content

Você receberá uma resposta JSON com a política atual do IAM:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.user",
      "members": [
        "user:example@example.com"
      ]
    }
  ]
}

Verificar as permissões de IAM de um usuário em um endpoint

É possível verificar se o usuário autenticado tem permissões específicas do IAM para um endpoint.

REST

Para verificar se um usuário tem permissões específicas do IAM para um recurso, envie uma solicitação POST que use o método testIamPermissions. O exemplo a seguir permite testar se o usuário autenticado tem um conjunto de permissões do IAM para um endpoint.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION_ID: a região em que o endpoint está localizado, por exemplo, us-central1.
  • PROJECT_ID: o ID do projeto do Google Cloud .
  • ENDPOINT_ID: o ID do endpoint.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions

Corpo JSON da solicitação:

{
  "permissions": [
    "aiplatform.googleapis.com/aiplatform.endpoints.get",
    "aiplatform.googleapis.com/aiplatform.endpoints.predict"
  ]
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a seguinte. A resposta inclui apenas as permissões do corpo JSON da solicitação que estão disponíveis para o usuário autenticado no momento.
{
  "permissions": [
    "aiplatform.googleapis.com/aiplatform.endpoints.get",
    "aiplatform.googleapis.com/aiplatform.endpoints.predict"
  ]
}

A seguir

Para saber mais sobre como configurar projetos com um controle de acesso mais seguro de endpoints, consulte Configurar um projeto para uma equipe.