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 CAroles/privateca.auditor |
privateca.caPools.getprivateca.caPools.getIamPolicyprivateca.caPools.listprivateca.certificateAuthorities.listprivateca.certificateAuthorities.getprivateca.certificateTemplates.getprivateca.certificateTemplates.getIamPolicyprivateca.certificateTemplates.listprivateca.certificates.listprivateca.certificates.getprivateca.locations.getprivateca.locations.listprivateca.operations.getprivateca.operations.listprivateca.certificateRevocationLists.listprivateca.certificateRevocationLists.getprivateca.certificateRevocationLists.getIamPolicyresourcemanager.projects.getresourcemanager.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 CAroles/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 CAroles/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 CAroles/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 CAroles/privateca.templateUser |
privateca.certificateTemplates.getprivateca.certificateTemplates.listprivateca.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 CAroles/privateca.caManager |
Todas as permissões de roles/privateca.auditor, mais:privateca.certificates.updateprivateca.caPools.createprivateca.caPools.deleteprivateca.caPools.updateprivateca.certificateAuthorities.createprivateca.certificateAuthorities.deleteprivateca.certificateAuthorities.updateprivateca.certificateRevocationLists.updateprivateca.certificateTemplates.createprivateca.certificateTemplates.deleteprivateca.certificateTemplates.updateprivateca.certificates.updateprivateca.operations.cancelprivateca.operations.deleteresourcemanager.projects.getresourcemanager.projects.liststorage.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 CAroles/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 CAroles/privateca.admin |
Todas as permissões de roles/privateca.certificateManager e roles/privateca.caManager, além de:privateca.*.setIamPolicyprivateca.caPools.useprivateca.operations.cancelprivateca.operations.deleteresourcemanager.projects.getresourcemanager.projects.liststorage.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.
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_IDEm que:
- PROJECT_ID é o identificador exclusivo do projeto em que o pool de ACs é criado.
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.
Conceda à sua conta de serviço os papéis
roles/storage.objectAdmineroles/storage.legacyBucketReaderusando o seguinte comandogcloud.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.objectAdminEm 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
- Saiba como o IAM centraliza o gerenciamento de permissões e escopos de acesso dos recursos do Google Cloud .
- Saiba como configurar políticas do IAM.
- Saiba mais sobre as chaves de criptografia gerenciadas pelo cliente (CMEK).