Administrar el acceso a una instancia de notebook administrada por el usuario

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

Para otorgar acceso a una instancia de notebook administrada por el usuario, configura una política de Identity and Access Management (IAM) en la instancia. La política vincula a uno o más miembros, como un usuario o una cuenta de servicio, con uno o más roles. Cada rol contiene una lista de permisos que permiten la interacción principal con la instancia.

Puedes otorgar acceso a una instancia, en lugar de a un recurso superior, como un proyecto, una carpeta o una organización, para ejercer el principio de privilegio mínimo.

Si otorgas acceso a un recurso superior (por ejemplo, a un proyecto), otorgas acceso de manera implícita a todos los recursos secundarios (por ejemplo, a todas las VM de ese proyecto). Para limitar el acceso a los recursos, establece las políticas de IAM en los recursos de nivel inferior cuando sea posible, en lugar de hacerlo a nivel de proyecto o a un nivel superior.

Para obtener información general sobre cómo otorgar, cambiar y revocar el acceso a los recursos no relacionados con Vertex AI Workbench, por ejemplo, a fin de otorgar acceso a un proyecto de Google Cloud, consulta la documentación de IAM sobre cómo administrar el acceso a proyectos, carpetas y organizaciones.

Limitaciones de acceso

El acceso a una instancia puede incluir una amplia gama de capacidades, según lel rol que asignes al principal. Por ejemplo, puedes otorgar a una principal la capacidad de iniciar, detener, actualizar y supervisar el estado de una instancia. Para obtener la lista completa de permisos de IAM disponibles, consulta Roles predefinidos de IAM de notebooks administrados por el usuario.

Sin embargo, incluso otorgar a una instancia principal acceso completo a una instancia de notebook administrada por el usuario no otorga la capacidad de usar la interfaz de JupyterLab de la instancia. Para otorgar acceso a la interfaz de JupyterLab, consulta lo siguiente:Administrar el acceso a la interfaz de JupyterLab de una instancia de notebooks administrados por el usuario.

Otorga acceso a instancias de notebooks administrados por el usuario

Para otorgar permiso a los usuarios a fin de que accedan a una instancia específica de notebooks administrados por el usuario, configura una política de IAM en la instancia.

gcloud

Para otorgar un rol a una principal en una instancia de notebook administrada por el usuario, usa el comando get-iam-policy a fin de recuperar la política actual y editar la actual el acceso de la política y, luego, usa el comando set-iam-policy para actualizar la política en la instancia.

Recupera la política actual

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

  • INSTANCE_NAME: Es el nombre de tu instancia de notebook administrada por el usuario.
  • PROJECT_ID: el ID del proyecto de Google Cloud
  • ZONE: La zona en la que se encuentra la 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 IAM de tu instancia. Consulta lo siguiente para ver un ejemplo:
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

Edita la política

  1. Edita la política con un editor de texto para agregar o quitar miembros y sus roles asociados. Por ejemplo, para otorgar el rol notebooks.admin a eve@example.com, agrega la siguiente vinculación nueva a la política en la sección "bindings":

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

    Después de agregar la vinculación nueva, 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.

Actualiza la política en la instancia

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

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

  • INSTANCE_NAME: Es el nombre de tu instancia de notebook administrada por el usuario.
  • PROJECT_ID: el ID del proyecto de Google Cloud
  • ZONE: La zona en la que se encuentra la instancia.

Guarda el siguiente código 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

Otorga acceso a la interfaz de JupyterLab

Si se otorga acceso principal a una instancia de notebook administrada por el usuario, no se brinda la capacidad de usar la interfaz de JupyterLab de la instancia. Para otorgar acceso a la interfaz de JupyterLab, consulta lo siguiente:Administrar el acceso a la interfaz de JupyterLab de una instancia de notebooks administrados por el usuario.

API

Para otorgar un rol a una principal en una instancia de notebooks administrada por el usuario, usa el método getIamPolicy a fin de recuperar la política actual y editar la actual el acceso de la política y, luego, usa el método setIamPolicy para actualizar la política en la instancia.

Recupera la política actual

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

  • INSTANCE_NAME: Es el nombre de tu instancia de notebook administrada por el usuario.

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 siguiente comando:

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

PowerShell

Ejecuta el siguiente comando:

$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 IAM de tu instancia. Consulta lo siguiente para ver un ejemplo:
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

Edita la política

Edita la política con un editor de texto para agregar o quitar miembros y sus roles asociados. Por ejemplo, para otorgar el rol notebooks.admin a eve@example.com, agrega la siguiente vinculación nueva a la política en la sección "bindings":

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

Después de agregar la vinculación nueva, 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
}

Actualiza la política en la instancia

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

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

  • INSTANCE_NAME: Es el nombre de tu instancia de notebook administrada por el usuario.

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 exitoso (2xx) y una respuesta vacía.

Otorga acceso a la interfaz de JupyterLab

Si se otorga acceso principal a una instancia de notebook administrada por el usuario, no se brinda la capacidad de usar la interfaz de JupyterLab de la instancia. Para otorgar acceso a la interfaz de JupyterLab, consulta lo siguiente:Administrar el acceso a la interfaz de JupyterLab de una instancia de notebooks administrados por el usuario.

¿Qué sigue?