Esta página aborda como controlar o acesso a um ponto final da Vertex AI através da definição de uma política IAM no mesmo. Parte do princípio de que já conhece os conceitos do IAM, como políticas, funções, autorizações e responsáveis, conforme descrito em Controlo de acesso do Vertex AI com o IAM e Conceitos relacionados com a gestão de acesso.
Uma política do IAM inclui uma ou mais associações de funções que definem que funções do IAM estão associadas a que principais. Uma função é um conjunto de autorizações que concede a um principal. O Vertex AI oferece funções predefinidas que pode usar nas suas políticas. Em alternativa, pode criar as suas próprias funções personalizadas.
Obtenha uma Política IAM
Pode ver a política de IAM atual num ponto final da Vertex AI através da API REST. Para o fazer, tem de ter a autorização endpoints.getIamPolicy
no ponto final ou no projeto.
A função de administrador do Vertex AI (roles/aiplatform.admin
) concede esta autorização.
REST
Para obter a política IAM de um recurso, envie um pedido POST
que use o método getIamPolicy
.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: a região onde o ponto final está localizado, por exemplo,
us-central1
. - PROJECT_ID: o ID do seu Google Cloud projeto.
- ENDPOINT_ID: o ID do ponto final.
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 o seu pedido, 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
Deve receber uma resposta JSON com a política IAM atual:
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.user", "members": [ "user:example@example.com" ] } ] }
Defina uma Política IAM
Pode definir uma política de IAM num ponto final através da API REST.
Para o fazer, tem de ter a autorização endpoints.setIamPolicy
no ponto final ou no projeto.
A função de administrador do Vertex AI (roles/aiplatform.admin
) concede esta autorização.
REST
Para definir a política IAM num recurso, envie um pedido POST
que use o método setIamPolicy
.
A definição de uma política IAM substitui qualquer política existente. As alterações não são anexadas. Para modificar a política existente de um recurso, use o método getIamPolicy
para obter a respetiva política existente e, em seguida, faça modificações. Inclua a política modificada juntamente com o etag
no
seu pedido setIamPolicy
.
Se receber um código de erro 409
, significa que um pedido
setIamPolicy
simultâneo já atualizou a política.
Use o método getIamPolicy
para obter o etag
atualizado da política e, de seguida, tente novamente o pedido setIamPolicy
com o novo etag
.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: a região onde o ponto final está localizado, por exemplo,
us-central1
. - PROJECT_ID: o ID do seu Google Cloud projeto.
- ENDPOINT_ID: o ID do ponto final.
- ROLE: uma função de IAM que inclui as autorizações
a conceder, como
roles/aiplatform.user
. - PRINCIPAL: o principal ao qual são concedidas as autorizações da função, como
user:myuser@example.com
. - ETAG: um valor de string usado para impedir que as atualizações simultâneas de uma política se substituam mutuamente. Este valor é devolvido como parte da resposta
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 do pedido:
{ "policy": { "bindings": [ { "role": "ROLE", "members": [ "PRINCIPAL" ] }, ... ], "etag": "ETAG" } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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
Deve receber uma resposta JSON com a política IAM atual:
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.user", "members": [ "user:example@example.com" ] } ] }
Valide as autorizações da IAM de um utilizador para um ponto final
Pode verificar se o utilizador autenticado atualmente tem autorizações do IAM específicas para um ponto final.
REST
Para verificar se um utilizador tem autorizações de IAM específicas para um recurso, envie um pedido POST
que use o método testIamPermissions
.
O exemplo seguinte permite-lhe testar se o utilizador autenticado atualmente tem um conjunto de autorizações de IAM para um ponto final.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: a região onde o ponto final está localizado, por exemplo,
us-central1
. - PROJECT_ID: o ID do seu Google Cloud projeto.
- ENDPOINT_ID: o ID do ponto final.
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 do pedido:
{ "permissions": [ "aiplatform.googleapis.com/aiplatform.endpoints.get", "aiplatform.googleapis.com/aiplatform.endpoints.predict" ] }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$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
{ "permissions": [ "aiplatform.googleapis.com/aiplatform.endpoints.get", "aiplatform.googleapis.com/aiplatform.endpoints.predict" ] }
O que se segue?
Para saber como configurar projetos com um controlo de acesso mais seguro dos pontos finais, consulte o artigo Configure um projeto para uma equipa.