本頁面說明如何透過在 Vertex AI 端點上設定 IAM 政策,控管端點的存取權。本文假設您已熟悉 IAM 概念,例如政策、角色、權限和主體,如「在 Vertex AI 運用 IAM 進行存取控管」和「存取權管理相關概念」所述。
IAM 政策包含一或多個角色繫結,用於定義哪些 IAM 角色與哪些主體相關聯。角色是一組權限,可授予主體。Vertex AI 提供預先定義的角色,可在政策中使用。您也可以建立自己的自訂角色。
取得身分與存取權管理政策
您可以使用 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 方法和網址:
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 政策,請發出 POST
要求,使用 setIamPolicy
方法。
設定 IAM 政策會覆寫現有政策,且不會附加變更。如要修改資源的現有政策,請使用 getIamPolicy
方法取得現有政策,然後進行修改。請在etag
要求中附上修改後的政策。setIamPolicy
如果收到 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 方法和網址:
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
您應該會收到 JSON 回應,其中包含目前的 IAM 政策:
{ "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 方法和網址:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:testIamPermissions
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"
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" | Select-Object -Expand Content
{ "permissions": [ "aiplatform.googleapis.com/aiplatform.endpoints.get", "aiplatform.googleapis.com/aiplatform.endpoints.predict" ] }
後續步驟
如要進一步瞭解如何設定專案,以更安全地控管端點存取權,請參閱「為團隊設定專案」。