Controlo de acesso com a IAM

Esta página descreve as funções de IAM para o serviço de autoridade de certificação.

O serviço de AC usa funções de gestão de identidade e de acesso (IAM) para o controlo de acesso. Com a IAM, controla o acesso definindo quem (identidade) tem que acesso (função) para que recurso. As funções de IAM contêm um conjunto de autorizações que permitem aos utilizadores realizar ações específicas em recursos. Google CloudSeguindo o princípio do menor privilégio ao conceder funções do IAM, pode proteger a integridade dos recursos do serviço de autoridade de certificação e gerir a segurança do conjunto de ACs e da infraestrutura de chave pública (PKI) geral.

Para saber como atribuir funções de IAM a um utilizador ou a uma conta de serviço, leia o artigo Conceder, alterar e revogar o acesso a recursos na documentação do IAM.

Funções predefinidas

A tabela seguinte apresenta as funções de IAM predefinidas e as autorizações associadas a cada uma delas:

Função Autorizações Descrição
Auditor do serviço de AC
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 só de leitura a todos os recursos do serviço de AC e pode obter e listar propriedades do conjunto de ACs, da AC, dos certificados, das listas de revogação, das políticas IAM e dos projetos. Recomendamos que atribua esta função a indivíduos responsáveis pela validação da segurança e das operações do conjunto de ACs e que não tenham responsabilidades diárias atribuídas para administrar o serviço.
Requerente de certificados do serviço de AC
roles/privateca.certificateRequester
privateca.certificates.create Uma função de requerente de certificado do serviço de AC pode enviar pedidos de certificados para um conjunto de ACs. Recomendamos que atribua esta função a indivíduos fidedignos que tenham autorização para pedir certificados.

Um utilizador com esta função pode pedir certificados arbitrários sujeitos à política de emissão.

Ao contrário da função Gestor de certificados do serviço de AC, esta função não permite que o utilizador obtenha ou liste o certificado emitido recentemente, nem que obtenha informações sobre o conjunto de ACs.
Requerente de certificado de carga de trabalho do serviço de AC
roles/privateca.workloadCertificateRequester
privateca.certificates.createForSelf Um requerente de certificado de carga de trabalho do serviço de AC pode pedir certificados ao serviço de AC com a identidade do autor da chamada.
Gestor de certificados do serviço de AC
roles/privateca.certificateManager
Todas as autorizações do roles/privateca.auditor, além do seguinte:
privateca.certificates.create
Um Gestor de certificados do serviço de AC pode enviar pedidos de emissão de certificados para um conjunto de ACs, tal como o requerente de certificados do serviço de AC. Além disso, esta função também herda as autorizações da função de auditor de serviços da CA. Recomendamos que atribua esta função a indivíduos responsáveis pela criação, monitorização e revisão de pedidos de certificados num conjunto de ACs, como um gestor ou um engenheiro principal.
Utilizador do modelo de certificado do serviço de AC
roles/privateca.templateUser
privateca.certificateTemplates.get
privateca.certificateTemplates.list
privateca.certificateTemplates.use
Um utilizador do modelo de certificado do serviço de AC pode ler, listar e usar modelos de certificados.
Gestor de operações do serviço de AC
roles/privateca.caManager
Todas as autorizações do roles/privateca.auditor, além das seguintes:
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 gestor de operações do serviço de AC pode criar, atualizar e eliminar conjuntos de ACs e ACs. Esta função também pode revogar certificados e criar contentores do Cloud Storage. Também inclui as mesmas capacidades que o auditor de serviços da CA. Nesta função, os indivíduos são responsáveis pela configuração e implementação de conjuntos de ACs na organização, juntamente com a configuração da política de emissão do conjunto de ACs.

Esta função não permite a criação de certificados. Para tal, use as funções Pedidor de certificados do serviço de AC, Gestor de certificados do serviço de AC ou Administrador do serviço de AC.
Leitor do conjunto de serviços de AC
roles/privateca.poolReader
privateca.caPools.get Um utilizador com a função Leitor do conjunto do serviço de AC pode ler conjuntos de AC no serviço de AC.
Administrador de serviço de AC
roles/privateca.admin
Todas as autorizações do roles/privateca.certificateManager, e roles/privateca.caManager, além do seguinte:

privateca.*.setIamPolicy
privateca.caPools.use
privateca.operations.cancel
privateca.operations.delete
resourcemanager.projects.get
resourcemanager.projects.list
storage.buckets.create
A função de administrador do serviço de AC herda autorizações das funções de gestor de operações do serviço de AC e gestor de certificados do serviço de AC. Esta função pode realizar todas as ações no serviço de AC. Um administrador do serviço de AC pode definir políticas de IAM para o conjunto de ACs e criar contentores do Cloud Storage. Recomendamos que atribua raramente esta função depois de o serviço estar estabelecido. Nesta função, os indivíduos podem realizar todos os aspetos da administração, incluindo a atribuição de direitos a outros e a gestão de pedidos de certificados no serviço de AC. Recomendamos que implemente um controlo especial e acesso a esta conta de função para evitar o acesso ou a utilização não autorizados.

