このページでは、IAM ポリシーを設定して Vertex AI エンドポイントへのアクセスを制御する方法について説明します。ここでは、IAM による Vertex AI アクセス制御とアクセス管理に関連するコンセプトで説明されているポリシー、ロール、権限、プリンシパルなどの IAM のコンセプトにすでに精通されていることを前提としています。
IAM ポリシーには、どの IAM ロールがどのプリンシパルに関連付けられるかを定義する 1 つ以上のロール バインディングが含まれます。ロールは、プリンシパルに付与する権限のコレクションです。Vertex AI には、ポリシーで使用できる事前定義ロールが用意されています。独自のカスタムロールを作成することもできます。
IAM ポリシーを取得する
REST API を使用して、Vertex AI エンドポイントの現在の IAM ポリシーを表示できます。これを行うには、エンドポイントまたはプロジェクトに対する endpoints.getIamPolicy
権限が付与されている必要があります。この権限は、Vertex AI 管理者のロール(roles/aiplatform.admin
)によって付与されます。
REST
リソースから IAM ポリシーを取得するには、getIamPolicy
メソッドを使用する POST
リクエストを送信します。
データをリクエストする前に、次のように置き換えます。
- LOCATION_ID: エンドポイントが配置されているリージョン(例:
us-central1
)。 - PROJECT_ID: Google Cloud プロジェクト ID。
- ENDPOINT_ID: エンドポイントの ID。
HTTP メソッドと URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:getIamPolicy" | Select-Object -Expand Content
現在の IAM ポリシーを含む JSON レスポンスが返されます。
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.user", "members": [ "user:example@example.com" ] } ] }
IAM ポリシーを設定する
REST API を使用して、エンドポイントに IAM ポリシーを設定できます。これを行うには、エンドポイントまたはプロジェクトに対する endpoints.setIamPolicy
権限が付与されている必要があります。この権限は、Vertex AI 管理者のロール(roles/aiplatform.admin
)によって付与されます。
REST
リソースに IAM ポリシーを設定するには、setIamPolicy
メソッドを使用する POST
リクエストを送信します。
IAM ポリシーを設定すると、既存のポリシーがオーバーライドされます(変更は追加されません)。リソースの既存のポリシーを変更するには、getIamPolicy
メソッドを使用して既存のポリシーを取得し、変更します。setIamPolicy
リクエストに、変更したポリシーを etag
と一緒に含めます。
409
エラーコードが返された場合は、同時実行 setIamPolicy
リクエストによってポリシーがすでに更新されていることを示しています。getIamPolicy
メソッドを使用して、更新されたポリシーの etag
を取得してから、新しい etag
で setIamPolicy
リクエストを再試行します。
データをリクエストする前に、次のように置き換えます。
- LOCATION_ID: エンドポイントが配置されているリージョン(例:
us-central1
)。 - PROJECT_ID: Google Cloud プロジェクト ID。
- ENDPOINT_ID: エンドポイントの ID。
- ROLE: 付与する権限を含む IAM ロール(
roles/aiplatform.user
など)。 - PRINCIPAL: ロールの権限を付与するプリンシパル(
user:myuser@example.com
など)。 - ETAG: ポリシーの同時更新による相互上書きを防止する文字列値。この値は、
getIamPolicy
レスポンスの一部として返されます。
HTTP メソッドと URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy
リクエストの本文(JSON):
{ "policy": { "bindings": [ { "role": "ROLE", "members": [ "PRINCIPAL" ] }, ... ], "etag": "ETAG" } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID: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://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:setIamPolicy" | Select-Object -Expand Content
現在の IAM ポリシーを含む JSON レスポンスが返されます。
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.user", "members": [ "user:example@example.com" ] } ] }
エンドポイントに対するユーザーの IAM 権限を確認する
現在認証されているユーザーに、エンドポイントに対する特定の IAM 権限が付与されているかどうかを確認できます。
REST
ユーザーにリソースに対する特定の IAM 権限が付与されているかどうかを確認するには、testIamPermissions
メソッドを使用する POST
リクエストを送信します。次の例では、現在認証されているユーザーにエンドポイントに対する一連の IAM 権限が付与されているかどうかをテストできます。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID: エンドポイントが配置されているリージョン(例:
us-central1
)。 - PROJECT_ID: Google Cloud プロジェクト ID。
- ENDPOINT_ID: エンドポイントの ID。
HTTP メソッドと URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d
リクエストの本文(JSON):
{ "permissions": [ "aiplatform.googleapis.com/aiplatform.endpoints.get", "aiplatform.googleapis.com/aiplatform.endpoints.predict" ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
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://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d"
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://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions -d" | Select-Object -Expand Content
{ "permissions": [ "aiplatform.googleapis.com/aiplatform.endpoints.get", "aiplatform.googleapis.com/aiplatform.endpoints.predict" ] }
次のステップ
エンドポイントのアクセス制御をより安全に行うプロジェクトを設定する。チームのプロジェクトを設定するをご覧ください。