本主題說明如何管理 Cloud KMS 資源的存取權。
總覽
如要管理金鑰和金鑰環等 Cloud KMS 資源的存取權,請授予 Identity and Access Management (IAM) 角色。您可以授予或限制執行特定加密編譯作業的能力,例如輪替金鑰或加密資料。您可以授予下列項目的 IAM 角色:
- 直接使用金鑰
- 金鑰環,由該金鑰環中的所有金鑰繼承
- Google Cloud 專案,專案中的所有金鑰都會繼承
- Google Cloud 資料夾,資料夾中所有專案的所有金鑰都會繼承
- Google Cloud 機構,機構中資料夾內的所有金鑰都會繼承這項設定
如需 Cloud KMS 動作和 IAM 角色與權限的完整清單,請參閱「權限和角色」。如需 Cloud KMS 資源的完整清單,以及這些資源之間的關係,請參閱「Cloud KMS 資源」。
事前準備
如要完成這些工作,您必須具備管理 Google Cloud 專案中 Cloud KMS 資源的權限。Cloud KMS 管理員角色 (roles/cloudkms.admin) 包含必要權限。
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自體驗產品的實際應用成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init - 建立資源,例如金鑰環。
- 取得已建立資源的資源 ID,例如金鑰環、金鑰和金鑰版本。
只有具備「擁有者」(roles/owner) 或「Cloud KMS 管理員」(roles/cloudkms.admin) 角色的 IAM 主體,才能授予或撤銷 Cloud KMS 資源的存取權。
授予資源角色
以下範例會授予可存取 Cloud KMS 金鑰的角色:
gcloud
如要在指令列使用 Cloud KMS,請先安裝或升級至最新版 Google Cloud CLI。
gcloud kms keys add-iam-policy-binding key \
--keyring key-ring \
--location location \
--member principal-type:principal-email \
--role roles/role
將 key 替換為金鑰名稱。將 key-ring 替換為金鑰所在金鑰環的名稱。將 location 替換為金鑰環的 Cloud KMS 位置。將 principal-type 和 principal-email 替換為主體類型和主體的電子郵件地址。將 role 替換為要新增的角色名稱。
C#
如要執行這段程式碼,請先設定 C# 開發環境,然後安裝 Cloud KMS C# SDK。
Go
如要執行這段程式碼,請先設定 Go 開發環境,並安裝 Cloud KMS Go SDK。
Java
如要執行這段程式碼,請先設定 Java 開發環境,並安裝 Cloud KMS Java SDK。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,並安裝 Cloud KMS Node.js SDK。
PHP
如要執行這段程式碼,請先瞭解如何在 Google Cloud上使用 PHP,並安裝 Cloud KMS PHP SDK。
Python
如要執行這段程式碼,請先設定 Python 開發環境,然後安裝 Cloud KMS Python SDK。
Ruby
如要執行這段程式碼,請先設定 Ruby 開發環境,並安裝 Cloud KMS Ruby SDK。
撤銷資源存取權
如要移除主體的 Cloud KMS 金鑰存取權,請按照下列步驟操作:
gcloud
如要在指令列上使用 Cloud KMS,請先安裝或升級至最新版本的 Google Cloud CLI。
gcloud kms keys remove-iam-policy-binding key \
--keyring key-ring \
--location location \
--member principal-type:principal-email \
--role roles/role-name
將 key 替換為金鑰名稱。將 key-ring 替換為金鑰所在的金鑰環名稱。將 location 替換為金鑰環的 Cloud KMS 位置。將 principal-type 和 principal-email 替換為主體類型和主體的電子郵件地址。將 role-name 替換為要移除的角色名稱。
如要瞭解所有標記和可能的值,請執行含 --help 標記的指令。
C#
如要執行這段程式碼,請先設定 C# 開發環境,然後安裝 Cloud KMS C# SDK。
Go
如要執行這段程式碼,請先設定 Go 開發環境,並安裝 Cloud KMS Go SDK。
Java
如要執行這段程式碼,請先設定 Java 開發環境,並安裝 Cloud KMS Java SDK。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,並安裝 Cloud KMS Node.js SDK。
PHP
如要執行這段程式碼,請先瞭解如何使用 PHP Google Cloud,並安裝 Cloud KMS PHP SDK。
Python
如要執行這段程式碼,請先設定 Python 開發環境,然後安裝 Cloud KMS Python SDK。
Ruby
如要執行這段程式碼,請先設定 Ruby 開發環境,並安裝 Cloud KMS Ruby SDK。
查看資源權限
如要查看 Cloud KMS 金鑰的 IAM 政策,請按照下列步驟操作:
gcloud
如要在指令列上使用 Cloud KMS,請先安裝或升級至最新版本的 Google Cloud CLI。
gcloud kms keys get-iam-policy key \
--keyring key-ring \
--location location
將 key 替換為金鑰名稱。將 key-ring 替換為金鑰所在的金鑰環名稱。將 location 替換為金鑰環的 Cloud KMS 位置。
如要瞭解所有旗標和可能的值,請執行指令並加上 --help 旗標。
C#
如要執行這段程式碼,請先設定 C# 開發環境,並安裝 Cloud KMS C# SDK。
Go
如要執行這段程式碼,請先設定 Go 開發環境,並安裝 Cloud KMS Go SDK。
Java
如要執行這段程式碼,請先設定 Java 開發環境,並安裝 Cloud KMS Java SDK。
Node.js
如要執行這段程式碼,請先設定 Node.js 開發環境,並安裝 Cloud KMS Node.js SDK。
PHP
如要執行這段程式碼,請先瞭解如何在 Google Cloud上使用 PHP,並安裝 Cloud KMS PHP SDK。
Python
如要執行這段程式碼,請先設定 Python 開發環境,然後安裝 Cloud KMS Python SDK。
Ruby
如要執行這段程式碼,請先設定 Ruby 開發環境,然後安裝 Cloud KMS Ruby SDK。
最小權限原則
如要實行最低權限原則,請在資源階層中,將最有限的權限組合授予最低層級的物件。
如要授予主體加密 (但無法解密) 資料的權限,請在金鑰上授予
roles/cloudkms.cryptoKeyEncrypter角色。如要授予主體加密及解密資料的權限,請在金鑰上授予
roles/cloudkms.cryptoKeyEncrypterDecrypter角色。如要授予主體驗證 (但無法簽署) 資料的權限,請在金鑰上授予
roles/cloudkms.publicKeyViewer角色。如要授予主體簽署及驗證資料的權限,請在金鑰上授予
roles/cloudkms.signerVerifier角色。如要授予主體管理金鑰的權限,請授予金鑰的
roles/cloudkms.admin角色。
這份清單未列出所有合作夥伴,如需權限和角色的完整清單,請參閱「Cloud KMS 權限和角色」。
階層與繼承
您可以在專案、金鑰環、金鑰、匯入工作和其他 Cloud KMS 資源上指定政策繫結。
金鑰隸屬於金鑰環,金鑰環則隸屬於專案。在這種階層架構下,若主體在較高層級擁有特定角色或權限,相同的權限將一併套用至子項資源。也就是說,如果使用者在專案中具有 owner 角色,也會是該專案中所有金鑰環和金鑰的 owner。同樣地,一旦使用者獲派金鑰環的 cloudkms.admin 角色,就會自動具備該金鑰環中所有金鑰的相關權限。
反之則不然,也就是說,使用者如果擁有金鑰的權限,但沒有上層金鑰環的權限,就沒有該金鑰環的權限。
後續步驟
- 進一步瞭解 Cloud KMS 的權限和角色。
- 建立金鑰。
- 加密及解密資料。