Usar chaves de criptografia gerenciadas pelo cliente

Por padrão, o Eventarc criptografa o conteúdo do cliente em repouso. O Eventarc processa a criptografia para você sem que você precise fazer nada. 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 Eventarc. O uso de chaves do Cloud KMS permite 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. O uso do Cloud KMS também permite visualizar registros de auditoria e controlar ciclos de vida importantes. Em vez de o Google ser proprietário e gerente de chaves de criptografia de chaves (KEKs) simétricas que protegem seus dados, você controla e gerencia essas chaves no Cloud KMS.

Depois de configurar os recursos com CMEKs, a experiência de acesso aos recursos do Eventarc é semelhante à criptografia padrão do Google. Para mais informações sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).

As chaves de criptografia gerenciadas pelo cliente são armazenadas como chaves de software, em um cluster do Cloud HSM ou externamente, usando o Cloud External Key Manager.

O Cloud KMS produz registros de auditoria quando as chaves são ativadas, desativadas ou usadas por recursos avançados do Eventarc para criptografar e descriptografar mensagens. Para mais informações, consulte as informações sobre registros de auditoria do Cloud KMS.

O que é protegido com a CMEK

É possível configurar a CMEK para um canal que o Eventarc Standard usa e criptografar os eventos que passam pelo canal.

A ativação de um canal com a CMEK protege os dados associados a ele (por exemplo, o tópico do Pub/Sub usado como uma camada de transporte) usando uma chave de criptografia que só você pode acessar.

Quando você ativa a CMEK para o canal do Google em um projeto Google Cloud, todos os gatilhos do Eventarc Standard para tipos de evento do Google nesse projeto e região são totalmente criptografados com essa chave de CMEK. Não é possível aplicar chaves CMEK por acionador.

Antes de começar

Antes de usar esse recurso no Eventarc, você precisa:

Console

  1. Enable the Cloud KMS and Eventarc APIs.

    Enable the APIs

  2. Crie um keyring.
  3. Crie uma chave para um keyring especificado.

gcloud

  1. Atualize os componentes gcloud.
    gcloud components update
  2. Ative as APIs Cloud KMS e Eventarc no projeto que armazenará as chaves de criptografia.
    gcloud services enable cloudkms.googleapis.com eventarc.googleapis.com
  3. Crie um keyring.
  4. Crie uma chave para um keyring especificado.

Para informações sobre todas as sinalizações e valores possíveis, execute o comando com a sinalização --help.

Observe que o Cloud KMS e o Eventarc são serviços regionais. A região da chave do Cloud KMS e do canal protegido do Eventarc precisa ser a mesma.

Conceder acesso a conta de serviço do Eventarc a uma chave

Para conceder à conta de serviço do Eventarc acesso à chave do Cloud KMS, adicione a conta de serviço como principal da chave e conceda à conta de serviço o papel Criptografador/descriptografador da CryptoKey do Cloud KMS:

Console

Ao ativar a CMEK para um canal do Google ou de terceiros por meio do console, você precisa conceder o papel Criptografador/Descriptografador de CryptoKey do Cloud KMS à conta de serviço. Para mais informações, neste documento, consulte Ativar CMEK para tipos de evento do Google ou Ativar CMEK para um canal de evento de terceiros.

gcloud

 gcloud kms keys add-iam-policy-binding KEY_NAME \
    --keyring KEY_RING \
    --location LOCATION \
    --member serviceAccount:SERVICE_AGENT_EMAIL \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter

Substitua:

  • KEY_NAME: o nome da chave; Por exemplo, my-key.
  • KEY_RING: o nome do keyring; Por exemplo, my-keyring.
  • LOCATION: a localização da chave; Por exemplo, us-central1.
  • SERVICE_AGENT_EMAIL: o endereço de e-mail da conta de serviço com o papel eventarc.serviceAgent.

    Por exemplo, service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com. Para mais informações, consulte Agentes de serviço.

Ativar CMEK para tipos de eventos do Google

Os gatilhos do Eventarc que encaminham tipos de evento do Google publicam eventos para um canal virtual conhecido como canal do Google, que é específico do projeto e da região. Esse canal virtual está disponível em todas as regiões do Eventarc.

Quando você ativa a CMEK para o canal do Google em um Google Cloud projeto, todos os gatilhos do Eventarc para tipos de evento do Google nesse projeto e região são totalmente criptografados com essa chave de CMEK. É possível adicionar várias chaves CMEK e associar cada uma a uma região específica para o canal do Google. Não é possível aplicar chaves CMEK por acionador.

