Permissões e papéis

No Cloud KMS, os recursos são organizados em uma hierarquia. Essa hierarquia ajuda você a gerenciar e conceder acesso a recursos em vários níveis de granularidade. As chaves são armazenadas em keyrings que existem em um projeto. Os projetos podem ser organizados em pastas ou organizações.

Neste tópico, apresentamos mais detalhes sobre a hierarquia de recursos no Cloud KMS. Para saber mais sobre os recursos do Google Cloud em geral, consulte Hierarquia de recursos.

Hierarquia de recursos

O escopo de um papel do IAM muda dependendo do nível da hierarquia de recursos em que o papel foi concedido. Nesta tabela, mostramos os recursos efetivos concedidos pelo papel Criptografador do Cloud KMS CryptoKey (roles/cloudkms.cryptoKeyEncrypter) em diferentes níveis da hierarquia.

É possível gerenciar o acesso a chaves ou keyrings, mas não a versões de chaves individuais.

Hierarquia de recursos Capacidade
Organização Criptografar usando todas as chaves em todos os projetos da organização
Pasta Criptografar usando todas as chaves em todos os projetos da pasta
Projeto Criptografar usando todas as chaves do projeto
Keyring Criptografar usando todas as chaves do keyring
Chave Criptografar usando apenas esta chave

Princípios de segurança

O IAM ajuda a aplicar os princípios de segurança inter-relacionados da separação de deveres e de privilégio mínimo:

  • Quando você aplica o princípio de separação de deveres, nenhum membro tem todo o acesso necessário para concluir uma função comercial importante. Por exemplo, um caixa de banco só pode retirar fundos de uma conta quando o titular da conta está fisicamente presente e inicia a transação.

  • Quando você aplica o princípio de privilégio mínimo, um membro tem apenas o nível mínimo de acesso necessário para concluir as funções comerciais específicas dele. Por exemplo, um caixa de banco não recebe automaticamente a capacidade de aprovar um empréstimo para um cliente.

Papéis predefinidos

O IAM oferece papéis predefinidos que concedem acesso a cada tipo de recurso do Google Cloud. Se nenhum papel predefinido atender às suas necessidades, crie um papel personalizado.

O IAM oferece os seguintes papéis predefinidos para o Cloud KMS:

Papel Permissões

Administrador do Cloud KMS
(roles/cloudkms.admin)

Concede acesso total aos recursos do Cloud KMS, com exceção das operações de criptografia e descriptografia.

Recursos de nível mais baixo em que você pode conceder esse papel:

  • CryptoKey
  • cloudkms.cryptoKeyVersions.create
  • cloudkms.cryptoKeyVersions.destroy
  • cloudkms.cryptoKeyVersions.get
  • cloudkms.cryptoKeyVersions.list
  • cloudkms.cryptoKeyVersions.restore
  • cloudkms.cryptoKeyVersions.update
  • cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
  • cloudkms.cryptoKeyVersions.useToEncryptViaDelegation
  • cloudkms.cryptoKeys.*
  • cloudkms.importJobs.*
  • cloudkms.keyRings.*
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Descriptografador de CryptoKey do Cloud KMS
(roles/cloudkms.cryptoKeyDecrypter)

Permite usar os recursos do Cloud KMS apenas para operações de descriptografia.

Recursos de nível mais baixo em que você pode conceder esse papel:

  • CryptoKey
  • cloudkms.cryptoKeyVersions.useToDecrypt
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Descriptografador da CryptoKey do Cloud KMS por delegação
(roles/cloudkms.cryptoKeyDecrypterViaDelegation)

Permite operações de descriptografia por meio de outros serviços do GCP.

  • cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Criptografador de CryptoKey do Cloud KMS
(roles/cloudkms.cryptoKeyEncrypter)

Permite usar os recursos do Cloud KMS apenas para operações de criptografia.

