Controle de acesso com o IAM

Esta página descreve os papéis do IAM para o Certificate Authority Service.

O serviço de CA usa papéis do Identity and Access Management (IAM) para controle de acesso. Com o IAM, você controla o acesso definindo quem (identidade) tem qual acesso (papel) para qual recurso. Os papéis do IAM contêm um conjunto de permissões que permitem que os usuários realizem ações específicas em Google Cloud recursos. Ao seguir o princípio de privilégio mínimo ao conceder papéis do IAM, você pode proteger a integridade dos recursos do Certificate Authority Service e gerenciar a segurança do pool de ACs e da infraestrutura de chave pública (PKI) geral.

Para saber como atribuir papéis do IAM a um usuário ou conta de serviço, leia Como conceder, alterar e revogar acesso a recursos na documentação do IAM.

Papéis predefinidos

A tabela a seguir lista os papéis predefinidos do IAM e as permissões associadas a cada um deles:

Papel Permissões Descrição
Auditor de serviço de 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
O papel de auditor de serviço de CA tem acesso somente leitura a todos os recursos de serviço de CA e pode recuperar e listar propriedades do pool de ACs, AC, certificados, listas de revogação, políticas do IAM e projetos. Recomendamos que você atribua esse papel a pessoas responsáveis por validar a segurança e as operações do pool de ACs e que não tenham responsabilidades diárias atribuídas para administrar o serviço.
Requerente do certificado de serviço de CA
roles/privateca.certificateRequester
privateca.certificates.create Um papel de requerente do certificado de serviço de CA pode enviar solicitações de certificado a um pool de ACs. Recomendamos que você conceda esse papel a pessoas confiáveis que tenham permissão para solicitar certificados.

Um usuário com esse papel pode solicitar certificados arbitrários sujeitos à política de emissão.

Ao contrário do papel de Certificate Manager de serviço de CA, esse papel não permite que o usuário receba ou liste o certificado recém-emitido ou receba informações sobre o pool de ACs.
Requerente de certificado da carga de trabalho de serviços de CA
roles/privateca.workloadCertificateRequester
privateca.certificates.createForSelf Um requerente de certificado da carga de trabalho de serviços de CA pode solicitar certificados do serviço de CA com a identidade do autor da chamada.
CA Certificate Manager
roles/privateca.certificateManager
Todas as permissões de roles/privateca.auditor, além de:
privateca.certificates.create
Um Certificate Manager de serviço de CA pode enviar solicitações de emissão de certificado a um pool de ACs, como o requerente de certificado de serviço de CA. Além disso, esse papel também herda as permissões do papel de auditor de serviço de CA. Recomendamos que você atribua esse papel a pessoas responsáveis por criar, rastrear e revisar solicitações de certificado em um pool de ACs, como um gerente ou um engenheiro líder.
Usuário do modelo de certificado de serviço de CA
roles/privateca.templateUser
privateca.certificateTemplates.get
privateca.certificateTemplates.list
privateca.certificateTemplates.use
Um usuário do modelo de certificado de serviço de CA pode ler, listar e usar modelos de certificado.
Gerente de operações de serviço de CA
roles/privateca.caManager
Todas as permissões de roles/privateca.auditor, além de:
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
Um gerente de operações de serviço de CA pode criar, atualizar e excluir pools de ACs e ACs. Esse papel também pode revogar certificados e criar buckets do Cloud Storage. Ele também inclui as mesmas habilidades do auditor de serviço de CA. Nesse papel, os indivíduos são responsáveis por configurar e implantar pools de ACs na organização, além de configurar a política de emissão do pool de ACs.

Esse papel não permite a criação de certificados. Para fazer isso, use os papéis de requerente do certificado de serviço de AC, Certificate Manager de serviço de AC ou administrador de serviço de AC.
Leitor do pool de serviços de CA
roles/privateca.poolReader
privateca.caPools.get Um usuário com o papel de leitor do pool de serviços de CA pode ler pools de ACs no serviço de CA.
Administrador de serviço de CA
roles/privateca.admin
Todas as permissões de roles/privateca.certificateManager, e roles/privateca.caManager, além de:

privateca.*.setIamPolicy
privateca.caPools.use
privateca.operations.cancel
privateca.operations.delete
resourcemanager.projects.get
resourcemanager.projects.list
storage.buckets.create
O papel de administrador de serviço de AC herda permissões dos papéis de gerente de Operações de serviço de AC e Certificate Manager de serviço de AC. Esse papel pode realizar todas as ações no serviço de CA. Um administrador de serviço de CA pode definir políticas do IAM para o pool de ACs e criar buckets do Cloud Storage. Recomendamos que você raramente atribua esse papel depois que o serviço for estabelecido. Nesse papel, os indivíduos podem realizar todos os aspectos da administração, incluindo a atribuição de direitos a outras pessoas e o gerenciamento de solicitações de certificado no serviço de CA. Recomendamos que você implemente um controle especial e acesso a essa conta de função para evitar acesso ou uso não autorizado.

