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.