建立及管理標記

本指南說明如何在 Firestore 資料庫中建立及管理標記。

關於代碼

標記是可附加至Google Cloud內資源的鍵/值組合。您可以根據資源是否具備特定標記,有條件地允許或拒絕政策。舉例來說,您可以根據資源是否具備特定標記,有條件地授予 Identity and Access Management (IAM) 角色。如要進一步瞭解標記,請參閱「標記總覽」。

如要將標記附加至資源,請建立標記繫結資源,將值連結至 Google Cloud 資源。

所需權限

如要取得管理標記所需的權限,請管理員授予下列 IAM 角色:

  • 標記檢視者 (roles/resourcemanager.tagViewer) 標記附加的資源
  • 在機構層級查看及管理標記: 機構檢視者 (roles/resourcemanager.organizationViewer) 機構
  • 建立、更新及刪除代碼定義: 您要建立、更新或刪除代碼的資源必須具備代碼管理員 (roles/resourcemanager.tagAdmin) 權限
  • 在資源中附加及移除標記: 標記使用者 (roles/resourcemanager.tagUser) 在標記值和要附加/移除標記值的資源上

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

如要將標記附加至 Firestore 執行個體,您需要「Datastore 擁有者」角色 (roles/datastore.owner)。

建立標記鍵和值

您必須先建立標記並設定其值,才能附加標記。 如要建立標記鍵和標記值,請參閱「建立標記」和「新增標記值」。

在建立資源時新增標記

您可以在建立資料庫時新增標記。 在建立資源時新增標記,可立即提供資源的重要中繼資料,並協助您妥善整理資源、追蹤費用,以及自動套用政策。

gcloud

  gcloud firestore databases create \
      --location=LOCATION \
      --database=DATABASE \
      --tags=[KEY=VALUE,...]

更改下列內容:

  • LOCATION:要執行的位置。
  • DATABASE:資料庫使用的 ID。
  • KEY=VALUE:要繫結的標記 KEY=VALUE 組合清單。每個項目都必須以 <tag-key-namespaced-name>=<tag-value-short-name><tag-key-name>=<tag-value-name> 表示。

如要指定多個標記,請以半形逗號分隔,例如 TAGKEY1=TAGVALUE1,TAGKEY2=TAGVALUE2

API

向下列網址傳送 POST 要求:

      
https://firestore.googleapis.com/v1/projects/PROJECT/databases?databaseId=DATABASE

在要求內文中提供下列 JSON:

      
"type": "FIRESTORE_NATIVE",
"locationId": LOCATION,
"tags": {KEY:VALUE}

更改下列內容:

  • PROJECT:要執行的專案。
  • DATABASE:資料庫使用的 ID。
  • LOCATION:要執行的位置。
  • KEYVALUE:要繫結的標記 KEY=VALUE 配對清單。每個項目都必須以 <tag-key-namespaced-name>:<tag-value-short-name><tag-key-name>:<tag-value-name> 表示。

為現有資源新增標記

如要為現有資料庫新增標記,請按照下列步驟操作:

gcloud

如要將標記附加至資料庫,請使用 gcloud resource-manager tags bindings create 指令建立標記繫結資源:

      gcloud resource-manager tags bindings create \
          --tag-value=TAGVALUE_NAME \
          --parent=RESOURCE_ID \
          --location=LOCATION
      

更改下列內容:

  • TAGVALUE_NAME:附加標記值的永久 ID 或命名空間名稱,例如 tagValues/567890123456
  • RESOURCE_ID 是資源的完整 ID,包括用於識別資源類型的 API 網域名稱 (//firestore.googleapis.com/)。舉例來說,如要將標記附加至 projects/firestore-test-project 中的資料庫,完整 ID 為://firestore.googleapis.com/projects/firestore-test-project/databases/\(default\)
  • LOCATION:資源位置。如要將標記附加至全域資源 (例如資料夾或專案),請省略這個旗標。如要將標記附加至區域或地區資源,請務必指定位置,例如 us-central1 (區域) 或 us-central1-a (地區)。

列出附加至資源的標記

您可以查看直接附加至資料庫或由資料庫沿用的標記繫結清單。

gcloud

如要取得附加至資源的標記繫結清單,請使用 gcloud resource-manager tags bindings list 指令:

      gcloud resource-manager tags bindings list \
          --parent=RESOURCE_ID \
          --location=LOCATION
      

更改下列內容:

  • RESOURCE_ID 是資源的完整 ID,包括用於識別資源類型的 API 網域名稱 (//firestore.googleapis.com/)。舉例來說,如要將標記附加至 projects/firestore-test-project 中的資料庫,完整 ID 為://firestore.googleapis.com/projects/firestore-test-project/databases/\(default\)
  • LOCATION:資源位置。如果您要查看附加至資料夾或專案等全域資源的標記,請省略這個標記。如果查看附加至區域或地區資源的標記,則必須指定位置,例如 us-central1 (區域) 或 us-central1-a (地區)。

您應該會得到類似以下的回覆:

name: tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F7890123456/tagValues/567890123456
          tagValue: tagValues/567890123456
          resource: //firestore.googleapis.com/projects/firestore-test-project/databases/(default)
      

從資源卸離標記

您可以將直接附加至資料庫的標記分離。如要覆寫繼承的標記,請附加具有相同鍵和不同值的標記,但無法卸離。

gcloud

如要刪除標記繫結,請使用 gcloud resource-manager tags bindings delete 指令:

      gcloud resource-manager tags bindings delete \
          --tag-value=TAGVALUE_NAME \
          --parent=RESOURCE_ID \
          --location=LOCATION
      

更改下列內容:

  • TAGVALUE_NAME:附加標記值的永久 ID 或命名空間名稱,例如 tagValues/567890123456
  • RESOURCE_ID 是資源的完整 ID,包括用於識別資源類型的 API 網域名稱 (//firestore.googleapis.com/)。舉例來說,如要將標記附加至 projects/firestore-test-project 中的資料庫,完整 ID 為://firestore.googleapis.com/projects/firestore-test-project/databases/\(default\)
  • LOCATION:資源位置。如要將標記附加至全域資源 (例如資料夾或專案),請省略這個旗標。如要將標記附加至區域或地區資源,請務必指定位置,例如 us-central1 (區域) 或 us-central1-a (地區)。

刪除標籤鍵和值

移除標籤鍵或值定義時,請務必將標籤從資料庫中分離。您必須先刪除現有代碼附件 (稱為代碼繫結),才能刪除代碼定義本身。如要刪除標記鍵和標記值,請參閱刪除標記

身分與存取權管理條件和標記

您可以使用標記和 IAM 條件,有條件地將角色繫結授予階層中的使用者。如果已套用具有條件角色繫結的 IAM 政策,變更或刪除附加至資源的標記,可能會移除使用者對該資源的存取權。詳情請參閱「身分與存取權管理條件和標記」。

後續步驟