Faça a gestão do acesso a uma instância de notebooks geridos pelo utilizador

Este guia descreve como pode conceder acesso a uma instância específica dos Vertex AI Workbench User-Managed Notebooks. Para gerir o acesso aos recursos do Vertex AI, consulte a página do Vertex AI sobre o controlo de acesso.

Concede acesso a uma instância de notebooks gerida pelo utilizador definindo uma política de gestão de identidade e de acesso (IAM) na instância. A política associa um ou mais responsáveis, como um utilizador ou uma conta de serviço, a uma ou mais funções. Cada função contém uma lista de autorizações que permitem ao principal interagir com a instância.

Pode conceder acesso a uma instância, em vez de a um recurso principal, como um projeto, uma pasta ou uma organização, para exercer o princípio do privilégio mínimo.

Se conceder acesso a um recurso principal (por exemplo, a um projeto), concede implicitamente acesso a todos os respetivos recursos secundários (por exemplo, a todas as instâncias nesse projeto). Para limitar o acesso aos recursos, defina políticas IAM em recursos de nível inferior sempre que possível, em vez de ao nível do projeto ou superior.

Para obter informações gerais sobre como conceder, alterar e revogar o acesso a recursos não relacionados com o Vertex AI Workbench, por exemplo, para conceder acesso a um projeto, consulte a documentação do IAM para gerir o acesso a projetos, pastas e organizações. Google Cloud

Limitações de acesso

O acesso a uma instância pode incluir uma vasta gama de capacidades, consoante a função que atribui ao principal. Por exemplo, pode conceder a um principal a capacidade de iniciar, parar, atualizar e monitorizar o estado de funcionamento de uma instância. Para ver a lista completa das autorizações IAM disponíveis, consulte as funções IAM de notebooks geridos pelo utilizador predefinidas.

No entanto, mesmo que conceda a um principal acesso total a uma instância de blocos de notas gerida pelo utilizador, não lhe concede a capacidade de usar a interface do JupyterLab da instância. Para conceder acesso à interface do JupyterLab, consulte o artigo Faça a gestão do acesso à interface do JupyterLab de uma instância de blocos de notas gerida pelo utilizador.

Conceda acesso a instâncias de blocos de notas geridas pelo utilizador

Para conceder aos utilizadores autorização para aceder a uma instância de blocos de notas gerida pelo utilizador específica, defina uma política de IAM na instância.

gcloud

Para conceder uma função a um principal numa instância de blocos de notas gerida pelo utilizador, use o comando get-iam-policy para obter a política atual, edite o acesso da política atual e, em seguida, use o comando set-iam-policy para atualizar a política na instância.

Obtenha a política atual

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • INSTANCE_NAME: o nome da instância de notebooks gerida pelo utilizador
  • PROJECT_ID: o ID do seu Google Cloud projeto
  • ZONE: a zona onde a sua instância está localizada

Execute o seguinte comando:

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
A resposta é o texto da política de IAM da sua instância. Veja o seguinte exemplo.
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

Edite a política

  1. Edite a política com um editor de texto para adicionar ou remover responsáveis e as respetivas funções associadas. Por exemplo, para conceder a função notebooks.admin a eve@example.com, adicione a seguinte nova associação à política na secção "bindings":

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

    Depois de adicionar a nova associação, a política pode ter o seguinte aspeto:

    {
      "bindings": [
        {
          "role": "roles/notebooks.viewer",
          "members": [
            "user:email@example.com"
          ]
        },
        {
          "role": "roles/notebooks.admin",
          "members": [
            "user:eve@example.com"
          ]
        }
      ],
      "etag": "BwWWja0YfJA=",
      "version": 3
    }
    
  2. Guarde a política atualizada num ficheiro com o nome request.json.

Atualize a política na instância

No corpo do pedido, faculte a política de IAM atualizada do passo anterior, aninhada numa secção "policy".

Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

  • INSTANCE_NAME: o nome da instância de notebooks gerida pelo utilizador
  • PROJECT_ID: o ID do seu Google Cloud projeto
  • ZONE: a zona onde a sua instância está localizada

Guarde o seguinte conteúdo num ficheiro denominado 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
  }
}

Execute o seguinte comando:

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

Conceda acesso à interface do JupyterLab

A concessão de acesso a um principal a uma instância de blocos de notas gerida pelo utilizador não concede a capacidade de usar a interface do JupyterLab da instância. Para conceder acesso à interface do JupyterLab, consulte o artigo Faça a gestão do acesso à interface do JupyterLab de uma instância de blocos de notas gerida pelo utilizador.

API

Para conceder uma função a um principal numa instância de blocos de notas gerida pelo utilizador, use o método getIamPolicy para obter a política atual, edite o acesso da política atual e, em seguida, use o método setIamPolicy para atualizar a política na instância.

Obtenha a política atual

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • INSTANCE_NAME: o nome da instância de notebooks gerida pelo utilizador

Método HTTP e URL:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Execute o seguinte comando:

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

PowerShell

Execute o seguinte 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
A resposta é o texto da política de IAM da sua instância. Veja o seguinte exemplo.
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

Edite a política

Edite a política com um editor de texto para adicionar ou remover responsáveis e as respetivas funções associadas. Por exemplo, para conceder a função notebooks.admin a eve@example.com, adicione a seguinte nova vinculação à política na secção "bindings":

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

Depois de adicionar a nova associação, a política pode ter o seguinte aspeto:

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

Atualize a política na instância

No corpo do pedido, faculte a política de IAM atualizada do passo anterior, aninhada numa secção "policy".

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • INSTANCE_NAME: o nome da instância de notebooks gerida pelo utilizador

Método HTTP e URL:

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

Corpo JSON do pedido:

{
  "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 o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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

Deve receber um código de estado de êxito (2xx) e uma resposta vazia.

Conceda acesso à interface do JupyterLab

A concessão de acesso a um principal a uma instância de blocos de notas gerida pelo utilizador não concede a capacidade de usar a interface do JupyterLab da instância. Para conceder acesso à interface do JupyterLab, consulte o artigo Faça a gestão do acesso à interface do JupyterLab de uma instância de blocos de notas gerida pelo utilizador.

O que se segue?