Controla el acceso a los recursos de Vertex AI Feature Store (Legacy)

Puedes controlar el acceso a los recursos de Vertex AI Feature Store (Legacy) si configuras las políticas de IAM en diferentes niveles de la jerarquía de recursos. Por ejemplo:

  • Una IAM de política a nivel de proyecto se aplica a todos los recursos de un proyecto. Puedes configurar una política a nivel de proyecto para otorgar permisos a los usuarios para leer todos los almacenes de atributos en tu proyecto.

  • Una política de IAM a nivel de recurso te permite especificar qué usuarios pueden acceder a recursos específicos. Para un subconjunto de usuarios, puedes establecer una política a nivel de los recursos para otorgar permisos de escritura a almacenes de atributos específicos en tu proyecto.

Puedes establecer políticas de (IAM) a nivel de recursos en los siguientes recursos de Vertex AI Feature Store (Legacy):

  • Almacén de atributos: Cuando estableces una política de administración de identidades y accesos en un almacén de atributos, la política se aplica al almacén de atributos y a todos los tipos de entidades creados en ese almacén de atributos.

  • Tipo de entidad: Cuando estableces una política de administración de identidades y accesos en un tipo de entidad, la política solo se aplica al tipo de entidad y al almacén de atributos en el que se crea el tipo de entidad.

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 un principal. Vertex AI proporciona roles predefinidos que puedes usar en tus políticas. O bien, puedes crear tus propias roles personalizados.

Consideraciones

No puedes establecer políticas de recursos condicionales. Por ejemplo, no puedes crear una política que otorgue acceso a cualquier recurso que tenga o tendrá un nombre que comience con una string específica como testing.

Caso de uso de muestra

Como ejemplo, imagina que tu organización tiene dos conjuntos de usuarios. Un conjunto administra tu infraestructura principal en un rol de administrador de DevOps. Otro conjunto administra tipos de entidades particulares y sus atributos, como un ingeniero de datos.

Un administrador de DevOps administra almacenes de atributos y tipos de entidades a nivel de proyecto. Cuando los ingenieros de datos solicitan un tipo de entidad nuevo, un administrador de DevOps puede crear y delegar la propiedad de ese tipo de entidad a los ingenieros de datos. Los ingenieros de datos pueden administrar las características de los tipos de entidades que poseen, pero no pueden operar en la tienda de funciones ni en otros tipos de entidades. Este control, por ejemplo, permite que los administradores de DevOps limiten el acceso a los tipos de entidades que contienen información sensible.

En este caso, el administrador de DevOps tiene el rol aiplatform.featurestoreAdmin a nivel de proyecto. Luego, cuando un ingeniero de datos solicite un tipo de entidad nuevo, el administrador crea un nuevo tipo de entidad y luego asigna el rol aiplatform.entityTypeOwner para el ingeniero de datos a nivel de tipo de entidad (como una política a nivel de recurso).

Obtener política de IAM

Puedes ver la política de IAM actual en un almacén de atributos o un tipo de entidad con la API o la consola de Google Cloud.

IU web

  1. En la sección de Vertex AI de la consola de Google Cloud, ve a la página Funciones.

    Ve a la página Atributos

  2. Selecciona una región de la lista desplegable Región.
  3. En la tabla de atributos, selecciona un almacén de atributos o un tipo de entidad de la columna Almacén de atributos o Tipo de entidad.
  4. Haz clic en Permisos.
  5. Para mostrar los permisos a nivel de los recursos, desactiva Mostrar permisos heredados.

    Las principales que tienen acceso al recurso seleccionado se agrupan por rol.

  6. Expande un rol para ver qué principales se asignan a ese rol.

REST

Para obtener la política de IAM de un recurso, envía una solicitud POST que use el método getIamPolicy. En el siguiente ejemplo, se obtiene una política de tipo de entidad.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION_ID: Región donde se encuentra el featurestore, como us-central1.
  • PROJECT_ID: El ID del proyecto.
  • FEATURESTORE_ID: ID del featurestore.
  • ENTITY_TYPE_ID: ID del tipo de entidad.

Método HTTP y URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.entityTypeOwner",
      "members": [
        "user:example@example.com"
      ]
    }
  ]
}

Configura una política de IAM

Puedes establecer una política de IAM en un tipo de entidad o almacén de atributos.

IU web

  1. En la sección de Vertex AI de la consola de Google Cloud, ve a la página Funciones.

    Ve a la página Atributos

  2. Selecciona una región de la lista desplegable Región.
  3. En la tabla de atributos, selecciona un almacén de atributos o un tipo de entidad de la columna Almacén de atributos o Tipo de entidad.
  4. Haz clic en Permisos.
  5. Haz clic en Agregar principal.
  6. Especifica un principal y uno o más roles para asociar con el principal.
  7. Haz clic en Guardar.

REST

Para configurar la política de IAM en un recurso, envía una solicitud POST que use el método setIamPolicy. En el siguiente ejemplo, se establece una política en un tipo de entidad.

Establecer una política de IAM anula cualquier política existente (no se agregan los cambios). Si deseas 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, hubo una solicitud SetIamPolicy simultánea que actualizó la política. Realiza un GetIamPolicy para obtener la etag actualizada de la política y vuelve a intentar la solicitud SetIamPolicy; para ello, incluye la etag nueva.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION_ID: Región donde se encuentra el featurestore, como us-central1.
  • PROJECT_ID: El ID del proyecto.
  • FEATURESTORE_ID: ID del featurestore.
  • ENTITY_TYPE_ID: ID del tipo de entidad.
  • ROLE: Un rol de IAM que incluye los permisos para otorgar, como roles/aiplatform.featurestoreDataViewer.
  • 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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.entityTypeOwner",
      "members": [
        "user:user1@example.com"
      ]
    },
    {
      "role": "roles/aiplatform.featurestoreDataViewer",
      "members": [
        "user:user2@example.com",
        "user:user3@example.com"
      ]
    },
    {
      "role": "roles/aiplatform.featurestoreDataWriter",
      "members": [
        "user:user4@example.com",
      ]
    }
  ]
}

Verifica los permisos de IAM para un recurso

Puedes verificar si el usuario autenticado actual tiene permisos de IAM específicos para un tipo de entidad o almacén de atributos.

REST

A fin de 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 tipo de entidad.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LOCATION_ID: Región donde se encuentra el featurestore, como us-central1.
  • PROJECT_ID: El ID del proyecto.
  • FEATURESTORE_ID: ID del featurestore.
  • ENTITY_TYPE_ID: ID del tipo de entidad.

Método HTTP y URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d

Cuerpo JSON de la solicitud:

{
  "permissions": [
    "aiplatform.googleapis.com/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}

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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}