Console

  1. No console do Google Cloud, acesse a página Eventarc > Canais.

    Acessar "Canais"

  2. Clique em um canal com um provedor do Google.

  3. Na página Editar canal, marque a caixa de seleção Usar uma chave de criptografia gerenciada pelo cliente (CMEK).

  4. Clique em Adicionar chave de criptografia.

  5. Selecione uma Região e, na lista Chave de criptografia CMEK, selecione um keyring que você criou para a região. Observe que você pode adicionar apenas uma chave de criptografia por região para um canal.

  6. Opcional: para inserir manualmente o nome do recurso da chave, na lista Chave de criptografia CMEK, clique em Não encontrou sua chave? Insira o nome do recurso da chave e insira-o no formato especificado.

  7. Se solicitado, conceda o papel cloudkms.cryptoKeyEncrypterDecrypter à conta de serviço do Eventarc com o papel eventarc.serviceAgent.

  8. Opcional: clique em Adicionar chave de criptografia para adicionar outro keyring criado para uma região diferente.

  9. Clique em Salvar.

gcloud

 gcloud eventarc google-channels update \
    --location=LOCATION \
    --crypto-key=KEY

Substitua:

  • LOCATION: o local do canal do Google a ser protegido. Ele precisa corresponder ao local da chave usada.
  • KEY: o nome da chave do Cloud KMS totalmente qualificado no formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

Se você estiver criando gatilhos do Pub/Sub usando seus próprios tópicos atuais, para proteção abrangente da CMEK, recomendamos que você também configure a chave KMS no tópico. Para mais informações, consulte Como configurar tópicos do Pub/Sub.

Verificar o uso do Cloud KMS

Para verificar se o canal agora é compatível com CMEK:

Console

  1. No console do Google Cloud, acesse a página Eventarc > Gatilhos.

    Acessar gatilhos

  2. Clique em um acionador que lista uma Google Cloud origem como o Provedor de eventos e uma Região que você protegeu com CMEK.

  3. Na página Detalhes do gatilo, o status de Criptografia exibe a mensagem Events encrypted using Customer-managed encryption keys.

gcloud

 gcloud eventarc google-channels describe \
    --location=LOCATION

A saída será semelhante a esta:

 cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
 name: projects/PROJECT_ID/locations/LOCATION/googleChannelConfig
 updateTime: '2022-06-28T17:24:56.365866104Z'

O valor cryptokeyName mostra a chave do Cloud KMS usada para o canal do Google.

Ativar CMEK para um canal de terceiros

Um canal do Eventarc para terceiros é um recurso que as entidades que não sãoGoogle Cloud que oferecem uma origem do Eventarc podem usar para interagir com destinos. Esse canal é específico de uma região, e só é possível adicionar uma chave por canal de terceiros.

Para ativar o CMEK para um canal de terceiros:

Console

  1. No console do Google Cloud, acesse a página Eventarc > Canais.

    Acessar "Canais"

  2. Clique em um canal com um Provedor de terceiros.

  3. Na página Detalhes do canal, clique em Editar.

  4. Na página Editar canal, em Criptografia, selecione Chave do Cloud KMS.

  5. Na lista Tipo de chave, selecione um método para gerenciar as chaves.

    Você pode gerenciar suas chaves manualmente ou usar o Autokey, que permite gerar chaves e chaveiros sob demanda. Se a opção Autokey estiver desativada, ela ainda não estará integrada ao tipo de recurso atual.

  6. Na lista Selecionar uma chave do Cloud KMS, selecione uma chave. Só é possível adicionar uma chave de criptografia por região para um canal.

  7. Opcional: para inserir manualmente o nome do recurso da chave, na lista Selecionar uma chave do Cloud KMS, clique em Inserir chave manualmente e insira o nome da chave no formato especificado.

  8. Se solicitado, conceda o papel cloudkms.cryptoKeyEncrypterDecrypter ao Agente de serviço do Eventarc.

  9. Clique em Salvar.

gcloud

 gcloud eventarc channels update CHANNEL_NAME \
    --location=LOCATION \
    --crypto-key=KEY

Substitua:

  • CHANNEL_NAME: o nome do canal de terceiros. Para criar um novo canal de terceiros, consulte Criar um canal.
  • LOCATION: o local do canal de terceiros a ser protegido. Ele precisa corresponder ao local da chave.
  • KEY: o nome da chave do Cloud KMS totalmente qualificado no formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

Verificar o uso do Cloud KMS

Para verificar se o canal agora é compatível com CMEK:

Console

  1. No console do Google Cloud, acesse a página Eventarc > Gatilhos.

    Acessar gatilhos

  2. Clique em um acionador com uma fonte de terceiros como o Provedor de eventos e uma Região que você protegeu com CMEK.

  3. Na página Detalhes do gatilho, o status da Criptografia exibe a mensagem Events encrypted using Customer-managed encryption keys.

