Gestionar el acceso a una instancia de cuadernos gestionados por usuarios

En esta guía se describe cómo puedes conceder acceso a una instancia de notebooks administrados por el usuario de Vertex AI Workbench específica. Para gestionar el acceso a los recursos de Vertex AI, consulta la página de Vertex AI sobre el control de acceso.

Para conceder acceso a una instancia de cuadernos gestionada por el usuario, debes definir una política de gestión de identidades y accesos (IAM) en la instancia. La política vincula una o varias entidades principales, como un usuario o una cuenta de servicio, a uno o varios roles. Cada rol contiene una lista de permisos que permiten a la entidad principal interactuar con la instancia.

Puedes conceder acceso a una instancia en lugar de a un recurso principal, como un proyecto, una carpeta o una organización, para aplicar el principio de mínimos accesos.

Si concedes acceso a un recurso principal (por ejemplo, a un proyecto), también se concederá acceso a todos sus recursos secundarios (por ejemplo, a todas las instancias de ese proyecto). Para limitar el acceso a los recursos, define políticas de gestión de identidades y accesos en los recursos de nivel inferior siempre que sea posible, en lugar de hacerlo a nivel de proyecto o superior.

Para obtener información general sobre cómo conceder, cambiar y revocar el acceso a recursos que no estén relacionados con Vertex AI Workbench (por ejemplo, para conceder acceso a un Google Cloud proyecto), consulta la documentación de gestión de identidades y accesos sobre cómo gestionar el acceso a proyectos, carpetas y organizaciones.

Limitaciones de acceso

El acceso a una instancia puede incluir una amplia gama de funciones, en función del rol que asignes a la entidad. Por ejemplo, puedes conceder a un principal la capacidad de iniciar, detener, actualizar y monitorizar el estado de una instancia. Para ver la lista completa de permisos de gestión de identidades y accesos disponibles, consulta Roles de gestión de identidades y accesos predefinidos de cuadernos gestionados por el usuario.

Sin embargo, aunque se conceda a una entidad principal acceso completo a una instancia de cuadernos gestionados por el usuario, no se le concede la capacidad de usar la interfaz de JupyterLab de la instancia. Para conceder acceso a la interfaz de JupyterLab, consulta Gestionar el acceso a la interfaz de JupyterLab de una instancia de cuadernos gestionada por el usuario.

Conceder acceso a instancias de cuadernos gestionados por usuarios

Para conceder a los usuarios permiso para acceder a una instancia de cuadernos gestionada por el usuario específica, define una política de IAM en la instancia.

gcloud

Para asignar un rol a una entidad de seguridad en una instancia de cuadernos gestionada por el usuario, usa el comando get-iam-policy para obtener la política actual, edita el acceso de la política actual y, a continuación, usa el comando set-iam-policy para actualizar la política en la instancia.

Recuperar la política actual

Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:

  • INSTANCE_NAME: El nombre de tu instancia de cuadernos gestionados por usuarios
  • PROJECT_ID: tu ID de proyecto Google Cloud
  • ZONE: la zona en la que se encuentra tu instancia

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud notebooks instances get-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE

Windows (PowerShell)

gcloud notebooks instances get-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE

Windows (cmd.exe)

gcloud notebooks instances get-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE
La respuesta es el texto de la política de gestión de identidades y accesos de tu instancia. Consulta el siguiente ejemplo.
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

Editar la política

  1. Edita la política con un editor de texto para añadir o quitar principales y los roles asociados. Por ejemplo, para asignar el rol notebooks.admin a eve@example.com, añade la siguiente vinculación a la política en la sección "bindings":

    {
      "role": "roles/notebooks.admin",
      "members": [
        "user:eve@example.com"
      ]
    }
    

    Después de añadir el nuevo enlace, la política podría tener el siguiente aspecto:

    {
      "bindings": [
        {
          "role": "roles/notebooks.viewer",
          "members": [
            "user:email@example.com"
          ]
        },
        {
          "role": "roles/notebooks.admin",
          "members": [
            "user:eve@example.com"
          ]
        }
      ],
      "etag": "BwWWja0YfJA=",
      "version": 3
    }
    
  2. Guarda la política actualizada en un archivo llamado request.json.

Actualizar la política en la instancia

