ユーザー管理ノートブック インスタンスへのアクセスを管理する

このガイドでは、特定の Vertex AI Workbench ユーザー管理ノートブック インスタンスへのアクセス権を付与する方法について説明します。Vertex AI リソースへのアクセスを管理するには、アクセス制御に関する Vertex AI ページをご覧ください。

ユーザー管理ノートブック インスタンスへのアクセス権を付与するには、インスタンスに Identity and Access Management(IAM)ポリシーを設定します。このポリシーでは、ユーザーやサービス アカウントなどの 1 つ以上のメンバーを 1 つ以上のロールにバインドします。各ロールには、プリンシパルがインスタンスを操作できるようにする権限のリストが含まれています。

最小権限の原則を実践するには、プロジェクト、フォルダ、組織などの親リソースではなく、インスタンスに対するアクセス権を付与します。

親リソース(プロジェクトなど)にアクセス権を付与すると、そのすべての子リソース(そのプロジェクト内のすべてのインスタンスなど)にもアクセス権が付与されることになります。リソースへのアクセスを制限するには、可能であれば、プロジェクト レベル以上のリソースではなく、下位レベルのリソースで IAM ポリシーを設定します。

Vertex AI Workbench と関係のないリソースへのアクセス権(たとえば、Google Cloud プロジェクトへのアクセス権)を付与、変更、取り消す方法については、IAM ドキュメントでプロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

アクセスの制限

インスタンスへのアクセス権には、プリンシパルに割り当てるロールに応じて、さまざまな権限が含まれています。たとえば、インスタンスの起動、停止、アップグレード、ヘルス ステータスのモニタリングをプリンシパルに許可できます。使用可能な IAM 権限の一覧については、ユーザー管理ノートブックの IAM 事前定義ロールをご覧ください。

ただし、ユーザー管理ノートブック インスタンスへの完全アクセス権をプリンシパルに付与しても、インスタンスの JupyterLab インターフェースを使用する権限は付与されません。JupyterLab インターフェースへのアクセス権を付与するには、ユーザー管理ノートブック インスタンスの JupyterLab インターフェースへのアクセスを管理するをご覧ください。

ユーザー管理ノートブック インスタンスへのアクセス権を付与す

特定のユーザー管理ノートブック インスタンスにアクセスする権限をユーザーに付与するには、インスタンスに IAM ポリシーを設定します。

gcloud

ユーザー管理ノートブック インスタンスのプリンシパルにロールを付与するには、get-iam-policy コマンドを使用して現在のポリシーを取得して、現在のポリシーのアクセス権を編集します。その後、set-iam-policy コマンドを使用して、インスタンスのポリシーを更新します。

現在のポリシーを取得する

後述のコマンドデータを使用する前に、次のように置き換えます。

  • INSTANCE_NAME: ユーザー管理ノートブック インスタンスの名前
  • PROJECT_ID: Google Cloud プロジェクト ID
  • ZONE: インスタンスが配置されているゾーン

次のコマンドを実行します。

Linux、macOS、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
レスポンスは、インスタンスの IAM ポリシーのテキストです。以下の例をご覧ください。
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

ポリシーを編集する

  1. テキスト エディタでポリシーを編集して、プリンシパルとそれに関連するロールを追加または削除します。たとえば、notebooks.admin ロールを eve@example.com に付与するには、"bindings" セクション内に次の新しいバインディングをポリシーに追加します。

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

    新しいバインディングを追加すると、ポリシーは次のようになります。

    {
      "bindings": [
        {
          "role": "roles/notebooks.viewer",
          "members": [
            "user:email@example.com"
          ]
        },
        {
          "role": "roles/notebooks.admin",
          "members": [
            "user:eve@example.com"
          ]
        }
      ],
      "etag": "BwWWja0YfJA=",
      "version": 3
    }
    
  2. 更新したポリシーを request.json という名前のファイルに保存します。

インスタンスのポリシーを更新する

リクエストの本文で、前の手順で更新した IAM ポリシーを "policy" セクション内にネストします。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • INSTANCE_NAME: ユーザー管理ノートブック インスタンスの名前
  • PROJECT_ID: Google Cloud プロジェクト ID
  • ZONE: インスタンスが配置されているゾーン

次の内容を 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
  }
}

次のコマンドを実行します。

Linux、macOS、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

JupyterLab インターフェースへのアクセス権を付与する

ユーザー管理ノートブック インスタンスへのアクセス権をプリンシパルに付与しても、インスタンスの JupyterLab インターフェースを使用する権限は付与されません。JupyterLab インターフェースへのアクセス権を付与するには、ユーザー管理ノートブック インスタンスの JupyterLab インターフェースへのアクセスを管理するをご覧ください。

API

ユーザー管理インスタンスのプリンシパルにロールを付与するには、getIamPolicy メソッドを使用して現在のポリシーを取得して、現在のポリシーのアクセス権を編集します。その後、setIamPolicy メソッドを使用して、インスタンスのポリシーを更新します。

現在のポリシーを取得する

リクエストのデータを使用する前に、次のように置き換えます。

  • INSTANCE_NAME: ユーザー管理ノートブック インスタンスの名前

HTTP メソッドと URL:

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

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドを実行します。

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

PowerShell

次のコマンドを実行します。

$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
レスポンスは、インスタンスの IAM ポリシーのテキストです。以下の例をご覧ください。
{
  "bindings": [
    {
      "role": "roles/notebooks.viewer",
      "members": [
        "user:email@example.com"
      ]
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

ポリシーを編集する

テキスト エディタでポリシーを編集して、プリンシパルとそれに関連するロールを追加または削除します。たとえば、eve@example.com に notebooks.admin ロールを付与するには、"bindings" セクションに次の新しいバインディングをポリシーに追加します。

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

新しいバインディングを追加すると、ポリシーは次のようになります。

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

インスタンスのポリシーを更新する

リクエストの本文で、前の手順で更新した IAM ポリシーを "policy" セクション内にネストします。

リクエストのデータを使用する前に、次のように置き換えます。

  • INSTANCE_NAME: ユーザー管理ノートブック インスタンスの名前

HTTP メソッドと URL:

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

リクエストの本文(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
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

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

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$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

成功を示すステータス コード(2xx)と空のレスポンスが返されます。

JupyterLab インターフェースへのアクセス権を付与する

ユーザー管理ノートブック インスタンスへのアクセス権をプリンシパルに付与しても、インスタンスの JupyterLab インターフェースを使用する権限は付与されません。JupyterLab インターフェースへのアクセス権を付与するには、ユーザー管理ノートブック インスタンスの JupyterLab インターフェースへのアクセスを管理するをご覧ください。

次のステップ