Controlar el acceso a los endpoints de Vertex AI

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
Deberías recibir una respuesta JSON similar a la siguiente. La respuesta solo incluye los permisos del cuerpo JSON de la solicitud que están disponibles para el usuario autenticado.
{
  "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.