Puedes controlar el acceso a los recursos de Vertex AI Feature Store (antigua) configurando políticas de gestión de identidades y accesos en distintos niveles de la jerarquía de recursos. Por ejemplo:
Una política de gestión de identidades y accesos a nivel de proyecto se aplica a todos los recursos de un proyecto. Puedes definir una política a nivel de proyecto para conceder permisos a los usuarios para leer todos los almacenes de características de tu proyecto.
Una política de gestión de identidades y accesos a nivel de recurso te permite especificar qué usuarios pueden acceder a recursos concretos. En el caso de un subconjunto de usuarios, puedes definir una política a nivel de recurso para conceder permisos de escritura a almacenes de características específicos de tu proyecto.
Puedes definir políticas de gestión de identidades y accesos (IAM) a nivel de recurso en los siguientes recursos de Vertex AI Feature Store (antigua):
Featurestore: cuando defines una política de Gestión de Identidades y Accesos en una featurestore, la política se aplica a la featurestore y a todos los tipos de entidades creados en ella.
Tipo de entidad: cuando defines una política de gestión de identidades y accesos en un tipo de entidad, la política se aplica solo al tipo de entidad y a la feature store en la que se crea el tipo de entidad.
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 una entidad principal. Vertex AI proporciona roles predefinidos que puedes usar en tus políticas. También puedes crear tus propios roles personalizados.
Cuestiones importantes
No puedes definir políticas de recursos condicionales. Por ejemplo, no puedes crear una política que conceda acceso a ningún recurso que tenga o vaya a tener un nombre que empiece por una cadena concreta, como testing
.
Ejemplo de caso práctico
Por ejemplo, supongamos que tu organización tiene dos conjuntos de usuarios. Un conjunto gestiona tu infraestructura principal con el rol de administrador de DevOps. Otro conjunto gestiona tipos de entidades concretos y sus funciones, como un ingeniero de datos.
Un administrador de DevOps gestiona los almacenes de características y los tipos de entidades a nivel de proyecto. Cuando los ingenieros de datos solicitan un nuevo tipo de entidad, 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 gestionar libremente las funciones de los tipos de entidades que les pertenecen, pero no pueden operar en el almacén de funciones ni en otros tipos de entidades. Este control, por ejemplo, permite a los administradores de DevOps limitar el acceso a tipos de entidades que contengan información sensible.
En este caso, el administrador de DevOps tiene el rol aiplatform.featurestoreAdmin
a nivel de proyecto. Después, cuando un ingeniero de datos solicite un nuevo tipo de entidad, el administrador creará un nuevo tipo de entidad y, a continuación, asignará el rol aiplatform.entityTypeOwner
al ingeniero de datos a nivel del tipo de entidad (como una política a nivel de recurso).
Obtener política de IAM
Puedes ver la política de gestión de identidades y accesos actual de un almacén de características o un tipo de entidad mediante la Google Cloud consola o la API.
UI web
- En la sección Vertex AI de la Google Cloud consola, ve a la página Funciones.
- Selecciona una región en la lista desplegable Región.
- En la tabla de características, seleccione un almacén de características o un tipo de entidad de la columna Almacén de características o Tipo de entidad.
- Haz clic en Permisos.
- Para mostrar los permisos a nivel de recurso, desactiva Mostrar permisos heredados.
Las principales que tienen acceso al recurso seleccionado se agrupan por rol.
- Despliega un rol para ver qué principales tienen asignado ese rol.
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
. En el siguiente ejemplo se obtiene una política de tipo de entidad.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION_ID: región en la que se encuentra el almacén de características, como
us-central1
. - PROJECT_ID: tu ID de proyecto.
- FEATURESTORE_ID: ID del almacén de características.
- 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 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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/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 siguiente:
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.entityTypeOwner", "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 almacén de características o en un tipo de entidad.
UI web
- En la sección Vertex AI de la Google Cloud consola, ve a la página Funciones.
- Selecciona una región en la lista desplegable Región.
- En la tabla de características, seleccione un almacén de características o un tipo de entidad de la columna Almacén de características o Tipo de entidad.
- Haz clic en Permisos.
- Haz clic en Añadir principal.
- Especifica una cuenta principal y uno o varios roles que se asociarán a la cuenta principal.
- Haz clic en Guardar.
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
. En el siguiente ejemplo se define una política en un tipo de entidad.
Si se define una política de gestión de identidades y accesos, se anula cualquier política que ya exista (los cambios no se añaden). Si quieres modificar la política de un recurso, usa el método getIamPolicy
para obtener la política actual y, a continuación, haz los cambios 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 se ha enviado una solicitud SetIamPolicy
simultánea que ha actualizado la política. Haz una GetIamPolicy
para obtener el etag actualizado de la política
y, a continuación, vuelve a intentar la solicitud SetIamPolicy
incluyendo el nuevo etag.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION_ID: región en la que se encuentra el almacén de características, como
us-central1
. - PROJECT_ID: tu ID de proyecto.
- FEATURESTORE_ID: ID del almacén de características.
- ENTITY_TYPE_ID: ID del tipo de entidad.
- ROLE: rol de gestión de identidades y accesos que incluye los permisos para conceder, como
roles/aiplatform.featurestoreDataViewer
. - 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/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 siguiente:
{ "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", ] } ] }
Verificar los permisos de gestión de identidades y accesos de un recurso
Puedes verificar si el usuario autenticado tiene permisos de gestión de identidades y accesos específicos para un almacén de características o un tipo de entidad.
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 tipo de entidad.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION_ID: región en la que se encuentra el almacén de características, como
us-central1
. - PROJECT_ID: tu ID de proyecto.
- FEATURESTORE_ID: ID del almacén de características.
- 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
{ "permissions": [ "aiplatform.googleapis.com/entityTypes.get", "aiplatform.googleapis.com/entityTypes.readFeatureValues", "aiplatform.googleapis.com/entityTypes.writeFeatureValues" ] }