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 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 de IAM contêm um conjunto de permissões que permite aos usuários executar 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 própria infraestrutura de chave pública (ICP).

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 de pool de CAs, CA, certificados, listas de revogação, políticas do IAM e projetos. Recomendamos que você atribua esse papel a indivíduos responsáveis por validar a segurança e as operações do pool de ACs e que não têm responsabilidades diárias atribuídas para administrar o serviço.
Solicitante do certificado de serviço de CA
roles/privateca.certificateRequester
privateca.certificates.create Um papel de Solicitante do certificado de serviço de CA pode enviar solicitações de certificado para um pool de ACs. Recomendamos que você conceda esse papel a indivíduos confiáveis 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 de Gerenciador de certificados de serviço de CA, esse papel não permite que o usuário acesse ou liste o certificado recém-emitido nem acesse informações sobre o pool de ACs.
Solicitante de certificado da carga de trabalho de serviço de CA
roles/privateca.workloadCertificateRequester
privateca.certificates.createForSelf Um solicitante de certificado de carga de trabalho de serviço de CA pode solicitar certificados do serviço de CA com a identidade do autor da chamada.
Gerenciador de certificados de serviço de CA
roles/privateca.certificateManager
Todas as permissões de roles/privateca.auditor, mais:
privateca.certificates.create
Um gerenciador de certificados de serviço de CA pode enviar solicitações de emissão de certificado para um pool de ACs, como o Solicitante de certificado de serviço de CA. Além disso, esse papel também herda as permissões do papel 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, 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 de serviço de CA pode criar, atualizar e excluir pools de CAs e CAs. 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 AC. Nesse papel, os indivíduos são responsáveis por configurar e implantar pools de CAs na organização, além de configurar a política de emissão do pool.

Esse papel não permite a criação de certificados. Para isso, use os papéis de "Solicitante de certificado de serviço de CA", "Gerenciador de certificados de serviço de CA" ou "Administrador de 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, mais:
privateca.*.setIamPolicy
privateca.caPools.use
privateca.operations.cancel
privateca.operations.delete
privateca.resourcemanager.projects.get
privateca.resourcemanager.projects.list
storage.buckets.create
O papel "Administrador de serviço de CA" herda as permissões dos papéis "Gerente de operações de serviço de CA" e "Gerenciador de certificados de serviço de CA". Esse papel pode executar 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 essa função depois que o serviço for estabelecido. Nessa função, os indivíduos podem realizar todos os aspectos da administração, inclusive a atribuição de direitos a outras pessoas e o gerenciamento de solicitações de certificado no serviço de AC. Recomendamos que você implemente um controle e acesso especiais a essa conta de função para impedir o acesso ou uso não autorizado.

Papel de agente de serviço de CA

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

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

No Cloud Storage, roles/storage.objectAdmin é necessário para gravar o certificado de CA e as CRLs em um bucket. O roles/storage.legacyBucketReader é necessário para monitorar o bucket de 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 os papéis roles/cloudkms.signerVerifier e roles/viewer à sua conta de serviço usando o seguinte comando gcloud.

    Se as chaves de assinatura atuais 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 sua chave.
    • "KEYRING_NAME" é o nome do seu keyring.
    • "LOCATION" é o local do Cloud KMS em que o keyring foi criado.
    • "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'
    

    Se os buckets do Cloud Storage forem fornecidos, use a ferramenta de linha de comando gsutil para vincular os papéis necessários ao bucket do Cloud Storage.

    gsutil

    gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com:roles/storage.objectAdmin gs://BUCKET_NAME
    

    Em que:

    • PROJECT_NUMBER é o identificador exclusivo da conta de serviço.
    • BUCKET_NAME é o nome do bucket do Cloud Storage.
    gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com:roles/storage.legacyBucketReader gs://BUCKET_NAME
    

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 autoridades certificadoras (CA, na sigla em inglês).
privateca.caPools.update Atualiza um pool de ACs.
privateca.caPools.list Listar pools de CA em um projeto.
privateca.caPools.get Recuperar um pool de ACs.
privateca.caPools.delete Exclui 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 Programar uma AC para exclusão.
privateca.certificateAuthorities.get Receba uma solicitação de assinatura de certificado de CA ou de CA.
privateca.certificateAuthorities.list Lista as CAs de um projeto.
privateca.certificateAuthorities.update Atualizar uma CA, incluindo ativar, ativar, desativar 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 Receba um certificado e os metadados dele.
privateca.certificates.list Lista todos os certificados em uma CA.
privateca.certificates.update Atualizar os metadados de um certificado, incluindo revogação.
privateca.certificateRevocationLists.get Receba uma lista de revogação de certificados (CRL) de uma CA.
privateca.certificateRevocationLists.getIamPolicy Consiga a política do IAM para uma CRL.
privateca.certificateRevocationLists.list Lista todas as CRLs em uma CA.
privateca.certificateRevocationLists.setIamPolicy Defina a política do IAM para uma CRL.
privateca.certificateRevocationLists.update Atualiza uma CRL.
privateca.certificateTemplates.create Crie um modelo de certificado.
privateca.certificateTemplates.get Recuperar um modelo de certificado.
privateca.certificateTemplates.list Liste todos os modelos de certificado.
privateca.certificateTemplates.update Atualizar um modelo de certificado.
privateca.certificateTemplates.delete Excluir um modelo de certificado.
privateca.certificateTemplates.getIamPolicy Recebe a política de IAM para um modelo de certificado.
privateca.certificateTemplates.setIamPolicy Definir 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 Conseguir uma operação de longa duração.
privateca.operations.list Lista operações de longa duração em um projeto.

A seguir