gcloud

 gcloud eventarc channels describe CHANNEL_NAME \
    --location=LOCATION

A saída será semelhante a esta:

 createTime: '2022-06-28T18:05:52.403999904Z'
 cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
 name: projects/PROJECT_ID/locations/LOCATION/googleChannelConfig
 pubsubTopic: projects/PROJECT_ID/topics/PUBSUB_TOPIC_ID
 state: ACTIVE
 uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3
 updateTime: '2022-06-28T18:09:18.650727516Z'

O valor cryptokeyName mostra a chave do Cloud KMS usada para o canal de terceiros.

Desativar a CMEK

É possível desativar a proteção de CMEK associada a um canal. Os eventos entregues por esses canais ainda estão protegidos por Google-owned and Google-managed encryption keys. Para excluir a proteção de CMEK associada a um canal:

Console

  1. No console do Google Cloud, acesse a página Eventarc > Canais.

    Acessar "Canais"

  2. De acordo com o tipo de canal, faça o seguinte:

    Canal do Google

    1. Clique em um canal com um provedor do Google.
    2. Na página Editar canal, mantenha o ponteiro do mouse sobre a lista Chave de criptografia CMEK para ver o botão Excluir item.
    3. Clique em Excluir item.
    4. Clique em Salvar.

      Talvez seja necessário atualizar a página para ativar a caixa de seleção Usar uma chave de criptografia gerenciada pelo cliente (CMEK).

    Canal de terceiros

    1. Clique em um canal com um Provedor de terceiros.
    2. Na página Detalhes do canal, clique em Editar.
    3. Na página Editar canal, em Criptografia, selecione Chave de criptografia gerenciada pelo Google.
    4. Clique em Salvar.

gcloud

De acordo com o tipo de canal, faça o seguinte:

Canal do Google

gcloud eventarc google-channels \
    update --clear-crypto-key

Canal de terceiros

gcloud eventarc channels CHANNEL_NAME \
    update --clear-crypto-key

Aplicar uma política da organização de CMEK

O Eventarc é integrado a duas restrições de política da organização para ajudar a garantir o uso da CMEK em uma organização:

  • constraints/gcp.restrictNonCmekServices é usado para exigir proteção de CMEK.
  • constraints/gcp.restrictCmekCryptoKeyProjects é usado para limitar quais chaves do Cloud KMS são usadas para proteção CMEK.

Com essa integração, você pode especificar os seguintes requisitos de conformidade de criptografia para recursos do Eventarc na sua organização:

Considerações ao aplicar políticas da organização

Antes de aplicar qualquer política da organização de CMEK, esteja ciente do seguinte.

  • Preparar-se para um atraso na propagação

    Depois que você define ou atualiza uma política da organização, pode levar até 15 minutos para a nova política entrar em vigor.

  • Considere os recursos atuais

    Os recursos atuais não estão sujeitos às políticas da organização recém-criadas. Por exemplo, uma política da organização não se aplica retroativamente aos pipelines existentes. Esses recursos ainda podem ser acessados sem uma CMEK e, se aplicável, ainda são criptografados com as chaves atuais.

  • Verificar as permissões necessárias para definir uma política da organização

    Pode ser difícil obter a permissão para definir ou atualizar a política da organização para fins de teste. É necessário receber o papel de administrador da política da organização, que só pode ser concedido no nível da organização, não no nível do projeto ou da pasta.

    Embora o papel precise ser concedido no nível da organização, ainda é possível especificar uma política que se aplica apenas a um projeto ou pasta específicos.

Exigir CMEKs para novos recursos do Eventarc

É possível usar a restrição constraints/gcp.restrictNonCmekServices para exigir que as CMEKs sejam usadas para proteger novos recursos do Eventarc em uma organização.

Se definida, essa política da organização faz com que todas as solicitações de criação de recursos sem uma chave especificada do Cloud KMS falhem.

Após definir essa política, ela será aplicada somente a novos recursos no projeto. Os recursos atuais sem chaves do Cloud KMS aplicadas continuam existindo e podem ser acessados sem problemas.

Console

  1. No console do Google Cloud, acesse a página Políticas da organização.

    Acessar as políticas da organização

  2. Usando o Filtro, pesquise a seguinte restrição:

    constraints/gcp.restrictNonCmekServices
    
  3. Na coluna "Nome", clique em Restringir quais serviços podem criar recursos sem CMEK.

  4. Clique em Gerenciar política.

  5. Na página Editar política, em Origem da política, selecione Substituir a política do editor principal.

  6. Em Regras, clique em Adicionar uma regra.

  7. Na lista Valores da política, selecione Personalizado.

  8. Na lista Tipo de política, selecione Negar.

  9. No campo Valores personalizados, insira o seguinte:

    is:eventarc.googleapis.com
    
  10. Clique em Concluído e em Definir política.