Recursos de nível mais baixo em que você pode conceder esse papel:

  • CryptoKey
  • cloudkms.cryptoKeyVersions.useToEncrypt
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Criptografador/Descriptografador de CryptoKey do Cloud KMS
(roles/cloudkms.cryptoKeyEncrypterDecrypter)

Permite usar os recursos do Cloud KMS apenas para operações de criptografia e descriptografia.

Recursos de nível mais baixo em que você pode conceder esse papel:

  • CryptoKey
  • cloudkms.cryptoKeyVersions.useToDecrypt
  • cloudkms.cryptoKeyVersions.useToEncrypt
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Criptografador/descriptografador da CryptoKey do Cloud KMS por delegação
(roles/cloudkms.cryptoKeyEncrypterDecrypterViaDelegation)

Permite operações de criptografia e descriptografia com outros serviços do GCP.

  • cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
  • cloudkms.cryptoKeyVersions.useToEncryptViaDelegation
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Criptografador da CryptoKey do Cloud KMS por delegação
(roles/cloudkms.cryptoKeyEncrypterViaDelegation)

Permite operações de criptografia por meio de outros serviços do GCP

  • cloudkms.cryptoKeyVersions.useToEncryptViaDelegation
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Operador de Crypto do Cloud KMS
(roles/cloudkms.cryptoOperator)

Ativa todas as operações Crypto.

  • cloudkms.cryptoKeyVersions.useToDecrypt
  • cloudkms.cryptoKeyVersions.useToEncrypt
  • cloudkms.cryptoKeyVersions.useToSign
  • cloudkms.cryptoKeyVersions.useToVerify
  • cloudkms.cryptoKeyVersions.viewPublicKey
  • cloudkms.locations.*
  • resourcemanager.projects.get

Gerenciador de chaves brutas PKCS#1 do Cloud KMS Expert
(roles/cloudkms.expertRawPKCS1)

Ativa o gerenciamento de chaves PKCS#1 brutas.

  • cloudkms.cryptoKeyVersions.manageRawPKCS1Keys
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Cloud KMS Importer
(roles/cloudkms.importer)

Ativa as operações ImportCryptoKeyVersion, CreateImportJob, ListImportJobs e GetImportJob

  • cloudkms.importJobs.create
  • cloudkms.importJobs.get
  • cloudkms.importJobs.list
  • cloudkms.importJobs.useToImport
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Visualizador de chaves públicas de CryptoKey do Cloud KMS
(roles/cloudkms.publicKeyViewer)

Permite operações GetPublicKey

  • cloudkms.cryptoKeyVersions.viewPublicKey
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Signatário de CryptoKey do Cloud KMS
(roles/cloudkms.signer)

Ativa operações Sign

  • cloudkms.cryptoKeyVersions.useToSign
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Signatário/verificador de CryptoKey do Cloud KMS
(roles/cloudkms.signerVerifier)

Ativa as operações Sign, Verify e GetPublicKey

  • cloudkms.cryptoKeyVersions.useToSign
  • cloudkms.cryptoKeyVersions.useToVerify
  • cloudkms.cryptoKeyVersions.viewPublicKey
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Verificador de CryptoKey do Cloud KMS
(roles/cloudkms.verifier)

Ativa as operações Verify e GetPublicKey

  • cloudkms.cryptoKeyVersions.useToVerify
  • cloudkms.cryptoKeyVersions.viewPublicKey
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Leitor do Cloud KMS
(roles/cloudkms.viewer)

Ativa as operações Get e List.

  • cloudkms.cryptoKeyVersions.get
  • cloudkms.cryptoKeyVersions.list
  • cloudkms.cryptoKeys.get
  • cloudkms.cryptoKeys.list
  • cloudkms.importJobs.get
  • cloudkms.importJobs.list
  • cloudkms.keyRings.get
  • cloudkms.keyRings.list
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Papéis personalizados

Além dos papéis predefinidos, é possível criar papéis personalizados. Os papéis personalizados permitem que você aplique o princípio de privilégio mínimo concedendo ao papel as permissões mínimas necessárias para executar uma determinada tarefa.

