Controle de acesso com o IAM

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

O serviço de CA usa papéis de gerenciamento de identidade e acesso (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 que os usuários realizem ações específicas nos recursos do Google Cloud. Ao seguir o princípio de privilégio mínimo ao conceder funções do IAM, é possível proteger a integridade dos recursos do Certificate Authority Service e gerenciar a segurança do pool de AC e da própria infraestrutura de chave pública (PKI).

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 de auditor do serviço de CA tem acesso somente leitura a todos os recursos do serviço de CA e pode extrair e listar propriedades do pool de CAs, CAs, certificados, listas de revogação, políticas do IAM e 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.
Solicitante de certificado de serviço de CA
roles/privateca.certificateRequester
privateca.certificates.create Um requerente de certificado do CA Service pode enviar solicitações de certificado para 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 essa função pode solicitar certificados arbitrários sujeitos à política de emissão.

Diferente do papel de gerente de certificados do serviço de AC, essa função não permite que o usuário receba ou liste o certificado recém-emitido nem acesse informações sobre o pool de AC.
Requerente de certificado da carga de trabalho de serviço 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 gerente de certificado de serviço de AC pode enviar solicitações de emissão de certificado para um pool de ACs, como o requerente de certificado de serviço de AC. Além disso, esse papel também herda as permissões do papel de auditor de serviço do CA. Recomendamos que você atribua essa função a indivíduos responsáveis por criar, rastrear e analisar solicitações de certificado em um pool de ACs, como um gerente ou 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, 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ção de serviço de CA pode criar, atualizar e excluir pools 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. Nessa função, 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.

Essa função não permite a criação de certificados. Para isso, use as funções de requerente, gerente ou administrador do certificado de serviço da AC.
Administrador de serviço de CA
roles/privateca.admin
Todas as permissões de roles/privateca.certificateManager e roles/privateca.caManager, mais:
privateca.*.setIamPolicy
privateca.caPools.use
privateca.operations.cancel
privateca.operations.delete
privateca.resourcemanager.projects.get
privateca.resourcemanager.projects.list
storage.buckets.create
A função de administrador do serviço de CA herda as permissões dos papéis de gerente de operações do serviço de CA e de gerente de certificado do serviço de CA. Esse papel pode realizar todas as ações no serviço de CA. 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ê atribua esse papel com pouca frequência 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 AC. Recomendamos que você implemente um controle especial e o acesso a essa conta de função para evitar o acesso ou uso não autorizado.

Papel de agente de serviço do serviço de CA

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

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

No Cloud Storage, o roles/storage.objectAdmin é necessário para gravar o certificado de AC e as CRLs em um bucket. roles/storage.legacyBucketReader é necessário para monitorar o bucket para a 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 a função 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 roles/cloudkms.signerVerifier e roles/viewer usando o comando gcloud a seguir.

    Se chaves de assinatura do Cloud KMS forem fornecidas:

    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'
    

    Em que:

    • CRYPTOKEY_NAME é o nome da chave.
    • KEYRING_NAME é o nome do keyring.
    • LOCATION é o local do Cloud KMS em que você criou o keyring.
    • PROJECT_NUMBER é o nome da sua conta de serviço.
    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. Conceda à conta de serviço os papéis roles/storage.objectAdmin e roles/storage.legacyBucketReader usando o comando gcloud a seguir.

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

Permissão Descrição
privateca.caPools.create Crie um pool de autoridade certificadora (AC).
privateca.caPools.update Atualize um pool de CAs.
privateca.caPools.list Lista os pools de AC em um projeto.
privateca.caPools.get Extraia um pool de ACs.
privateca.caPools.delete Exclua um pool de ACs.
privateca.caPools.use Use um pool de ACs.
privateca.caPools.getIamPolicy Extraia a política do IAM do pool de AC.
privateca.caPools.setIamPolicy Defina uma política do IAM para o pool de ACs.
privateca.certificateAuthorities.create Crie uma AC.
privateca.certificateAuthorities.delete Programe a exclusão de uma AC.
privateca.certificateAuthorities.get Receber uma solicitação de assinatura de certificado de uma AC ou de uma AC.
privateca.certificateAuthorities.list Listar ACs em um projeto.
privateca.certificateAuthorities.update Atualize uma AC, incluindo a ativação, a ativação, a desativação e a restauração da AC.
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 Lista todos os certificados em uma AC.
privateca.certificates.update Atualizar os metadados de um certificado, incluindo a revogação.
privateca.certificateRevocationLists.get Receber uma lista de revogação de certificados (CRL) em uma AC.
privateca.certificateRevocationLists.getIamPolicy Acesse a política do IAM para uma CRL.
privateca.certificateRevocationLists.list Lista todos os 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 Extraia um modelo de certificado.
privateca.certificateTemplates.list Lista todos os modelos de certificado.
privateca.certificateTemplates.update Atualizar um modelo de certificado.
privateca.certificateTemplates.delete Exclua um modelo de certificado.
privateca.certificateTemplates.getIamPolicy Acesse a política de IAM para um modelo de certificado.
privateca.certificateTemplates.setIamPolicy Definir a política de 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 Receber uma operação de longa duração.
privateca.operations.list Listar operações de longa duração em um projeto.

A seguir