Papel de agente de serviço de CA

Ao fornecer chaves do Cloud KMS ou buckets do Cloud Storage, a conta de serviço do agente de serviço de CA (service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com) precisa receber acesso ao recurso respectivo.

Para o Cloud KMS, roles/cloudkms.signerVerifier é necessário para usar a chave de assinatura e ler a chave pública. roles/viewer é necessário para monitorar a chave para integração do Cloud Monitoring.

Para chaves de criptografia gerenciadas pelo cliente (CMEK) usadas para criptografar dados em repouso, o papel roles/cloudkms.cryptoKeyEncrypterDecrypter é necessário. Isso permite que o agente de serviço criptografe e descriptografe dados em repouso.

Para o Cloud Storage, roles/storage.objectAdmin é necessário para gravar o certificado de CA e as CRLs em um bucket. roles/storage.legacyBucketReader é necessário para monitorar o bucket para integração do Cloud Monitoring. Para mais informações, consulte Papéis do IAM para o Cloud Storage.

Ao acessar o serviço pela API, execute os comandos a seguir.

  1. Crie uma conta de serviço com o papel de agente de serviço.

    gcloud

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

    Em que:

    • PROJECT_ID é o identificador exclusivo do projeto em que o pool de ACs é criado.
  2. Conceda à conta de serviço os papéis necessários usando o comando gcloud a seguir.

    Se as chaves do Cloud KMS forem fornecidas:

    gcloud

    Para chaves de assinatura do 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'
    

    Para chaves de criptografia do 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'
    

    Em que:

    • 'KEY_NAME' é o nome da sua chave.
    • 'KEYRING_NAME' é o nome do seu keyring.
    • 'LOCATION' é o local do Cloud KMS em que o keyring foi criado.
    • 'PROJECT_NUMBER' é o número do Google Cloud projeto que contém a chave.
  3. Conceda à conta de serviço os papéis roles/storage.objectAdmin e roles/storage.legacyBucketReader usando o comando gcloud a seguir.

    Se os buckets do Cloud Storage forem fornecidos:

    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
    

    Em que:

    • BUCKET_NAME é o nome do bucket do Cloud Storage.
    • PROJECT_NUMBER é o identificador exclusivo da sua conta de serviço.
    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
    

Permissões da API

A tabela a seguir lista as permissões que o autor da chamada precisa ter para chamar cada método na API do serviço de CA:

Permissão Descrição
privateca.caPools.create Crie um pool de autoridade certificadora (AC).
privateca.caPools.update Atualize um pool de ACs.
privateca.caPools.list Liste pools de ACs em um projeto.
privateca.caPools.get Recupere um pool de ACs.
privateca.caPools.delete Exclua um pool de ACs.
privateca.caPools.use Use um pool de ACs.
privateca.caPools.getIamPolicy Recupere a política do IAM do pool de ACs.
privateca.caPools.setIamPolicy Defina uma política do IAM para o pool de ACs.
privateca.certificateAuthorities.create Crie uma AC.
privateca.certificateAuthorities.delete Programe uma AC para exclusão.
privateca.certificateAuthorities.get Receba uma AC ou solicitação de assinatura de certificado de CA.
privateca.certificateAuthorities.list Liste ACs em um projeto.
privateca.certificateAuthorities.update Atualize uma AC, incluindo a ativação, a habilitação, a desativação e a restauração da AC.
privateca.certificates.create Solicite certificados do serviço de CA.
privateca.certificates.createForSelf Solicita certificados do serviço da CA com a identidade do autor da chamada.
privateca.certificates.get Receba um certificado e os metadados dele.
privateca.certificates.list Liste todos os certificados em uma AC.
privateca.certificates.update Atualize os metadados de um certificado, incluindo a revogação.
privateca.certificateRevocationLists.get Receba uma lista de revogação de certificados (CRL) em uma AC.
privateca.certificateRevocationLists.getIamPolicy Receba a política do IAM para uma CRL.
privateca.certificateRevocationLists.list Liste todas as CRLs em uma AC.
privateca.certificateRevocationLists.setIamPolicy Defina a política do IAM para uma CRL.
privateca.certificateRevocationLists.update Atualize uma CRL.
privateca.certificateTemplates.create Crie um modelo de certificado.
privateca.certificateTemplates.get Recupere um modelo de certificado.
privateca.certificateTemplates.list Liste todos os modelos de certificado.
privateca.certificateTemplates.update Atualize um modelo de certificado.
privateca.certificateTemplates.delete Exclua um modelo de certificado.
privateca.certificateTemplates.getIamPolicy Receba a política do IAM para um modelo de certificado.
privateca.certificateTemplates.setIamPolicy Defina a política do IAM para um modelo de certificado.
privateca.certificateTemplates.use Use um modelo de certificado.
privateca.operations.cancel Cancelar uma operação de longa duração.
privateca.operations.delete Excluir uma operação de longa duração.
privateca.operations.get Acessar uma operação de longa duração.
privateca.operations.list Liste operações de longa duração em um projeto.

A seguir