控管 Vertex AI 特徵儲存庫 (舊版) 資源的存取權

您可以在資源階層的不同層級設定 IAM 政策,控管 Vertex AI 特徵儲存庫 (舊版) 資源的存取權。例如:

  • 專案層級的 IAM 政策會套用至專案中的所有資源。您可以設定專案層級政策,授予使用者讀取專案中所有特徵存放區的權限。

  • 資源層級的 IAM 政策可讓您指定哪些使用者可以存取特定資源。您可以為部分使用者設定資源層級政策,授予專案中特定特徵商店的寫入權限。

您可以在下列 Vertex AI 特徵儲存庫 (舊版) 資源上,設定資源層級的 Identity and Access Management (IAM) 政策:

  • 特徵儲存庫:在特徵儲存庫中設定 Identity and Access Management 政策時,該政策會套用至特徵儲存庫,以及在該特徵儲存庫中建立的所有實體類型。

  • 實體類型:在實體類型上設定 Identity and Access Management 政策時,該政策只會套用至實體類型,以及建立實體類型的 featurestore。

IAM 政策包含一或多個角色繫結,用於定義哪些 IAM 角色與哪些主體相關聯。角色是一組您授予主體的權限。Vertex AI 提供預先定義的角色,可在政策中使用。或者,您也可以建立自己的自訂角色。

注意事項

您無法設定條件式資源政策。舉例來說,您無法建立政策,授予存取權給名稱開頭為特定字串 (例如 testing) 的任何資源。

應用實例範本

舉例來說,假設貴機構有兩組使用者。一組用於以開發運作管理員角色管理核心基礎架構。另一組則管理特定實體類型及其特徵,例如資料工程師。

DevOps 管理員會在專案層級管理特徵商店和實體類型。資料工程師要求建立新的實體類型時,DevOps 管理員可以建立該實體類型,並將擁有權委派給資料工程師。資料工程師可以自由管理所屬實體類型中的特徵,但無法操作特徵商店或其他實體類型。舉例來說,DevOps 管理員可透過這項控制項,限制存取含有私密資訊的實體類型。

在這個情境中,DevOps 管理員在專案層級具有 aiplatform.featurestoreAdmin 角色。接著,當資料工程師要求新的實體類型時,管理員會建立新的實體類型,然後在實體類型層級 (做為資源層級政策),將 aiplatform.entityTypeOwner 角色指派給資料工程師。

取得 IAM 政策

您可以使用 Google Cloud 控制台或 API,查看特徵商店或實體類型的現行 IAM 政策。

網路使用者介面

  1. 在 Google Cloud 控制台的 Vertex AI 專區,前往「Features」頁面。

    前往「Features」(功能) 頁面

  2. 從「Region」(區域) 下拉式清單中選取一個區域。
  3. 在特徵表格中,從「特徵儲存庫」或「實體類型」欄選取特徵儲存庫或實體類型。
  4. 按一下 [權限]
  5. 如要顯示資源層級的權限,請關閉「顯示繼承的權限」

    系統會依角色分組,列出可存取所選資源的主體。

  6. 展開角色,查看指派給該角色的主體。

REST

如要從資源取得 IAM 政策,請使用 getIamPolicy 方法傳送 POST 要求。以下範例會取得實體類型政策。

使用任何要求資料之前,請先替換以下項目:

  • LOCATION_ID:特徵儲存庫所在的區域,例如 us-central1
  • PROJECT_ID:您的專案 ID
  • FEATURESTORE_ID:特徵商店的 ID。
  • ENTITY_TYPE_ID:實體類型 ID。

HTTP 方法和網址:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy" | Select-Object -Expand Content

您應該會收到如下的 JSON 回應:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.entityTypeOwner",
      "members": [
        "user:example@example.com"
      ]
    }
  ]
}

設定 IAM 政策

您可以對特徵商店或實體類型設定 IAM 政策。

網路使用者介面

  1. 在 Google Cloud 控制台的 Vertex AI 專區,前往「Features」頁面。

    前往「Features」(功能) 頁面

  2. 從「Region」(區域) 下拉式清單中選取一個區域。
  3. 在特徵表格中,從「特徵儲存庫」或「實體類型」欄選取特徵儲存庫或實體類型。
  4. 按一下 [權限]
  5. 按一下「新增主體」
  6. 指定主體和要與主體建立關聯的一或多個角色。
  7. 按一下 [儲存]

REST

如要為資源設定 IAM 政策,請使用 setIamPolicy 方法傳送 POST 要求。以下範例會為實體類型設定政策。

設定 IAM 政策會覆寫任何現有政策 (不會附加變更)。如要修改資源的現有政策,請使用 getIamPolicy 方法取得現有政策,然後進行修改。請在etag要求中附上修改後的政策。setIamPolicy

如果收到 409 錯誤碼,表示有並行 SetIamPolicy 要求更新了政策。發出 GetIamPolicy 要求,取得政策的更新版 etag,然後納入新的 etag,重試 SetIamPolicy 要求。

使用任何要求資料之前,請先替換以下項目:

  • LOCATION_ID:特徵儲存庫所在的區域,例如 us-central1
  • PROJECT_ID:您的專案 ID
  • FEATURESTORE_ID:特徵商店的 ID。
  • ENTITY_TYPE_ID:實體類型 ID。
  • ROLE:包含授予權限的 IAM 角色,例如 roles/aiplatform.featurestoreDataViewer
  • PRINCIPAL:獲授角色權限的主體,例如 user:myuser@example.com
  • ETAG:字串值,用於防止政策在同時更新時相互覆寫。這個值會以 getIamPolicy 回應的一部分傳回。

HTTP 方法和網址:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy" | Select-Object -Expand Content

您應該會收到如下的 JSON 回應:

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.entityTypeOwner",
      "members": [
        "user:user1@example.com"
      ]
    },
    {
      "role": "roles/aiplatform.featurestoreDataViewer",
      "members": [
        "user:user2@example.com",
        "user:user3@example.com"
      ]
    },
    {
      "role": "roles/aiplatform.featurestoreDataWriter",
      "members": [
        "user:user4@example.com",
      ]
    }
  ]
}

驗證資源的身分與存取權管理權限

您可以驗證已通過驗證的使用者是否具備特定 IAM 權限,可存取特徵商店或實體型別。

REST

如要驗證使用者是否擁有資源的特定 IAM 權限,請使用 testIamPermissions 方法傳送 POST 要求。在下列範例中,您可以測試目前通過驗證的使用者是否具有實體類型的 IAM 權限集。

使用任何要求資料之前,請先替換以下項目:

  • LOCATION_ID:特徵儲存庫所在的區域,例如 us-central1
  • PROJECT_ID:您的專案 ID
  • FEATURESTORE_ID:特徵商店的 ID。
  • ENTITY_TYPE_ID:實體類型 ID。

HTTP 方法和網址:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d

JSON 要求主體:

{
  "permissions": [
    "aiplatform.googleapis.com/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}

如要傳送要求,請選擇以下其中一個選項:

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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d" | Select-Object -Expand Content
您應該會收到類似如下的 JSON 回應:回應只會包含要求 JSON 內文中,目前已通過驗證的使用者可用的權限。
{
  "permissions": [
    "aiplatform.googleapis.com/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}