Criptografar dados com chaves de criptografia gerenciadas pelo cliente

Por padrão, o Secure Source Manager criptografa o conteúdo do cliente em repouso. O Secure Source Manager processa a criptografia para você sem nenhuma ação adicional da sua parte. Essa opção é chamada de criptografia padrão do Google.

Se você quiser controlar suas chaves de criptografia, use chaves de criptografia gerenciadas pelo cliente (CMEKs) no Cloud KMS com serviços integrados a CMEKs, incluindo o Secure Source Manager. Ao usar chaves do Cloud KMS, é possível controlar o nível de proteção, o local, a programação de rotação, as permissões de uso e acesso e os limites criptográficos. Ao usar o Cloud KMS, é possível também monitorar o uso de chaves, ver registros de auditoria e controlar ciclos de vida de chaves. Em vez de o Google ser proprietário e responsável pelo gerenciamento das chaves de criptografia de chaves (KEKs) simétricas que protegem seus dados, você controla e gerencia essas chaves no Cloud KMS.

Depois de configurar seus recursos com CMEKs, a experiência de acesso aos seus recursos do Secure Source Manager é semelhante ao uso da criptografia padrão do Google. Para saber mais sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).

O Cloud KMS pode ser executado em um projeto separado em que você gerencia centralmente as chaves de vários projetos, ou no mesmo Google Cloud projeto do Secure Source Manager. Para oferecer suporte à separação de tarefas e maior controle sobre o acesso às chaves, recomendamos criar e gerenciar chaves em um projeto separado que não inclua outros Google Cloud recursos.

Você atribui uma chave do Cloud KMS ao criar uma instância. Não é possível mudar o mecanismo de criptografia de uma instância atual. Se você tiver uma instância criptografada por CMEK, não será possível mudar o mecanismo de criptografia para a criptografia padrão do Google ou atribuir uma chave diferente do Cloud Key Management Service para criptografia.

A instância precisa ser criada no mesmo local da chave do Cloud KMS.

CMEK com o Cloud KMS Autokey

É possível criar CMEKs manualmente para proteger seus recursos do Secure Source Manager ou usar o Autokey do Cloud KMS. Com o Autokey, keyrings e chaves são gerados sob demanda para oferecer suporte à criação de recursos no Secure Source Manager. Os agentes de serviço que usam as chaves para operações de criptografia e descriptografia são criados se ainda não existirem e receberem os papéis necessários do Identity and Access Management (IAM). Para mais informações, consulte Visão geral das chaves automáticas.

Cotas do Cloud KMS e o Secure Source Manager

Quando você usa CMEK no Secure Source Manager, seus projetos podem consumir cotas de solicitações criptográficas do Cloud KMS. As instâncias criptografadas por CMEK consomem essas cotas no momento da criação. As operações de criptografia e descriptografia que usam chaves CMEK só afetam as cotas do Cloud KMS se você usar chaves de hardware (Cloud HSM) ou externas (Cloud EKM). Para mais informações, consulte Cotas do Cloud KMS.

Criar uma chave CMEK e conceder permissões

