ユーザー管理ノートブック インスタンスへのアクセスを管理する
このガイドでは、特定の 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
{ "bindings": [ { "role": "roles/notebooks.viewer", "members": [ "user:email@example.com" ] } ], "etag": "BwWWja0YfJA=", "version": 3 }
ポリシーを編集する
テキスト エディタでポリシーを編集して、プリンシパルとそれに関連するロールを追加または削除します。たとえば、
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 }
更新したポリシーを
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
{ "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 インターフェースへのアクセスを管理するをご覧ください。
次のステップ
Identity and Access Management(IAM)の概要と、IAM ロールがアクセス権の付与と制限にどのように役立つかを確認する。IAM のドキュメントをご覧ください。
カスタムロールの作成と管理の方法を確認する。
他の Google リソースへのアクセス権を付与する方法を確認する。他のリソースへのアクセス権の管理をご覧ください。