使用標記控管存取權並整理執行個體

本頁說明如何使用 Google Cloud 標記管理 Spanner 執行個體的存取權。

Google Cloud 標記是一種鍵/值組合,可附加至 Google Cloud 資源,例如專案或 Spanner 執行個體。您可以使用標記將執行個體分組及整理,並根據執行個體是否具有特定標記,有條件地設定身分與存取權管理 (IAM) 存取權政策。您可以使用 Google Cloud CLI 或Google Cloud 控制台,建立及管理 Spanner 執行個體標記。建立標記後,您可以建立標記繫結,將標記附加至 Google Cloud 資源。資源的子項會根據Google Cloud 資源階層繼承標記繫結。舉例來說,如果您將標記附加至專案,該專案中的所有執行個體都會沿用該標記。您也可以使用標籤整理 Google Cloud 資源,但無法使用標籤在 IAM 政策中設定條件。

如要進一步瞭解代碼,請參閱「代碼總覽」。

Spanner 執行個體標記的常見用途

標記的常見用途包括:

  • IAM 標記:根據執行個體是否具有特定標記,指派 IAM 角色。標記值是否存在是該 IAM 政策的條件,有助於控管 Spanner 執行個體的存取權。

  • 狀態標記:建立標記,指出及管理執行個體的狀態。 例如 state:activestate:todeletestate:archive

  • 環境標記:建立 env:prodenv:devenv:test 等鍵/值組合,為執行個體指定正式版、測試和開發環境。

如何建立及管理 Spanner 執行個體標記

標記的結構為鍵/值組合。您可以在機構資源下建立標記鍵,然後將標記值附加至標記鍵 (例如,標記鍵 environment 具有 proddev 值)。接著,您可以建立標記繫結,將標記值連結至 Google Cloud 資源,例如專案或 Spanner 執行個體。請注意,您無法將標記指派給資料庫。

所需權限

您需要的權限取決於要執行的動作。詳情請參閱 Resource Manager 說明文件中的「必要權限」。

建立標記鍵和值

如要將標記附加至執行個體,必須先建立標記並指派值。如要建立標籤鍵和標籤值,請參閱「建立標籤」和「新增標籤值」。

將標記附加至執行個體

建立標記鍵/值組合後,即可建立標記繫結,並將其附加至 Spanner 執行個體。

主控台

  1. 前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。

    前往 Spanner 執行個體

  2. 選取要附加標記的執行個體。

  3. 按一下「代碼」

  4. 如果機構未顯示在「標記」面板中,請按一下「選取範圍」。選取機構,然後按一下「開啟」

  5. 在「標記」面板中,選取「新增標記」

  6. 在「鍵」欄位中,從清單選取要附加的代碼鍵。輸入關鍵字即可篩選清單。

  7. 在「值」欄位中,從清單選取要附加的標記值。輸入關鍵字即可篩選清單。

  8. 如要附加更多標記,請按一下「新增標記」,然後選取每個標記的鍵和值。

  9. 按一下 [儲存]

  10. 在「確認」對話方塊中,按一下「確認」即可附加標記。

    系統會發送通知,確認代碼已更新。

gcloud

如要建立標記繫結並附加至執行個體,請執行下列指令:

gcloud resource-manager tags bindings create
--parent=//spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID
--tag-value=ORG_ID/KEY_NAME/VALUE_NAME
--location=LOCATION
  • PROJECT_ID:專案 ID。
  • INSTANCE_ID:執行個體的 ID。
  • ORG_ID:機構的 ID。
  • KEY_NAME:標記鍵的顯示 (簡短) 名稱。例如:env
  • VALUE_NAME:標籤值的顯示 (簡短) 名稱。例如:prod
  • LOCATION:執行個體的位置。例如:us-east1

舉例來說,如要在 Spanner 執行個體 my-instance 上建立標籤繫結,並使用標籤鍵/值組合 env:prod,請執行下列指令:

