インスタンスへのアクセスを管理する

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

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

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

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

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

アクセスの制限

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

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

Vertex AI Workbench インスタンスへのアクセス権を付与する

特定の Vertex AI Workbench インスタンスにアクセスする権限をユーザーに付与するには、インスタンスに IAM ポリシーを設定します。

gcloud

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

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

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

  • INSTANCE_NAME: インスタンスの名前
  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • LOCATION: インスタンスが配置されているゾーン

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

Linux、macOS、Cloud Shell

gcloud workbench instances get-iam-policy INSTANCE_NAME \     --project=PROJECT_ID \     --location=LOCATION

Windows(PowerShell)

gcloud workbench instances get-iam-policy INSTANCE_NAME `     --project=PROJECT_ID `     --location=LOCATION

Windows(cmd.exe)

gcloud workbench instances get-iam-policy INSTANCE_NAME ^     --project=PROJECT_ID ^     --location=LOCATION
レスポンスは、インスタンスの IAM ポリシーのテキストです。以下の例をご覧ください。
 {   "bindings": [     {       "role": "roles/notebooks.viewer",       "members": [         "user:[email protected]"       ]     }   ],   "etag": "BwWWja0YfJA=",   "version": 3 } 

ポリシーを編集する

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

    {   "role": "roles/notebooks.admin",   "members": [     "user:[email protected]"   ] } 

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

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

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

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

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

  • INSTANCE_NAME: インスタンスの名前
  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • LOCATION: インスタンスが配置されているゾーン

次の内容を request.json という名前のファイルに保存します。

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

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

Linux、macOS、Cloud Shell

gcloud workbench instances set-iam-policy INSTANCE_NAME \     --project=PROJECT_ID \     --location=LOCATION \     request.json --format=json

Windows(PowerShell)

gcloud workbench instances set-iam-policy INSTANCE_NAME `     --project=PROJECT_ID `     --location=LOCATION `     request.json --format=json

Windows(cmd.exe)

gcloud workbench instances set-iam-policy INSTANCE_NAME ^     --project=PROJECT_ID ^     --location=LOCATION ^     request.json --format=json

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

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

API

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

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

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • LOCATION: インスタンスが配置されているゾーン
  • INSTANCE_NAME: インスタンスの名前

HTTP メソッドと URL:

GET https://notebooks.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_NAME:getIamPolicy

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

curl

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

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://notebooks.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/instances/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/v2/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_NAME:getIamPolicy" | Select-Object -Expand Content
レスポンスは、インスタンスの IAM ポリシーのテキストです。以下の例をご覧ください。
 {   "bindings": [     {       "role": "roles/notebooks.viewer",       "members": [         "user:[email protected]"       ]     }   ],   "etag": "BwWWja0YfJA=",   "version": 3 } 

ポリシーを編集する

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

{   "role": "roles/notebooks.admin",   "members": [     "user:[email protected]"   ] } 

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

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

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

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

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • LOCATION: インスタンスが配置されているゾーン
  • INSTANCE_NAME: インスタンスの名前

HTTP メソッドと URL:

POST https://notebooks.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_NAME:setIamPolicy

リクエストの本文(JSON):

 {   "policy": {     "bindings": [       {         "role": "roles/notebooks.viewer",         "members": [           "user:[email protected]"         ]       },       {         "role": "roles/notebooks.admin",         "members": [           "user:[email protected]"         ]       }     ],     "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/v2/projects/PROJECT_ID/locations/LOCATION/instances/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/v2/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_NAME:setIamPolicy" | Select-Object -Expand Content

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

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

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

次のステップ