Permissions and roles
This topic describes the Identity and Access Management (IAM) roles available for Certificate Authority Service. For information about IAM, see Overview for IAM.
It is important to implement separation of duties to protect the security and integrity of a CA pool. Through the implementation of discrete roles, organizations can better manage the security of the CA pool and the overall Public Key Infrastructure (PKI) itself.
IAM lets you create and manage permissions for CA Service resources. Each IAM role provides a consistent set of permissions that restricts the operations a user can perform on CA Service resources.
You can define IAM policies for CA pools and certificate templates, but not on certificates and CA resources. IAM policies that are set on a CA pool are inherited by all the CAs in that CA pool. For more information about IAM policies, see IAM policies.
The following table lists the permissions that you must have to call each method:
||Create a certificate authority (CA) pool.|
||Update a CA pool.|
||List CA pools in a project.|
||Retrieve a CA pool.|
||Delete a CA pool.|
||Retrieve the IAM policy of the CA pool.|
||Set an IAM policy for the CA pool.|
||Create a CA.|
||Schedule a CA for deletion.|
||Get a CA or CA certificate signing request.|
||List CAs in a project.|
||Update a CA, including activating, enabling, disabling, and restoring the CA.|
||Request certificates from CA Service.|
||Request certificates from CA Service with caller's identity.|
||Get a certificate and its metadata.|
||List all certificates in a CA.|
||Update a certificate's metadata, including revocation.|
||Get a certificate revocation list (CRL) in a CA.|
||Get the IAM policy for a CRL.|
||List all CRLs in a CA.|
||Set the IAM policy for a CRL.|
||Update a CRL.|
||Create a certificate template.|
||Retrieve a certificate template.|
||List all certificate templates.|
||Update a certificate template.|
||Delete a certificate template.|
||Get IAM policy for a certificate template.|
||Set IAM policy for a certificate template.|
||Use a certificate template.|
||Cancel a long-running operation.|
||Delete a long-running operation.|
||Get a long-running operation.|
||List long-running operations in a project.|
The following table lists the predefined IAM roles and the permissions associated with each of them:
|CA Service Auditor
||The CA Service Auditor role has read-only access to all CA Service resources, and can retrieve and list properties of the CA pool, CA, certificates, revocation lists, IAM policies, and projects. We recommend that you assign this role to individuals who are accountable for validating security and operations of the CA pool, and don't have any daily responsibilities assigned to administer the service.|
|CA Service Certificate Requester
||A CA Service Certificate Requester role can submit certificate requests to a CA pool. We recommend that you grant this role to trusted individuals who are allowed to request certificates.
A user with this role can request arbitrary certificates subject to the issuance policy.
Unlike the CA Service Certificate Manager role, this role does not allow the user to get or list the newly issued certificate, or to get any information about the CA pool.
|CA Service Workload Certificate Requester
||A CA Service Workload Certificate Requester can request certificates from CA Service with caller's identity.|
|CA Service Certificate Manager
||All permissions from
||A CA Service Certificate Manager can submit certificate issuance requests to a CA pool like the CA Service Certificate Requester. In addition, this role also inherits the permissions of the CA Service Auditor role. We recommend that you assign this role to individuals accountable for creating, tracking, and reviewing certificate requests on a CA pool, such as a manager or a lead engineer.|
|CA Service Certificate Template User
||A CA Service Certificate Template User can read, list, and use certificate templates.|
|CA Service Operation Manager
||All permissions from
||A CA Service Operation Manager can create, update, and delete CA pools and CAs. This role can also revoke certificates and create Cloud Storage buckets. It also includes the same abilities as the CA Service Auditor. In this role, individuals are responsible for configuring and deploying CA pools in the organization, along with configuring the CA pool's issuance policy.
This role does not allow creating certificates. To do that, use the CA Service Certificate Requester, CA Service Certificate Manager, or CA Service Admin roles.
|CA Service Admin
||All permissions from
||The CA Service Admin role inherits permissions from the CA Service Operation Manager and CA Service Certificate Manager. This role can perform all actions within CA Service. A CA Service Admin can set IAM policies for the CA pool and create Cloud Storage buckets. We recommend that you rarely assign this role once the service is established. In this role, individuals can perform all aspects of administration including assigning rights to others and managing certificate requests in CA Service. We recommend that you implement a special control and access to this role account to prevent unauthorized access or use.|
CA Service Service Agent
When providing existing Cloud KMS signing keys or
Cloud Storage buckets during CA creation, the CA Service
Service Agent service account
service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com) must be
granted access to the respective resource.
For Cloud KMS,
roles/cloudkms.signerVerifier is required to use the
signing key and read the public key.
roles/viewer is required to monitor
the key for Cloud Monitoring integration.
For Cloud Storage,
roles/storage.objectAdmin is required to write the
CA certificate and CRLs to a bucket.
required to monitor the bucket for Cloud Monitoring integration. For more information, see IAM roles for Cloud Storage.
When accessing the service through the API, execute the following commands.
Create a service account with the Service Agent role.
gcloud beta services identity create --service=privateca.googleapis.com --project=PROJECT_ID
- PROJECT_ID is the unique identifier of the project where the CA pool is created.
Grant your service account
roles/viewerroles by using the following
If existing Cloud KMS signing keys are provided:
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' is the name of your key.
- 'KEYRING_NAME' is the name of your key ring.
- 'LOCATION' is the Cloud KMS location where you created your key ring.
- 'PROJECT_NUMBER' is the name of your service account.
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'
If existing Cloud Storage buckets are provided, use the
gsutilcommand-line tool to bind the required roles for the Cloud Storage bucket.
gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com:roles/storage.objectAdmin gs://BUCKET_NAME
- PROJECT_NUMBER is the unique identifier of your service account.
- BUCKET_NAME is the name of your Cloud Storage bucket.
gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com:roles/storage.legacyBucketReader gs://BUCKET_NAME
- Learn about policy controls.
- Learn how IAM centralizes management of permissions and access scopes for Google Cloud resources.