Controla el acceso a los extremos de Vertex AI

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