マネージド ノートブック インスタンスへのアクセスを管理する
このガイドでは、特定の 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 ポリシーを設定します。
マネージド ノートブック インスタンスのプリンシパルにロールを付与するには、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 リソースへのアクセス権を付与する方法を確認する。他のリソースへのアクセス権の管理をご覧ください。