En esta página se explica cómo controlar el acceso a un endpoint de Vertex AI definiendo una política de gestión de identidades y accesos en él. Se da por hecho que ya conoces los conceptos de gestión de identidades y accesos, como las políticas, los roles, los permisos y las entidades de seguridad, tal como se describe en los artículos Control de acceso a Vertex AI con IAM y Conceptos relacionados con la gestión de acceso.
Una política de gestión de identidades y accesos incluye una o varias vinculaciones de roles que definen qué roles de gestión de identidades y accesos están asociados a qué principales. Un rol es un conjunto de permisos que se concede a un principal. Vertex AI proporciona roles predefinidos que puedes usar en tus políticas. También puedes crear tus propios roles personalizados.
Obtener una política de gestión de identidades y accesos
Puedes ver la política de gestión de identidades y accesos actual de un endpoint de Vertex AI mediante la API REST. Para ello, debes tener el permiso endpoints.getIamPolicy
en el endpoint o en el proyecto.
El rol de administrador de Vertex AI (roles/aiplatform.admin
) concede este permiso.
REST
Para obtener la política de gestión de identidades y accesos de un recurso, envía una solicitud POST
que utilice el método getIamPolicy
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION_ID: la región en la que se encuentra el endpoint. Por ejemplo,
us-central1
. - PROJECT_ID: tu ID de proyecto Google Cloud .
- ENDPOINT_ID: ID del endpoint.
Método HTTP y 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 comando siguiente:
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 comando siguiente:
$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 gestión de identidades y accesos actual:
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.user", "members": [ "user:example@example.com" ] } ] }
Definir una política de gestión de identidades y accesos
Puedes definir una política de gestión de identidades y accesos en un endpoint mediante la API REST.
Para ello, debes tener el permiso endpoints.setIamPolicy
en el endpoint o en el proyecto.
El rol de administrador de Vertex AI (roles/aiplatform.admin
) concede este permiso.
REST
Para definir la política de gestión de identidades y accesos de un recurso, envía una solicitud POST
que utilice el método setIamPolicy
.
Al definir una política de gestión de identidades y accesos, se anula cualquier política que ya exista. Los cambios no se añaden. Para modificar la política de un recurso, usa el método getIamPolicy
para obtener la política y, a continuación, haz las modificaciones que quieras. Incluya la política modificada junto con la etag
en
su solicitud setIamPolicy
.
Si recibes el código de error 409
, significa que una solicitud setIamPolicy
simultánea ya ha actualizado la política.
Usa el método getIamPolicy
para obtener el etag
actualizado de la política y, a continuación, vuelve a intentar la solicitud setIamPolicy
con el nuevo etag
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION_ID: la región en la que se encuentra el endpoint. Por ejemplo,
us-central1
. - PROJECT_ID: tu ID de proyecto Google Cloud .
- ENDPOINT_ID: ID del endpoint.
- ROLE: rol de gestión de identidades y accesos que incluye los permisos para conceder, como
roles/aiplatform.user
. - PRINCIPAL: la entidad a la que se le conceden los permisos del rol, como
user:myuser@example.com
. - ETAG: valor de cadena que se usa para evitar que las actualizaciones simultáneas de una política se sobrescriban entre sí. Este valor se devuelve como parte de la respuesta
getIamPolicy
.
Método HTTP y 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 gestión de identidades y accesos actual:
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.user", "members": [ "user:example@example.com" ] } ] }
Verificar los permisos de IAM de un usuario en un endpoint
Puedes verificar si el usuario autenticado actualmente tiene permisos de gestión de identidades y accesos específicos para un endpoint.
REST
Para verificar si un usuario tiene permisos de IAM específicos para un recurso, envía una solicitud POST
que utilice el método testIamPermissions
.
En el siguiente ejemplo, se comprueba si el usuario autenticado tiene un conjunto de permisos de gestión de identidades y accesos para un endpoint.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION_ID: la región en la que se encuentra el endpoint. Por ejemplo,
us-central1
. - PROJECT_ID: tu ID de proyecto Google Cloud .
- ENDPOINT_ID: ID del endpoint.
Método HTTP y URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions
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"
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" | Select-Object -Expand Content
{ "permissions": [ "aiplatform.googleapis.com/aiplatform.endpoints.get", "aiplatform.googleapis.com/aiplatform.endpoints.predict" ] }
Siguientes pasos
Para obtener más información sobre cómo configurar proyectos con un control de acceso más seguro a los endpoints, consulta el artículo Configurar un proyecto para un equipo.