使用 IAM 控管存取權
本頁面說明憑證授權單位服務的 IAM 角色。
CA 服務使用身分與存取權管理 (IAM) 角色控管存取權。您可以透過 IAM 定義使用者 (身分) 擁有的資源權限 (角色),藉此控管存取權。IAM 角色包含一組權限,可讓使用者對 Google Cloud資源執行特定操作。授予 IAM 角色時,請遵循最低權限原則,保護憑證授權單位服務資源的完整性,並管理 CA 集區和整體公用金鑰基礎架構 (PKI) 的安全性。
如要瞭解如何將 IAM 角色指派給使用者或服務帳戶,請參閱 IAM 說明文件中的「授予、變更及撤銷資源的存取權」一文。
預先定義的角色
下表列出預先定義的 IAM 角色,以及與各角色相關聯的權限:
| 角色 | 權限 | 說明 |
|---|---|---|
CA 服務稽核者roles/privateca.auditor |
privateca.caPools.getprivateca.caPools.getIamPolicyprivateca.caPools.listprivateca.certificateAuthorities.listprivateca.certificateAuthorities.getprivateca.certificateTemplates.getprivateca.certificateTemplates.getIamPolicyprivateca.certificateTemplates.listprivateca.certificates.listprivateca.certificates.getprivateca.locations.getprivateca.locations.listprivateca.operations.getprivateca.operations.listprivateca.certificateRevocationLists.listprivateca.certificateRevocationLists.getprivateca.certificateRevocationLists.getIamPolicyresourcemanager.projects.getresourcemanager.projects.list
|
CA 服務稽核員角色具備所有 CA 服務資源的唯讀存取權,可擷取及列出 CA 集區、CA、憑證、撤銷清單、IAM 政策和專案的屬性。建議您將這個角色指派給負責驗證 CA 集區安全性和作業的人員,且這些人員沒有管理服務的日常職責。 |
CA 服務憑證要求者roles/privateca.certificateRequester |
privateca.certificates.create
|
CA 服務憑證要求者角色可向 CA 集區提交憑證要求。建議您將這個角色授予可信任且獲准要求憑證的人員。 具有這個角色的使用者可以要求任意憑證,但須遵守核發政策。 與 CA 服務憑證管理員角色不同,這個角色無法讓使用者取得或列出新核發的憑證,也無法取得 CA 集區的任何資訊。 |
CA 服務工作負載憑證要求者roles/privateca.workloadCertificateRequester |
privateca.certificates.createForSelf
|
CA 服務工作負載憑證要求者可透過呼叫端身分要求 CA 服務提供憑證。 |
CA 服務憑證管理員roles/privateca.certificateManager |
roles/privateca.auditor 的所有權限,加上:privateca.certificates.create
|
CA 服務憑證管理員可以向 CA 集區提交憑證核發要求,就像 CA 服務憑證要求者一樣。此外,這個角色也會繼承 CA 服務稽核員角色的權限。建議您將這個角色指派給負責在 CA 集區建立、追蹤及審查憑證要求的人員,例如經理或主要工程師。 |
CA 服務憑證範本使用者roles/privateca.templateUser |
privateca.certificateTemplates.getprivateca.certificateTemplates.listprivateca.certificateTemplates.use
|
CA 服務憑證範本使用者可以讀取、列出及使用憑證範本。 |
CA 服務作業管理員roles/privateca.caManager |
roles/privateca.auditor 的所有權限,加上:privateca.certificates.updateprivateca.caPools.createprivateca.caPools.deleteprivateca.caPools.updateprivateca.certificateAuthorities.createprivateca.certificateAuthorities.deleteprivateca.certificateAuthorities.updateprivateca.certificateRevocationLists.updateprivateca.certificateTemplates.createprivateca.certificateTemplates.deleteprivateca.certificateTemplates.updateprivateca.certificates.updateprivateca.operations.cancelprivateca.operations.deleteresourcemanager.projects.getresourcemanager.projects.liststorage.buckets.create
|
CA 服務作業管理員可以建立、更新及刪除 CA 集區和 CA。這個角色也可以撤銷憑證及建立 Cloud Storage bucket。這個角色也具備 CA 服務稽核員的權限,這個角色的使用者負責在機構中設定及部署 CA 集區,並設定 CA 集區的核發政策。 這個角色無法建立憑證。如要執行這項操作,請使用「CA 服務憑證要求者」、「CA 服務憑證管理員」或「CA 服務管理員」角色。 |
CA 服務集區讀取者roles/privateca.poolReader |
privateca.caPools.get |
具有 CA 服務集區讀取者角色的使用者,可以讀取 CA 服務中的 CA 集區。 |
CA 服務管理員roles/privateca.admin |
roles/privateca.certificateManager 和 roles/privateca.caManager 的所有權限,加上:privateca.*.setIamPolicyprivateca.caPools.useprivateca.operations.cancelprivateca.operations.deleteresourcemanager.projects.getresourcemanager.projects.liststorage.buckets.create
|
CA 服務管理員角色會繼承 CA 服務作業管理員和 CA 服務憑證管理員角色的權限。這個角色可以在 CA 服務中執行所有動作。CA 服務管理員可以為 CA 集區設定 IAM 政策,並建立 Cloud Storage bucket。服務建立完成後,建議您盡量不要指派這個角色。擔任這個角色的使用者可執行所有管理作業,包括指派權限給其他使用者,以及在 CA 服務中管理憑證要求。建議您為這個角色帳戶實施特殊控管和存取權,防止未經授權的存取或使用。 |
CA 服務服務代理角色
提供現有的 Cloud KMS 金鑰或 Cloud Storage bucket 時,必須授予 CA Service Service Agent 服務帳戶 (service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com) 存取相應資源的權限。
如要使用簽署金鑰及讀取公開金鑰,Cloud KMS 必須具備 roles/cloudkms.signerVerifier 權限。roles/viewer,才能監控 Cloud Monitoring 整合的鍵。
如要使用客戶自行管理的加密金鑰 (CMEK) 加密靜態資料,您必須具備 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色。服務代理程式即可加密及解密靜態資料。
如果是 Cloud Storage,則需要 roles/storage.objectAdmin 才能將 CA 憑證和 CRL 寫入 bucket。roles/storage.legacyBucketReader 是監控值區的必要條件,才能與 Cloud Monitoring 整合。詳情請參閱「Cloud Storage 的 IAM 角色」。
透過 API 存取服務時,請執行下列指令。
建立服務帳戶並授予服務代理角色。
gcloud
gcloud beta services identity create --service=privateca.googleapis.com --project=PROJECT_ID其中:
- PROJECT_ID 是建立 CA 集區的專案專屬 ID。
使用下列
gcloud指令,將必要角色授予服務帳戶。如果提供現有的 Cloud KMS 金鑰:
gcloud
Cloud KMS 簽署金鑰:
gcloud kms keys add-iam-policy-binding 'KEY_NAME' \ --keyring='KEYRING_NAME' \ --location='LOCATION' \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \ --role='roles/cloudkms.signerVerifier'gcloud kms keys add-iam-policy-binding 'KEY_NAME' \ --keyring='KEYRING_NAME' \ --location='LOCATION' \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \ --role='roles/viewer'Cloud KMS 加密金鑰:
gcloud kms keys add-iam-policy-binding 'KEY_NAME' \ --keyring='KEYRING_NAME' \ --location='LOCATION' \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \ --role='roles/cloudkms.cryptoKeyEncrypterDecrypter'其中:
- 「KEY_NAME」是金鑰的名稱。
- 「KEYRING_NAME」是金鑰環的名稱。
- 「LOCATION」是您建立金鑰環的 Cloud KMS 位置。
- 「PROJECT_NUMBER」是 Google Cloud 專案的專案編號,可包含金鑰。
使用下列
gcloud指令,將roles/storage.objectAdmin和roles/storage.legacyBucketReader角色授予服務帳戶。如果提供現有的 Cloud Storage bucket:
gcloud
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com \ --role=roles/storage.objectAdmin其中:
- BUCKET_NAME 是您 Cloud Storage 值區的名稱。
- PROJECT_NUMBER 是服務帳戶的專屬 ID。
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com \ --role=roles/storage.legacyBucketReader
API 權限
下表列出呼叫者呼叫 CA Service API 中每個方法時必須具備的權限:
| 權限 | 說明 |
|---|---|
privateca.caPools.create |
建立憑證授權單位 (CA) 集區。 |
privateca.caPools.update |
更新 CA 集區。 |
privateca.caPools.list |
列出專案中的 CA 集區。 |
privateca.caPools.get |
擷取 CA 集區。 |
privateca.caPools.delete |
刪除憑證授權單位集區。 |
privateca.caPools.use |
使用 CA 集區。 |
privateca.caPools.getIamPolicy |
擷取 CA 集區的 IAM 政策。 |
privateca.caPools.setIamPolicy |
為 CA 集區設定 IAM 政策。 |
privateca.certificateAuthorities.create |
建立 CA。 |
privateca.certificateAuthorities.delete |
排定刪除 CA。 |
privateca.certificateAuthorities.get |
取得 CA 或 CA 憑證簽署要求。 |
privateca.certificateAuthorities.list |
列出專案中的 CA。 |
privateca.certificateAuthorities.update |
更新 CA,包括啟用、啟用、停用及還原 CA。 |
privateca.certificates.create |
可向 CA 服務要求憑證。 |
privateca.certificates.createForSelf |
可透過呼叫端身分要求 CA 服務提供憑證。 |
privateca.certificates.get |
取得憑證及其相關中繼資料。 |
privateca.certificates.list |
列出 CA 中的所有憑證。 |
privateca.certificates.update |
更新憑證的中繼資料,包括撤銷憑證。 |
privateca.certificateRevocationLists.get |
在憑證授權單位 (CA) 中取得憑證撤銷清單 (CRL)。 |
privateca.certificateRevocationLists.getIamPolicy |
取得 CRL 的 IAM 政策。 |
privateca.certificateRevocationLists.list |
列出 CA 中的所有 CRL。 |
privateca.certificateRevocationLists.setIamPolicy |
設定 CRL 的 IAM 政策。 |
privateca.certificateRevocationLists.update |
更新 CRL。 |
privateca.certificateTemplates.create |
建立憑證範本。 |
privateca.certificateTemplates.get |
擷取憑證範本。 |
privateca.certificateTemplates.list |
列出所有憑證範本。 |
privateca.certificateTemplates.update |
更新憑證範本。 |
privateca.certificateTemplates.delete |
刪除憑證範本。 |
privateca.certificateTemplates.getIamPolicy |
取得憑證範本的身分與存取權管理政策。 |
privateca.certificateTemplates.setIamPolicy |
設定憑證範本的身分與存取權管理政策。 |
privateca.certificateTemplates.use |
使用憑證範本。 |
privateca.operations.cancel |
取消長時間執行的作業。 |
privateca.operations.delete |
刪除一個長時間執行的作業。 |
privateca.operations.get |
取得長時間執行的作業。 |
privateca.operations.list |
列出專案中長時間執行的作業。 |
後續步驟
- 瞭解如何透過 IAM 集中管理資源的權限和存取範圍。 Google Cloud
- 瞭解如何設定 IAM 政策。
- 進一步瞭解客戶管理的加密金鑰 (CMEK)。