gcloud resource-manager tags bindings create
--parent=//spanner.googleapis.com/projects/my-project/instances/my-instance
--tag-value=123456789012/env/prod
--location=us-east1

IAM 條件和標記

您可以運用標記和 IAM 條件,有條件地將角色繫結授予使用者。如果套用具有條件式角色繫結的 IAM 政策,變更或刪除附加至資源的標記,可能會移除使用者對該資源的存取權。

詳情請參閱「身分與存取權管理條件總覽」。

主控台

如要使用標記有條件地將角色繫結授予使用者,請參閱「管理標記存取權」。

gcloud

如要將以標記為準的條件套用至 IAM 政策,請確認您具備必要權限,然後執行下列指令:

gcloud organizations add-iam-policy-binding ORG_ID
--role=roles/ROLE --member=PRINCIPAL
--condition=resource.matchTag('PROJECT_ID/KEY_NAME', 'VALUE_NAME')
  • ORG_ID:機構的 ID。
  • ROLE:要指派給主體的角色名稱。角色名稱是預先定義角色的完整路徑,例如 roles/logging.viewer,或是自訂角色的角色 ID,例如 organizations/{ORG_ID}/roles/logging.viewer
  • PRINCIPAL:要新增角色繫結的主體。格式應為 user|group|serviceAccount:emaildomain:domain。例如 user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
  • PROJECT_ID:專案 ID。
  • KEY_NAME:標記鍵的顯示 (簡短) 名稱。例如:env
  • VALUE_NAME:標籤值的顯示 (簡短) 名稱。例如:prod

這項指令會將 IAM 政策繫結新增至機構的 IAM 政策。政策繫結包含成員、角色和選用條件。

舉例來說,如要在所有 123456789012 專案資源中,有條件地授予 user1@example.com spanner.backupAdmin 角色,並使用 env:prod 標記,請執行下列指令:

gcloud organizations add-iam-policy-binding my-project
--member=user1@example.com --role=roles/spanner.backupAdmin
--condition=resource.matchTag('123456789012/env', 'prod')

列出附加至執行個體的標記

您可以查看直接附加至執行個體或由執行個體繼承的標記繫結清單。

gcloud

如要取得直接附加至資源的標記繫結清單,請使用 gcloud resource-manager tags bindings list 指令。如果您加入 --effective 標記,也會取得這個資源繼承的所有標記繫結。

如要列出附加至執行個體的所有標記繫結,請執行下列指令:

gcloud resource-manager tags bindings list
--parent=//spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID
--location=LOCATION
--effective
  • PROJECT_ID:專案 ID。
  • INSTANCE_ID:執行個體的 ID。
  • LOCATION:執行個體的位置。例如:us-east1

刪除標記繫結

移除標籤鍵或值定義時,請務必將標籤從執行個體中分離。您必須先刪除現有標記繫結,才能刪除標記。

主控台

  1. 前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。

    前往 Spanner 執行個體

  2. 選取要刪除標記繫結的執行個體。

  3. 按一下「代碼」

  4. 在「標籤」面板中,找出要取消連結的標籤,然後按一下旁邊的「刪除項目」圖示

  5. 按一下 [儲存]

  6. 在「確認」對話方塊中,按一下「確認」即可取消連結代碼。

    系統會發送通知,確認代碼已更新。

gcloud

如要刪除標記繫結,請執行下列指令:

gcloud resource-manager tags bindings delete
--parent=//spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID
--tag-value=ORG_ID/KEY_NAME/KEY_VALUE
--location=LOCATION
  • PROJECT_ID:專案 ID。
  • INSTANCE_ID:執行個體的 ID。
  • ORG_ID:機構的 ID。
  • KEY_NAME:標記鍵的顯示 (簡短) 名稱。例如:env
  • VALUE_NAME:標籤值的顯示 (簡短) 名稱。例如:prod
  • LOCATION:執行個體的位置。例如:us-east1

刪除標記

刪除標記繫結後,即可刪除標記。如要刪除標記鍵和標記值,請參閱刪除標記

後續步驟