Controle de acesso com o IAM

Nesta página, descrevemos os papéis do IAM para o Certificate Authority Service.

O CA Service 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) a qual recurso. Os papéis do IAM contêm um conjunto de permissões que permitem aos usuários realizar ações específicas nos recursos do Google Cloud. Ao seguir o princípio de privilégio mínimo ao conceder papéis do IAM, você protege a integridade dos recursos do Certificate Authority Service e gerencia a segurança do pool de ACs e da infraestrutura de chaves públicas (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
A função Auditor do serviço de AC tem acesso somente leitura a todos os recursos do serviço de AC e pode recuperar e listar propriedades do pool de AC, da AC, de certificados, de listas de revogação, de políticas do IAM e de projetos. Recomendamos que você atribua essa função 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 de certificado de serviço de CA
roles/privateca.certificateRequester
privateca.certificates.create Uma função de requerente de certificado do CA Service pode enviar solicitações de certificado a um pool de CA. Recomendamos que você conceda esse papel a pessoas de confiança que têm 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 do Gerenciador de certificados do CA Service, esse papel não permite que o usuário receba ou liste o certificado recém-emitido nem obtenha informações sobre o pool de CA.
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.
Gerente de certificado de serviço de CA
roles/privateca.certificateManager
Todas as permissões de roles/privateca.auditor, mais:
privateca.certificates.create
Um administrador de certificados do CA Service pode enviar solicitações de emissão de certificado a um pool de CAs, assim como o requerente de certificado do CA Service. Além disso, esse papel também herda as permissões do papel de auditor do serviço de CA. Recomendamos atribuir essa função a pessoas responsáveis por criar, rastrear e analisar 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 do 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, mais:
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 do serviço de AC pode criar, atualizar e excluir pools e ACs. Essa função também pode revogar certificados e criar buckets do Cloud Storage. Ele também inclui as mesmas habilidades do auditor de serviços de CA. Nessa função, as pessoas são responsáveis por configurar e implantar pools de CA na organização, além de configurar a política de emissão do pool de CA.

Essa função não permite a criação de certificados. Para isso, use as funções de requerente de certificado do CA Service, gerente de certificado do CA Service ou administrador do CA Service.
Leitor do pool de serviços de CA
roles/privateca.poolReader
privateca.caPools.get Um usuário com a função de leitor do pool de serviços de CA pode ler pools de CA 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 do CA Service herda permissões dos papéis de gerente de operações do CA Service e gerente de certificados do CA Service. Essa função pode realizar todas as ações no CA Service. Um administrador do serviço de CA pode definir políticas do IAM para o pool de CAs e criar buckets do Cloud Storage. Recomendamos que você raramente atribua essa função depois que o serviço for estabelecido. Nessa função, as pessoas podem realizar todos os aspectos da administração, incluindo a atribuição de direitos a outras pessoas e o gerenciamento de solicitações de certificados no serviço de CA. Recomendamos que você implemente um controle e acesso especiais a essa conta de função para evitar acesso ou uso não autorizado.

Papel de agente de serviço do 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 do CA Service (service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com) precisa receber acesso ao recurso correspondente.

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 da integração do Cloud Monitoring.

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

No Cloud Storage, roles/storage.objectAdmin é necessário para gravar o certificado da CA e as CRLs em um bucket. roles/storage.legacyBucketReader é necessário para monitorar o bucket na 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 seguintes comandos.

  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 à sua conta de serviço os papéis necessários usando o seguinte comando gcloud.

    Se as chaves do Cloud KMS atuais 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 chave.
    • "KEYRING_NAME" é o nome do keyring.
    • "LOCATION" é o local do Cloud KMS em que o keyring foi criado.
    • "PROJECT_NUMBER" é o número do projeto Google Cloud que contém a chave.
  3. Conceda à sua conta de serviço os papéis roles/storage.objectAdmin e roles/storage.legacyBucketReader usando o seguinte comando gcloud.

    Se forem fornecidos buckets do Cloud Storage:

    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 CA Service:

Permissão Descrição
privateca.caPools.create Crie um pool de autoridade certificadora (CA).
privateca.caPools.update Atualiza um pool de CAs.
privateca.caPools.list Listar pools de CA em um projeto.
privateca.caPools.get Recupera um pool de ACs.
privateca.caPools.delete Exclui um pool de CAs.
privateca.caPools.use Use um pool de ACs.
privateca.caPools.getIamPolicy Recupere a política do IAM do pool de CA.
privateca.caPools.setIamPolicy Defina uma política do IAM para o pool de CAs.
privateca.certificateAuthorities.create Crie uma CA.
privateca.certificateAuthorities.delete Programe a exclusão de uma CA.
privateca.certificateAuthorities.get Receba uma CA ou uma solicitação de assinatura de certificado da CA.
privateca.certificateAuthorities.list Lista as CAs em um projeto.
privateca.certificateAuthorities.update Atualizar uma CA, incluindo ativar, habilitar, desabilitar e restaurar a CA.
privateca.certificates.create Solicitar 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 Recebe um certificado e os metadados dele.
privateca.certificates.list Liste todos os certificados em uma CA.
privateca.certificates.update Atualiza os metadados de um certificado, incluindo a revogação.
privateca.certificateRevocationLists.get Recebe uma lista de revogação de certificado (CRL) em uma CA.
privateca.certificateRevocationLists.getIamPolicy Acessar a política do IAM de uma CRL.
privateca.certificateRevocationLists.list Listar todas as CRLs em uma AC.
privateca.certificateRevocationLists.setIamPolicy Defina a política do IAM para uma CRL.
privateca.certificateRevocationLists.update Atualizar uma CRL.
privateca.certificateTemplates.create Crie um modelo de certificado.
privateca.certificateTemplates.get Recupera um modelo de certificado.
privateca.certificateTemplates.list Liste todos os modelos de certificado.
privateca.certificateTemplates.update Atualizar um modelo de certificado.
privateca.certificateTemplates.delete Exclua um modelo de certificado.
privateca.certificateTemplates.getIamPolicy Receber a política de 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 Listar operações de longa duração em um projeto.

A seguir