Gerenciar o acesso a uma instância de notebooks gerenciados pelo usuário

Saiba neste guia como conceder acesso a uma instância específica de notebooks gerenciados pelo usuário do Vertex AI Workbench. Confira como gerenciar o acesso aos recursos da Vertex AI na página da Vertex AI sobre controle de acesso.

Para conceder acesso a uma instância de notebooks gerenciados pelo usuário, defina uma política do Identity and Access Management (IAM) na instância. A política vincula um ou mais principais, como um usuário ou uma conta de serviço, a um ou mais papéis. Cada papel contém uma lista de permissões que autoriza o principal a interagir com a instância.

Você pode conceder acesso a uma instância, e não a um recurso pai como um projeto, uma pasta ou uma organização, para aplicar o princípio do privilégio mínimo.

Ao conceder acesso a um recurso pai, como um projeto, você concede acesso implicitamente a todos os recursos filhos (por exemplo, todas as instâncias desse projeto). Para limitar o acesso aos recursos, defina políticas do IAM em recursos de nível inferior, quando possível, em vez de no nível do projeto ou acima.

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

Limitações de acesso

O acesso a uma instância pode incluir várias capacidades, dependendo do papel atribuído ao principal. Por exemplo, é possível conceder a um principal a capacidade de iniciar, interromper, fazer upgrade e monitorar o status de integridade de uma instância. Confira a lista completa de permissões do IAM disponíveis em Papéis do IAM predefinidos de notebooks gerenciados pelo usuário.

No entanto, o acesso total de um principal a uma instância de notebooks gerenciados pelo usuário não inclui a capacidade de usar a interface JupyterLab da instância. Saiba como conceder acesso à interface JupyterLab em Gerenciar o acesso a uma interface JupyterLab de uma instância de notebooks gerenciados pelo usuário.

Conceder acesso a instâncias de notebooks gerenciados pelo usuário

Para conceder acesso a uma instância específica de notebooks gerenciados pelo usuário, defina uma política do IAM na instância.

gcloud

Para conceder um papel a um principal em uma instância de notebooks gerenciados pelo usuário, use o comando get-iam-policy para recuperar a política atual, edite o acesso a ela e use o comando set-iam-policy para atualizar a política na instância.

Recuperar a política atual

Antes de usar os dados do comando abaixo, faça estas substituições:

  • INSTANCE_NAME: o nome da instância de notebooks gerenciados pelo usuário.
  • PROJECT_ID: é o ID do projeto do Google Cloud.
  • ZONE: a zona em que a 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 do IAM da instância. Confira o exemplo a seguir.
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

Editar a política

  1. Edite a política com um editor de texto para incluir ou remover principais e os respectivos papéis. Por exemplo, para conceder o papel notebooks.admin a eve@example.com, adicione a nova vinculação a seguir à política na seção "bindings":

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

    Depois de adicionar a nova vinculação, a política tem a seguinte aparência:

    {
      "bindings": [
        {
          "role": "roles/notebooks.viewer",
          "members": [
            "user:email@example.com"
          ]
        },
        {
          "role": "roles/notebooks.admin",
          "members": [
            "user:eve@example.com"
          ]
        }
      ],
      "etag": "BwWWja0YfJA=",
      "version": 3
    }
    
  2. Salve a política atualizada em um arquivo chamado request.json.

Atualizar a política na instância

No corpo da solicitação, forneça a política de IAM atualizada da etapa anterior, aninhada em uma seção "policy".

Antes de usar os dados do comando abaixo, faça estas substituições:

  • INSTANCE_NAME: o nome da instância de notebooks gerenciados pelo usuário.
  • PROJECT_ID: é o ID do projeto do Google Cloud.
  • ZONE: a zona em que a instância está localizada.

Salve o conteúdo a seguir em um arquivo chamado 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

Conceder acesso à interface JupyterLab

O acesso de um principal a uma instância de notebooks gerenciados pelo usuário não inclui a capacidade de usar a interface JupyterLab da instância. Saiba como conceder acesso à interface JupyterLab em Gerenciar o acesso a uma interface JupyterLab de uma instância de notebooks gerenciados pelo usuário.

API

Para conceder um papel a um principal em uma instância de notebooks gerenciados pelo usuário, use o método getIamPolicy para recuperar a política atual, edite o acesso a ela e use o método setIamPolicy para atualizar a política na instância.

Recuperar a política atual

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • INSTANCE_NAME: o nome da instância de notebooks gerenciados pelo usuário.

Método HTTP e URL:

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

Para enviar a solicitação, 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 do IAM da instância. Confira o exemplo a seguir.
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

Editar a política

Edite a política com um editor de texto para incluir ou remover principais e os respectivos papéis. Por exemplo, para conceder o papel notebooks.admin a eve@example.com, adicione a nova vinculação a seguir à política na seção "bindings":

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

Depois de adicionar a nova vinculação, a política tem a seguinte aparência:

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

Atualizar a política na instância

No corpo da solicitação, forneça a política de IAM atualizada da etapa anterior, aninhada em uma seção "policy".

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • INSTANCE_NAME: o nome da instância de notebooks gerenciados pelo usuário.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

Conceder acesso à interface JupyterLab

O acesso de um principal a uma instância de notebooks gerenciados pelo usuário não inclui a capacidade de usar a interface JupyterLab da instância. Saiba como conceder acesso à interface JupyterLab em Gerenciar o acesso a uma interface JupyterLab de uma instância de notebooks gerenciados pelo usuário.

A seguir