En esta página, se explica cómo controlar el acceso a un extremo de Vertex AI mediante la configuración de una política de IAM en él. Se supone que ya estás familiarizado con los conceptos de IAM, como las políticas, los roles, los permisos y las principales, como se describe en Control de acceso de Vertex AI con IAM y Conceptos relacionados con la administración del acceso.
Una política de IAM incluye una o más vinculaciones de roles que definen qué roles de IAM están asociados con qué principales. Un rol es una colección de permisos que se otorgan a una principal. Vertex AI proporciona roles predefinidos que puedes usar en tus políticas. O bien, puedes crear tus propias roles personalizados.
Obtén una política de IAM
Puedes ver la política de IAM actual en un extremo de Vertex AI con la API de REST. Para hacerlo, debes tener el permiso endpoints.getIamPolicy
en el extremo o el proyecto.
El rol de administrador de Vertex AI (roles/aiplatform.admin
) otorga este permiso.
REST
Para obtener la política de IAM de un recurso, envía una solicitud POST
que use el método getIamPolicy
.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION_ID: Es la región en la que se encuentra el extremo, por ejemplo,
us-central1
. - PROJECT_ID: Es el ID del proyecto de Google Cloud.
- ENDPOINT_ID: Es el ID del extremo.
HTTP method and URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente 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
Ejecuta el siguiente 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
Deberías recibir una respuesta JSON con la política de IAM actual:
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.user", "members": [ "user:example@example.com" ] } ] }
Configura una política de IAM
Puedes establecer una política de IAM en un extremo mediante la API de REST.
Para hacerlo, debes tener el permiso endpoints.setIamPolicy
en el extremo o el proyecto.
El rol de administrador de Vertex AI (roles/aiplatform.admin
) otorga este permiso.
REST
Para configurar la política de IAM en un recurso, envía una solicitud POST
que use el método setIamPolicy
.
Establecer una política de IAM anula cualquier política existente. No se agregan los cambios. Para modificar la política existente de un recurso, usa el método getIamPolicy
a fin de obtener su política existente y, luego, realiza modificaciones. Incluye la política modificada junto con la etag
en la solicitud setIamPolicy
.
Si recibes un código de error 409
, esto significa que una solicitud setIamPolicy
simultánea ya actualizó la política.
Usa el método getIamPolicy
para obtener el etag
actualizado de la política y, luego, vuelve a intentar la solicitud setIamPolicy
con el etag
nuevo.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION_ID: Es la región en la que se encuentra el extremo, por ejemplo,
us-central1
. - PROJECT_ID: Es el ID del proyecto de Google Cloud.
- ENDPOINT_ID: Es el ID del extremo.
- ROLE: Un rol de IAM que incluye los permisos para otorgar, como
roles/aiplatform.user
. - PRINCIPAL: El principal al que se le otorgan los permisos del rol, como
user:myuser@example.com
. - ETAG: Un valor de string que se usa para evitar que las actualizaciones simultáneas de una política se reemplacen entre sí. Este valor se muestra como parte de la respuesta
getIamPolicy
.
HTTP method and URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy
Cuerpo JSON de la solicitud:
{ "policy": { "bindings": [ { "role": "ROLE", "members": [ "PRINCIPAL" ] }, ... ], "etag": "ETAG" } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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
Deberías recibir una respuesta JSON con la política de IAM actual:
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.user", "members": [ "user:example@example.com" ] } ] }
Verifica los permisos de IAM de un usuario para un extremo
Puedes verificar si el usuario autenticado actual tiene permisos de IAM específicos para un extremo.
REST
Para verificar si un usuario tiene permisos de IAM específicos para un
recurso, envía una solicitud POST
que use el método
testIamPermissions
.
El siguiente ejemplo te permite probar si el usuario autenticado actual tiene un conjunto de permisos de IAM para un extremo.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION_ID: Es la región en la que se encuentra el extremo, por ejemplo,
us-central1
. - PROJECT_ID: Es el ID del proyecto de Google Cloud.
- ENDPOINT_ID: Es el ID del extremo.
HTTP method and URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d
Cuerpo JSON de la solicitud:
{ "permissions": [ "aiplatform.googleapis.com/aiplatform.endpoints.get", "aiplatform.googleapis.com/aiplatform.endpoints.predict" ] }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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 -d"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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 -d" | Select-Object -Expand Content
{ "permissions": [ "aiplatform.googleapis.com/aiplatform.endpoints.get", "aiplatform.googleapis.com/aiplatform.endpoints.predict" ] }
¿Qué sigue?
Si deseas obtener más información para configurar proyectos con un control de acceso más seguro de los extremos, consulta Configura un proyecto para un equipo.