As instruções a seguir explicam como criar uma chave e conceder permissões da conta de serviço do Secure Source Manager na chave.

  1. Criar uma chave do Cloud KMS:

    Manualmente

    1. No Google Cloud projeto em que você quer gerenciar suas chaves:

      1. Ative a API Cloud KMS.

      2. Crie um keyring e uma chave usando uma das seguintes opções:

      O local da chave do Cloud KMS precisa corresponder ao local do projeto em que você quer criar a instância do Secure Source Manager.

    Usando o Autokey

    1. Se ainda não tiver feito isso, ative o Cloud KMS Autokey.

    2. Crie um novo Cloud KMS Autokey KeyHandle:

      curl -H "Content-Type: application/json" \
          -H "X-Goog-User-Project: PROJECT" \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          -X POST https://cloudkms.googleapis.com/v1/projects/PROJECT/locations/LOCATION/keyHandles \
          -d '{"resource_type_selector": "securesourcemanager.googleapis.com/Instance"}'
      

      Substitua:

      • PROJECT: o ID do projeto em que o Cloud KMS Autokey está ativado e em que você quer implantar uma instância do Secure Source Manager
      • LOCATION: o local do KeyHandle. Ele precisa corresponder ao local em que você quer implantar uma instância do Secure Source Manager

      O resultado será assim:

      {
        "name": "projects/PROJECT/locations/LOCATION/operations/OPERATION",
        "metadata": {
          "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
        }
      }
      

      Anote o OPERATION na saída. Você precisa desse valor para receber o ID do recurso da chave criada.

    3. Encontre a chave do Cloud KMS associada ao identificador de chave:

      curl -H "X-Goog-User-Project: PROJECT" \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          -X GET https://cloudkms.googleapis.com/v1/projects/PROJECT/locations/LOCATION/operations/OPERATION
      

      Substitua:

      • PROJECT: o ID do projeto em que o Cloud KMS Autokey está ativado e em que você quer implantar uma instância do Secure Source Manager
      • LOCATION: o local do KeyHandle. Ele precisa corresponder ao local em que você quer implantar uma instância do Secure Source Manager
      • OPERATION: o identificador da operação de solicitação do identificador de chave na saída da etapa anterior

      O resultado será assim:

      {
        "name": "projects/PROJECT/locations/LOCATION/operations/OPERATION",
        "done": true,
        "response": {
          "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
          "name": "projects/PROJECT/locations/LOCATION/keyHandles/KEY_HANDLE",
          "kmsKey": "projects/PROJECT/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
          "resourceTypeSelector": "securesourcemanager.googleapis.com/Instance"
        }
      }
      

      O valor do elemento kmsKey na saída é o ID do recurso completo da chave criada pelo Cloud KMS Autokey para esse recurso. Você pode usar esse ID de recurso da mesma forma que usaria o ID de recurso de qualquer outro recurso do Cloud KMS.

  2. Se você estiver criando sua primeira instância do Secure Source Manager no projeto, será necessário criar manualmente o agente de serviço do Secure Source Manager executando o seguinte comando:

    gcloud beta services identity create \
    --service=securesourcemanager.googleapis.com \
    --project=PROJECT
    

    Em que PROJECT é o ID do projeto em que você vai criar a instância do Secure Source Manager.

    Depois de criar a conta de serviço por produto por projeto (P4SA), você precisa conceder o papel de agente de serviço do Secure Source Manager (roles/securesourcemanager.serviceAgent) ao principal service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com ou a criação da instância vai falhar.

  3. Conceda o papel do IAM de criptografador/descriptografador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) à conta de serviço do Secure Source Manager. Conceda essa permissão na chave que você criou.

    Console

    1. Acesse a página Gerenciamento de chaves.

      Vá para Gerenciamento de chaves

    2. Selecione o keyring que você quer usar, abra a página Detalhes do keyring e selecione a chave criada.

    3. Conceda acesso à conta de serviço do Secure Source Manager:

      1. Clique em ADICIONAR PRINCIPAL.
      2. Adicione a conta de serviço do Secure Source Manager. A conta de serviço é service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com, em que PROJECT-NUMBER é o número do projeto do Google Cloud projeto em que o Secure Source Manager está ativado.
      3. Em Selecione um papel, selecione Cloud KMS > Criptografador/descriptografador do CryptoKey do Cloud KMS.
      4. Clique em SALVAR.
    4. Repita a etapa anterior para conceder acesso à conta que vai criar a instância do Secure Source Manager.

    5. Volte à Gerenciamento de chaves página, selecione o keyring e abra a Detalhes do keyring página. Em seguida, selecione a chave novamente.

    6. Selecione MOSTRAR PAINEL DE INFORMAÇÕES. Você vai encontrar papéis na coluna Papel/membro.

    gcloud

    1. Execute o comando a seguir para conceder acesso à conta de serviço do Secure Source Manager:

      gcloud kms keys add-iam-policy-binding [--project=PROJECT] \
             KEY_NAME --location LOCATION --keyring=KEY_RING \
             --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com \
             --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      Substitua:

      • PROJECT: o ID do projeto que contém a chave
      • KEY_NAME: o nome da chave
      • LOCATION: a localização da chave. O local da chave precisa corresponder ao local do projeto em que você quer implantar uma instância do Secure Source Manager
      • KEY_RING: o nome do keyring
      • PROJECT_NUMBER: o número do projeto do Google Cloud projeto com o Secure Source Manager ativado
    2. Repita a etapa anterior para conceder acesso à conta que vai criar a instância do Secure Source Manager.

    Para mais informações sobre esse comando, consulte a documentação gcloud kms keys add-iam-policy-binding.

Remover acesso

Há várias maneiras de remover o acesso de um repositório criptografado por CMEK:

Recomendamos revogar as permissões da conta de serviço do Secure Source Manager antes de desativar ou destruir uma chave. As alterações de permissões são consistentes em segundos, então é possível observar os impactos da desativação ou da destruição de uma chave.

Quando você desativa ou destrói a chave de criptografia de uma instância, perde a capacidade de visualizar ou recuperar dados da instância. Todos os dados armazenados na instância se tornam inacessíveis, incluindo histórico de código, solicitações de envio e problemas.

Os usuários com o papel de gerenciador de instâncias do Secure Source Manager ou de proprietário da instância podem excluir a instância.

Políticas da organização de CMEK

O Secure Source Manager oferece suporte a restrições de políticas da organização que podem exigir proteção CMEK.

As políticas podem limitar quais CryptoKeys do Cloud KMS podem ser usadas para proteção CMEK.

  • Quando a API Secure Source Manager está na lista de serviços da política Deny da restrição constraints/gcp.restrictNonCmekServices, o Secure Source Manager se recusa a criar novas instâncias que não sejam protegidas por CMEK.

  • Quando constraints/gcp.restrictCmekCryptoKeyProjects está configurado, o Secure Source Manager cria instâncias protegidas por CMEK que são protegidas por uma CryptoKey de um projeto, pasta ou organização permitida.

Para mais informações sobre como configurar políticas da organização, consulte Políticas da organização de CMEK.

A seguir