En el cuerpo de la solicitud, proporcione la política de IAM actualizada del paso anterior, anidada en una sección "policy".

Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:

  • INSTANCE_NAME: El nombre de tu instancia de cuadernos gestionados por usuarios
  • PROJECT_ID: tu ID de proyecto Google Cloud
  • ZONE: la zona en la que se encuentra tu instancia

Guarda el siguiente contenido en un archivo llamado request.json:

{
  "policy": {
    "bindings": [
      {
        "role": "roles/notebooks.viewer",
        "members": [
          "user:email@example.com"
        ]
      },
      {
        "role": "roles/notebooks.admin",
        "members": [
          "user:eve@example.com"
        ]
      }
    ],
    "etag": "BwWWja0YfJA=",
    "version": 3
  }
}

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud notebooks instances set-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE request.json --format=json

Windows (PowerShell)

gcloud notebooks instances set-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE request.json --format=json

Windows (cmd.exe)

gcloud notebooks instances set-iam-policy INSTANCE_NAME --project=PROJECT_ID --location=ZONE request.json --format=json

Dar acceso a la interfaz de JupyterLab

Conceder acceso a una instancia de cuadernos gestionados por el usuario a una entidad de seguridad no le permite usar la interfaz de JupyterLab de la instancia. Para conceder acceso a la interfaz de JupyterLab, consulta Gestionar el acceso a la interfaz de JupyterLab de una instancia de cuadernos gestionada por el usuario.

API

Para asignar un rol a una entidad en una instancia de cuadernos gestionada por el usuario, usa el método getIamPolicy para obtener la política actual, edita el acceso de la política actual y, a continuación, usa el método setIamPolicy para actualizar la política en la instancia.

Recuperar la política actual

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • INSTANCE_NAME: El nombre de tu instancia de cuadernos gestionados por usuarios

Método HTTP y URL:

GET https://notebooks.googleapis.com/v1/INSTANCE_NAME:getIamPolicy

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://notebooks.googleapis.com/v1/INSTANCE_NAME:getIamPolicy"

PowerShell

Ejecuta el comando siguiente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://notebooks.googleapis.com/v1/INSTANCE_NAME:getIamPolicy" | Select-Object -Expand Content
La respuesta es el texto de la política de gestión de identidades y accesos de tu instancia. Consulta el siguiente ejemplo.
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

Editar la política

Edita la política con un editor de texto para añadir o quitar principales y los roles asociados. Por ejemplo, para asignar el rol notebooks.admin a eve@example.com, añade la siguiente vinculación a la política en la sección "bindings":

{
  "role": "roles/notebooks.admin",
  "members": [
    "user:eve@example.com"
  ]
}

Después de añadir el nuevo enlace, la política podría tener el siguiente aspecto:

{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    },
    {
      "role": "roles/notebooks.admin",
      "members": [
        "user:eve@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

Actualizar la política en la instancia

En el cuerpo de la solicitud, proporcione la política de IAM actualizada del paso anterior, anidada en una sección "policy".

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • INSTANCE_NAME: El nombre de tu instancia de cuadernos gestionados por usuarios

Método HTTP y URL:

POST https://notebooks.googleapis.com/v1/INSTANCE_NAME:setIamPolicy

Cuerpo JSON de la solicitud:

{
  "policy": {
    "bindings": [
      {
        "role": "roles/notebooks.viewer",
        "members": [
          "user:email@example.com"
        ]
      },
      {
        "role": "roles/notebooks.admin",
        "members": [
          "user:eve@example.com"
        ]
      }
    ],
    "etag": "BwWWja0YfJA=",
    "version": 3
  }
}

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://notebooks.googleapis.com/v1/INSTANCE_NAME: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://notebooks.googleapis.com/v1/INSTANCE_NAME:setIamPolicy" | Select-Object -Expand Content

Deberías recibir un código de estado que indique que la operación se ha realizado correctamente (2xx) y una respuesta vacía.

Dar acceso a la interfaz de JupyterLab

Conceder acceso a una instancia de cuadernos gestionados por el usuario a una entidad de seguridad no le permite usar la interfaz de JupyterLab de la instancia. Para conceder acceso a la interfaz de JupyterLab, consulta Gestionar el acceso a la interfaz de JupyterLab de una instancia de cuadernos gestionada por el usuario.

Siguientes pasos