使用 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.certificateManagerroles/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 存取服務時,請執行下列指令。

  1. 建立具有服務代理角色的服務帳戶。

    gcloud

    gcloud beta services identity create --service=privateca.googleapis.com --project=PROJECT_ID
    

    其中:

    • PROJECT_ID 是建立 CA 集區的專案專屬 ID。
  2. 使用下列 gcloud 指令,將 roles/cloudkms.signerVerifierroles/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'
    
  3. 使用下列 gcloud 指令,將 roles/storage.objectAdminroles/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 列出專案中長時間執行的作業。

後續步驟

  • 瞭解如何透過 IAM 集中管理 Google Cloud 資源的權限和存取範圍。
  • 瞭解如何設定 IAM 政策