Um papel personalizado inclui uma ou mais permissões listadas na referência do IAM. As permissões relacionadas à API Cloud Key Management Service começam com a string cloudkms. Para mais informações, consulte Níveis de suporte para permissões em papéis personalizados.

Para mais informações sobre as permissões necessárias para invocar um método específico da API Cloud Key Management Service, consulte a referência da API desse método.

Diretrizes gerais para gerenciar o acesso no Cloud KMS

Evite o uso de papéis básicos em todo o projeto, como owner, editor e viewer. Esses papéis não separam a capacidade de gerenciar chaves da capacidade de usá-las para operações criptográficas e não são recomendados em ambientes de produção. Em vez deles, use os papéis predefinidos ou crie papéis personalizados conforme os requisitos da sua empresa.

Os exemplos a seguir ajudam a ilustrar algumas boas diretrizes de segurança:

  • Para uma organização grande ou complexa, escolha uma abordagem como esta:

    • Conceda aos membros da equipe de segurança de TI o papel Administrador do Cloud KMS (roles/cloudkms.admin) em todos os projetos. Se membros da equipe diferentes cuidam de aspectos distintos do ciclo de vida de uma chave, conceda a eles um papel mais granular, como Importador do Cloud KMS (roles/cloudkms.importer).
    • Conceda o papel Criptografador/Descriptografador do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) a usuários ou aplicativos que leem ou gravam dados criptografados.
    • Conceda o papel Leitor de chave pública do Cloud KMS (roles/cloudkms.publicKeyViewer) a usuários ou aplicativos que precisam visualizar a parte pública de uma chave usada para criptografia assimétrica.
    • Crie papéis predefinidos que correspondam aos requisitos da sua empresa. Por exemplo, o mesmo usuário pode precisar monitorar as cotas de um projeto e visualizar os dados do registro.
  • Para uma organização de pequeno porte com requisitos de segurança simples, é possível adotar uma abordagem mais simples concedendo um papel amplo, como Administrador da organização (roles/resourcemanager.organizationAdmin). No entanto, essa abordagem pode não ser escalonada de acordo com seus requisitos dinâmicos.

  • Considere hospedar suas chaves em um projeto do Google Cloud separado dos dados protegidos por essas chaves. Um usuário com um papel básico ou altamente privilegiado em um projeto, como editor, não pode usar esse papel para ter acesso não autorizado às chaves em um projeto diferente.

  • Evite conceder o papel owner a qualquer membro. Sem o papel owner, nenhum membro do projeto pode criar uma chave e usá-la para descriptografar dados ou para assinatura, a menos que cada uma dessas permissões seja concedida ao membro. Para conceder acesso administrativo amplo sem a capacidade de criptografar ou descriptografar, conceda o papel Administrador do Cloud KMS (roles/cloudkms.admin).

  • Para limitar o acesso a dados criptografados, como dados do cliente, é possível restringir quem pode acessar a chave e quem pode usá-la para descriptografia. Se necessário, crie papéis personalizados granulares para atender aos requisitos da sua empresa.

Como verificar permissões

Para cada tipo de objeto do Cloud KMS em que é possível definir permissões granulares do IAM, esse objeto tem um método testIamPermissions. O método testIamPermissions retorna o conjunto de permissões que o autor da chamada recebeu para esse objeto.

Não é possível definir permissões do IAM em uma versão da chave. Portanto, o tipo de objeto CryptoKeyVersion não tem esse método.

O método testIamPermissions de um objeto retorna um TestIamPermissionsResponse.

Para exemplos de como invocar métodos testIamPermissions, consulte a documentação sobre permissões de teste na documentação do IAM.

A seguir

  • Saiba como o IAM centraliza o gerenciamento de permissões e escopos de acesso dos recursos do Google Cloud.
  • Entenda os diferentes tipos de objetos do Cloud KMS.