使用 IAM 控管存取權
本頁面說明憑證授權單位服務的 IAM 角色。
CA 服務使用身分與存取權管理 (IAM) 角色控管存取權。透過 IAM,您可以定義使用者 (身分) 擁有的資源權限 (角色),藉此控管存取權。IAM 角色包含一組權限,可讓使用者對資源執行特定操作。 Google Cloud授予 IAM 角色時,請遵循最低權限原則,確保憑證授權單位服務資源的完整性,並管理 CA 集區和整體公用金鑰基礎架構 (PKI) 的安全性。
如要瞭解如何指派身分與存取權管理角色給使用者或服務帳戶,請參閱 IAM 說明文件中的授予、變更及撤銷資源的存取權一文。
預先定義的角色
下表列出預先定義的 IAM 角色,以及與各角色相關聯的權限:
角色 | 權限 | 說明 |
---|---|---|
CA 服務稽核者roles/privateca.auditor |
privateca.caPools.get privateca.caPools.getIamPolicy privateca.caPools.list privateca.certificateAuthorities.list privateca.certificateAuthorities.get privateca.certificateTemplates.get privateca.certificateTemplates.getIamPolicy privateca.certificateTemplates.list privateca.certificates.list privateca.certificates.get privateca.locations.get privateca.locations.list privateca.operations.get privateca.operations.list privateca.certificateRevocationLists.list privateca.certificateRevocationLists.get privateca.certificateRevocationLists.getIamPolicy resourcemanager.projects.get resourcemanager.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.get privateca.certificateTemplates.list privateca.certificateTemplates.use
|
CA 服務憑證範本使用者可以讀取、列出及使用憑證範本。 |
CA 服務作業管理員roles/privateca.caManager |
roles/privateca.auditor 的所有權限,加上:privateca.certificates.update privateca.caPools.create privateca.caPools.delete privateca.caPools.update privateca.certificateAuthorities.create privateca.certificateAuthorities.delete privateca.certificateAuthorities.update privateca.certificateRevocationLists.update privateca.certificateTemplates.create privateca.certificateTemplates.delete privateca.certificateTemplates.update privateca.certificates.update privateca.operations.cancel privateca.operations.delete resourcemanager.projects.get resourcemanager.projects.list storage.buckets.create
|
CA 服務作業管理員可以建立、更新及刪除 CA 集區和 CA。這個角色也可以撤銷憑證及建立 Cloud Storage 值區。此外,這個角色也具備 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.*.setIamPolicy privateca.caPools.use privateca.operations.cancel privateca.operations.delete resourcemanager.projects.get resourcemanager.projects.list storage.buckets.create
|
CA 服務管理員角色會繼承 CA 服務作業管理員和 CA 服務憑證管理員角色的權限。這個角色可以執行 CA 服務中的所有動作。CA 服務管理員可以為 CA 集區設定 IAM 政策,並建立 Cloud Storage bucket。服務建立完成後,建議您盡量不要指派這個角色。擔任這個角色的使用者可執行所有管理作業,包括指派其他人的權限,以及管理 CA 服務中的憑證要求。建議您為這個角色帳戶實施特殊控管和存取權,防止未經授權的存取或使用。 |
CA 服務服務代理人角色
在建立 CA 時提供現有的 Cloud KMS 簽署金鑰或 Cloud Storage bucket 時,必須授予 CA 服務代理服務帳戶 (service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com
) 存取相應資源的權限。
如要使用簽署金鑰及讀取公開金鑰,Cloud KMS 必須具備 roles/cloudkms.signerVerifier
權限。roles/viewer
是監控 Cloud Monitoring 整合金鑰的必要條件。
如果是 Cloud Storage,則需要 roles/storage.objectAdmin
才能將 CA 憑證和 CRL 寫入 bucket。roles/storage.legacyBucketReader
是監控 bucket 的必要條件,才能與 Cloud Monitoring 整合。詳情請參閱 Cloud Storage 的 IAM 角色。
透過 API 存取服務時,請執行下列指令。
建立具有服務代理角色的服務帳戶。
gcloud
gcloud beta services identity create --service=privateca.googleapis.com --project=PROJECT_ID
其中:
- PROJECT_ID 是建立 CA 集區的專案專屬 ID。
使用下列
gcloud
指令,將roles/cloudkms.signerVerifier
和roles/viewer
角色授予服務帳戶。如果提供現有的 Cloud KMS 簽署金鑰:
gcloud
gcloud kms keys add-iam-policy-binding 'CRYPTOKEY_NAME' \ --keyring='KEYRING_NAME' \ --location='LOCATION' \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \ --role='roles/cloudkms.signerVerifier'
其中:
- 「CRYPTOKEY_NAME」是金鑰的名稱。
- 「KEYRING_NAME」是金鑰環的名稱。
- 「LOCATION」是您建立金鑰環的 Cloud KMS 位置。
- 「PROJECT_NUMBER」是服務帳戶的名稱。
gcloud kms keys add-iam-policy-binding 'CRYPTOKEY_NAME' \ --keyring='KEYRING_NAME' \ --location='LOCATION' \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \ --role='roles/viewer'
使用下列
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 服務 API 中每個方法時必須具備的權限:
權限 | 說明 |
---|---|
privateca.caPools.create |
建立憑證授權單位 (CA) 集區。 |
privateca.caPools.update |
更新 CA 集區。 |
privateca.caPools.list |
列出專案中的 CA 集區。 |
privateca.caPools.get |
擷取 CA 集區。 |
privateca.caPools.delete |
刪除 CA 集區。 |
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 |
列出專案中長時間執行的作業。 |