gcloud

  1. Crie um arquivo temporário /tmp/policy.yaml para armazenar a política:

      name: projects/PROJECT_ID/policies/gcp.restrictNonCmekServices
      spec:
        rules:
        - values:
            deniedValues:
            - is:eventarc.googleapis.com

    Substitua PROJECT_ID pelo ID do projeto em que você está aplicando essa restrição.

  2. Execute o comando org-policies set-policy:

    gcloud org-policies set-policy /tmp/policy.yaml

Para verificar se a política foi aplicada, tente criar um canal do Eventarc Standard no projeto. O processo falhará a menos que você especifique uma chave do Cloud KMS.

Restringir chaves do Cloud KMS para um projeto do Eventarc

É possível usar a restrição constraints/gcp.restrictCmekCryptoKeyProjects para restringir as chaves do Cloud KMS que podem ser usadas para proteger um recurso em um projeto do Eventarc.

Por exemplo, é possível especificar uma regra semelhante a esta: "Para os recursos aplicáveis do Eventarc em projects/my-company-data-project, as chaves do Cloud KMS usadas neste projeto precisam vir de projects/my-company-central-keys OU projects/team-specific-keys".

Console

  1. No console do Google Cloud, acesse a página Políticas da organização.

    Acessar as políticas da organização

  2. Usando o Filtro, pesquise a seguinte restrição:

    constraints/gcp.restrictCmekCryptoKeyProjects
    
  3. Na coluna "Nome", clique em Restringir quais projetos podem fornecer CryptoKeys do KMS para CMEK.

  4. Clique em Gerenciar política.

  5. Na página Editar política, em Origem da política, selecione Substituir a política do editor principal.

  6. Em Regras, clique em Adicionar uma regra.

  7. Na lista Valores da política, selecione Personalizado.

  8. Na lista Tipo de política, selecione Permitir.

  9. No campo Valores personalizados, insira o seguinte:

    under:projects/KMS_PROJECT_ID
    

    Substitua KMS_PROJECT_ID pelo ID do projeto em que as chaves do Cloud KMS que você quer usar estão localizadas.

    Por exemplo, under:projects/my-kms-project

  10. Clique em Concluído e em Definir política.

gcloud

  1. Crie um arquivo temporário /tmp/policy.yaml para armazenar a política:

      name: projects/PROJECT_ID/policies/gcp.restrictCmekCryptoKeyProjects
      spec:
        rules:
        - values:
            allowedValues:
            - under:projects/KMS_PROJECT_ID

    Substitua:

    • PROJECT_ID: o ID do projeto em que você está aplicando essa restrição.
    • KMS_PROJECT_ID: o ID do projeto em que as chaves do Cloud KMS que você quer usar estão localizadas.
  2. Execute o comando org-policies set-policy:

    gcloud org-policies set-policy /tmp/policy.yaml

Para verificar se a política foi aplicada, tente criar um canal do Eventarc Standard usando uma chave do Cloud KMS de um projeto diferente. O processo falhará.

Como desativar e ativar chaves do Cloud KMS

A versão da chave armazena o material da chave criptográfica usado para criptografar, descriptografar, assinar e verificar dados. Desative essa versão da chave para que os dados criptografados com a chave não sejam acessados.

Quando o Eventarc não consegue acessar as chaves do Cloud KMS, a publicação de eventos com canais falha com erros FAILED_PRECONDITION e a entrega de eventos é interrompida. É possível ativar uma chave no estado Disabled para que os dados criptografados possam ser acessados novamente.

Desativar chaves do Cloud KMS

Para impedir que o Eventarc use a chave para criptografar ou descriptografar os dados de eventos, siga um destes procedimentos:

Embora nenhuma das operações garanta a revogação instantânea do acesso, as alterações do Identity and Access Management (IAM) geralmente são propagadas mais rapidamente. Para mais informações, consulte Consistência de recursos do Cloud KMS e Propagação de alterações no acesso.

Reativar as chaves do Cloud KMS

Para retomar a entrega e a publicação de eventos, restaure o acesso ao Cloud KMS.

Preços

Essa integração não gera outros custos além das operações principais, que são faturadas para o projeto Google Cloud. O uso de CMEK em um canal gera cobranças pelo acesso ao serviço do Cloud KMS com base nos preços do Pub/Sub.

Para mais informações sobre os preços mais atuais, consulte Preços do Cloud KMS.

A seguir