Nesta página, você verá como controlar o acesso a um endpoint da Vertex AI 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 Vertex AI com 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 Vertex AI fornece 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 Vertex AI 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 Vertex AI (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 pelo ID do projeto no 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 Vertex AI (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 pelo ID do projeto no 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 a seguir:
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 no momento 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 no momento 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 pelo ID do projeto no 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 -d
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 a seguir:
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 -d"
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 -d" | Select-Object -Expand Content
{ "permissions": [ "aiplatform.googleapis.com/aiplatform.endpoints.get", "aiplatform.googleapis.com/aiplatform.endpoints.predict" ] }