Gérer l'accès à une instance de notebooks gérés par l'utilisateur

Ce guide explique comment accorder l'accès à une instance Vertex AI Workbench spécifique de notebooks gérés par l'utilisateur. Pour gérer l'accès aux ressources Vertex AI, consultez la page Vertex AI sur le contrôle des accès.

Vous accordez l'accès à une instance de notebooks gérés par l'utilisateur en définissant une stratégie IAM (Identity and Access Management) sur l'instance. Cette stratégie associe un ou plusieurs comptes principaux, tels qu'un utilisateur ou un compte de service, à un ou plusieurs rôles. Chaque rôle contient une liste d'autorisations permettant au compte principal d'interagir avec l'instance.

Vous pouvez accorder l'accès à une instance plutôt qu'à une ressource parente (telle qu'un projet, un dossier ou une organisation), afin d'appliquer le principe du moindre privilège.

Si vous accordez l'accès à une ressource parente (par exemple à un projet), vous accordez implicitement l'accès à toutes ses ressources enfants (par exemple, à toutes les instances de ce projet). Pour limiter l'accès aux ressources, définissez les stratégies IAM sur les ressources de niveau inférieur lorsque cela est possible, plutôt qu'au niveau du projet ou à un niveau supérieur.

Pour obtenir des informations générales sur la manière d'accorder, de modifier et de révoquer l'accès à des ressources non liées à Vertex AI Workbench (par exemple, pour accorder l'accès à un projet Google Cloud), consultez la documentation IAM pour Gérer l'accès aux projets, aux dossiers et aux organisations.

Limites d'accès

L'accès à une instance peut inclure un large éventail de fonctionnalités, en fonction du rôle que vous attribuez au compte principal. Vous pouvez par exemple autoriser un compte principal à démarrer, arrêter, mettre à jour et surveiller l'état d'une instance. Pour obtenir la liste complète des autorisations IAM disponibles, consultez la page Rôles IAM prédéfinis pour les notebooks gérés par l'utilisateur.

Toutefois, même si vous accordez à un compte principal un accès complet à une instance de notebooks gérés par l'utilisateur, vous ne lui permettez pas pour autant d'utiliser l'interface JupyterLab de cette instance. Pour accorder l'accès à l'interface JupyterLab, consultez la section Gérer l'accès à l'interface Jupyterlab d'une instance de notebooks gérés par l'utilisateur.

Accorder l'accès à des instances de notebooks gérés par l'utilisateur

Pour accorder à des utilisateurs une autorisation d'accès à une instance spécifique de notebooks gérés par l'utilisateur, vous devez définir une stratégie IAM pour l'instance.

gcloud

Pour accorder un rôle à un compte principal sur une instance de notebooks gérés par l'utilisateur, utilisez la commande get-iam-policy pour récupérer la stratégie actuelle, modifiez les modalités d'accès définies au sein de celle-ci, puis utilisez la commande set-iam-policy pour mettre à jour la stratégie sur l'instance.

Récupérer la stratégie actuelle

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • INSTANCE_NAME : nom de votre instance de notebooks gérés par l'utilisateur.
  • PROJECT_ID : ID de votre projet Google Cloud.
  • ZONE : zone où se trouve votre instance.

Exécutez la commande suivante :

Linux, macOS ou 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 réponse correspond au texte de la stratégie IAM de votre instance. Voici un exemple :
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

Modifier la stratégie

  1. Modifiez la stratégie à l'aide d'un éditeur de texte pour ajouter ou supprimer des comptes principaux et les rôles qui leur sont associés. Par exemple, pour accorder le rôle notebooks.admin à eve@example.com, ajoutez la nouvelle liaison suivante à la stratégie dans la section "bindings" :

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

    La stratégie ressemble à ceci après l'ajout de la nouvelle liaison :

    {
      "bindings": [
        {
          "role": "roles/notebooks.viewer",
          "members": [
            "user:email@example.com"
          ]
        },
        {
          "role": "roles/notebooks.admin",
          "members": [
            "user:eve@example.com"
          ]
        }
      ],
      "etag": "BwWWja0YfJA=",
      "version": 3
    }
    
  2. Enregistrez la stratégie mise à jour dans un fichier nommé request.json.

Mettre à jour la stratégie sur l'instance

Dans le corps de la requête, indiquez la stratégie IAM mise à jour lors de l'étape précédente, imbriquée dans une section "policy".

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • INSTANCE_NAME : nom de votre instance de notebooks gérés par l'utilisateur.
  • PROJECT_ID : ID de votre projet Google Cloud.
  • ZONE : zone où se trouve votre instance.

Enregistrez le code suivant dans un fichier nommé 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
  }
}

Exécutez la commande suivante :

Linux, macOS ou 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

Accorder l'accès à l'interface JupyterLab

En accordant à un compte principal l'accès à une instance de notebooks gérés par l'utilisateur, vous ne lui permettez pas pour autant d'utiliser l'interface JupyterLab de cette instance. Pour accorder l'accès à l'interface JupyterLab, consultez la section Gérer l'accès à l'interface Jupyterlab d'une instance de notebooks gérés par l'utilisateur.

API

Pour accorder un rôle à un compte principal sur une instance de notebooks gérés par l'utilisateur, utilisez la méthode getIamPolicy pour récupérer la stratégie actuelle, modifiez les modalités d'accès définies au sein de celle-ci, puis utilisez la méthode setIamPolicy pour mettre à jour la stratégie sur l'instance.

Récupérer la stratégie actuelle

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • INSTANCE_NAME : nom de votre instance de notebooks gérés par l'utilisateur.

Méthode HTTP et URL :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Exécutez la commande suivante :

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

PowerShell

Exécutez la commande suivante :

$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 réponse correspond au texte de la stratégie IAM de votre instance. Voici un exemple :
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

Modifier la stratégie

Modifiez la stratégie à l'aide d'un éditeur de texte pour ajouter ou supprimer des comptes principaux et les rôles qui leur sont associés. Par exemple, pour accorder le rôle notebooks.admin à eve@example.com, ajoutez la nouvelle liaison suivante à la stratégie dans la section "bindings" :

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

La stratégie ressemble à ceci après l'ajout de la nouvelle liaison :

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

Mettre à jour la stratégie sur l'instance

Dans le corps de la requête, indiquez la stratégie IAM mise à jour lors de l'étape précédente, imbriquée dans une section "policy".

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • INSTANCE_NAME : nom de votre instance de notebooks gérés par l'utilisateur.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

Accorder l'accès à l'interface JupyterLab

En accordant à un compte principal l'accès à une instance de notebooks gérés par l'utilisateur, vous ne lui permettez pas pour autant d'utiliser l'interface JupyterLab de cette instance. Pour accorder l'accès à l'interface JupyterLab, consultez la section Gérer l'accès à l'interface Jupyterlab d'une instance de notebooks gérés par l'utilisateur.

Étapes suivantes