Função de agente do serviço de AC

Quando fornece chaves de assinatura do Cloud KMS ou contentores do Cloud Storage existentes durante a criação da AC, tem de conceder acesso à conta de serviço do agente de serviço do serviço de AC (service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com) ao recurso respetivo.

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

Para o Cloud Storage, roles/storage.objectAdmin é necessário para escrever o certificado da AC e as LRCs num contentor. roles/storage.legacyBucketReader é necessário para monitorizar o contentor para integração com o Cloud Monitoring. Para mais informações, consulte o artigo Funções de IAM para o Cloud Storage.

Quando aceder ao serviço através da API, execute os seguintes comandos.

  1. Crie uma conta de serviço com a função Agente de serviço.

    gcloud

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

    Onde:

    • PROJECT_ID é o identificador exclusivo do projeto onde o conjunto de ACs é criado.
  2. Conceda à sua conta de serviço as funções roles/cloudkms.signerVerifier e roles/viewer através do seguinte comando gcloud.

    Se forem fornecidas chaves de assinatura do Cloud KMS existentes:

    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'
    

    Onde:

    • "CRYPTOKEY_NAME" é o nome da sua chave.
    • "KEYRING_NAME" é o nome do seu conjunto de chaves.
    • "LOCATION" é a localização do Cloud KMS onde criou o seu conjunto de chaves.
    • "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 as funções roles/storage.objectAdmin e roles/storage.legacyBucketReader à sua conta de serviço através do seguinte comando gcloud.

    Se forem fornecidos contentores do Cloud Storage existentes:

    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
    

    Onde:

    • BUCKET_NAME é o nome do seu contentor 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
    

Autorizações da API

A tabela seguinte indica as autorizações que o autor da chamada tem de ter para chamar cada método na API CA Service:

Autorização Descrição
privateca.caPools.create Crie um grupo de autoridades de certificação (AC).
privateca.caPools.update Atualize um grupo de ACs.
privateca.caPools.list Apresenta pools de AC num projeto.
privateca.caPools.get Recupere um grupo de CA.
privateca.caPools.delete Elimine um grupo de CA.
privateca.caPools.use Use um grupo de ACs.
privateca.caPools.getIamPolicy Recupere a política IAM do conjunto de ACs.
privateca.caPools.setIamPolicy Defina uma política IAM para o conjunto de ACs.
privateca.certificateAuthorities.create Crie uma CA.
privateca.certificateAuthorities.delete Agende uma CA para eliminação.
privateca.certificateAuthorities.get Obtenha um pedido de assinatura de certificado da AC ou da CA.
privateca.certificateAuthorities.list Apresenta ACs num projeto.
privateca.certificateAuthorities.update Atualizar uma CA, incluindo a ativação, a ativação, a desativação e o restauro da CA.
privateca.certificates.create Pedir certificados ao serviço de AC.
privateca.certificates.createForSelf Pedir certificados ao serviço de AC com a identidade do autor da chamada.
privateca.certificates.get Obter um certificado e os respetivos metadados.
privateca.certificates.list Apresenta todos os certificados numa AC.
privateca.certificates.update Atualizar os metadados de um certificado, incluindo a revogação.
privateca.certificateRevocationLists.get Obtenha uma lista de revogação de certificados (LRC) numa AC.
privateca.certificateRevocationLists.getIamPolicy Obtenha a Política IAM para uma CRL.
privateca.certificateRevocationLists.list Apresenta todas as CRLs numa AC.
privateca.certificateRevocationLists.setIamPolicy Defina a Política IAM para uma CRL.
privateca.certificateRevocationLists.update Atualize uma LRC.
privateca.certificateTemplates.create Crie um modelo de certificado.
privateca.certificateTemplates.get Obtenha um modelo de certificado.
privateca.certificateTemplates.list Apresenta todos os modelos de certificados.
privateca.certificateTemplates.update Atualize um modelo de certificado.
privateca.certificateTemplates.delete Elimine um modelo de certificado.
privateca.certificateTemplates.getIamPolicy Obtenha a Política IAM para um modelo de certificado.
privateca.certificateTemplates.setIamPolicy Defina a Política IAM para um modelo de certificado.
privateca.certificateTemplates.use Use um modelo de certificado.
privateca.operations.cancel Cancele uma operação de longa duração.
privateca.operations.delete Elimine uma operação de longa duração.
privateca.operations.get Obtenha uma operação de longa duração.
privateca.operations.list Apresenta operações de longa duração num projeto.

O que se segue?