Ative as chaves de criptografia gerenciadas pelo cliente (CMEK) para os conjuntos de dados da API Cloud Healthcare

Por padrão, o Google Cloud automaticamente criptografa os dados quando em repouso usando chaves de criptografia gerenciadas pelo Google. Se você tiver requisitos regulatórios ou de compliance específicos relacionados às chaves que protegem seus dados, use as chaves de criptografia gerenciadas pelo cliente (CMEKs, na sigla em inglês) para seus conjuntos de dados da API Cloud Healthcare. Em vez de o Google ser proprietário e gerenciar as chaves de criptografia que protegem sua dados, seus conjuntos de dados da API Cloud Healthcare são criptografados usando uma chave que você controla e gerencia Cloud Key Management Service (Cloud KMS):

Para mais informações sobre a CMEK, incluindo quando e por que ativá-las, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).

Antes de começar

Decida se o conjunto de dados da API Cloud Healthcare e O Cloud KMS vai estar no mesmo projeto do Google Cloud ou em Para mais orientações, consulte Separação de tarefas.

Para fins de documentação, são usadas as seguintes convenções:

  • PROJECT_ID: o ID do projeto da API Cloud Healthcare
  • KMS_PROJECT_ID: o ID do projeto em que o Cloud KMS é executada, que pode ser igual a PROJECT_ID

Para informações sobre os códigos de projeto e os números de projeto do Google Cloud, consulte Como identificar projetos.

Limitações

  • Só é possível usar as chaves do Cloud KMS ao criar um dataset da API Cloud Healthcare. Não é possível ativar, alterar ou desativar as chaves do Cloud KMS em uma API Cloud Healthcare atual no conjunto de dados.
  • Somente armazenamentos FHIR, DICOM e HL7v2 são compatíveis com conjuntos de dados criptografados por CMEK. A proteção CMEK se aplica aos armazenamentos DICOM, FHIR e HL7v2 no conjunto de dados e os recursos deles.
  • Não é possível desidentificar recursos criptografados por CMEK.

Operações CMEK

As chaves do Cloud KMS são usadas quando um recurso criptografado por CMEK é criado, lido, atualizado ou excluído, além de tarefas operacionais, como faturamento ou garantir que a chave esteja disponível.

Considerações sobre chaves externas

Para saber como usar chaves gerenciadas em um sistema de parceiro externo de gerenciamento de chaves com suporte para proteger dados no Google Cloud, consulte Gerenciador de chaves externo do Cloud.

Se você perder as chaves gerenciadas fora do Google Cloud, o Google não poderá recuperar seus dados.

Indisponibilidade de chaves e perda de dados

Se um conjunto de dados é criptografado por uma chave e essa chave fica indisponível e permanece indisponível, a API Cloud Healthcare desativa e exclui conjunto de dados. Às vezes, uma chave fica indisponível se for desativada ou destruída ou se ficará inacessível devido a permissões revogadas, mas esse comportamento ocorrerá se o não estiver disponível por algum motivo. O nível de proteção da chave ou se ela é externa não afeta este comportamento. Chaves externas também podem ficar indisponíveis imprevisível. Por exemplo, podem surgir problemas de conectividade entre os recursos do Google Cloud e o EKM.

O processo a seguir descreve como a disponibilidade da chave é verificada e como um conjunto de dados pode ser desativado e excluído:

  1. Depois que um conjunto de dados da API Cloud Healthcare criptografado por CMEKs é criado, o A API Cloud Healthcare verifica o status da chave a cada cinco minutos para garantir que a chave esteja disponível. Se a chave não estiver disponível, a API Cloud Healthcare continuará para dar suporte a solicitações ao conjunto de dados por até uma hora.

  2. Depois de uma hora, se a API Cloud Healthcare ainda não conseguir se conectar com Cloud KMS, o conjunto de dados da API Cloud Healthcare é desativado como proteção medir. Para reativar o conjunto de dados da API Cloud Healthcare, entre em contato com o representante do suporte.

    Quando essa opção está desativada, você só pode enviar datasets.get e datasets.delete para o conjunto de dados da API Cloud Healthcare. Outras solicitações falham com um erro 400 FAILED_PRECONDITION.

  3. Se o conjunto de dados da API Cloud Healthcare permanecer indisponível por mais de 30 dias, ele será excluído permanentemente. Qualquer armazenamento DICOM, FHIR e HL7v2 no conjunto de dados e nos dados associados também são excluídos. Se forem excluídos, esses dados não poderão ser recuperados.

Criação de chaves

As seções a seguir descrevem como criar um keyring do Cloud KMS e a chave. Somente as chaves de criptografia simétrica do Cloud KMS são compatíveis.

Locais suportados

As chaves do Cloud KMS estão disponíveis nos locais da API Cloud Healthcare. Crie o keyring em um local que corresponda à região ou multirregião do conjunto de dados da API Cloud Healthcare.

  • Qualquer conjunto de dados multirregional da API Cloud Healthcare precisa usar um keyring multirregional de um local correspondente. Por exemplo, um conjunto de dados da API Cloud Healthcare na região us precisa ser protegido com um keyring da região us e um conjunto de dados da API Cloud Healthcare na região eu precisam ser protegidos com um keyring da região europe.

  • Os conjuntos de dados regionais da API Cloud Healthcare precisam usar chaves regionais correspondentes. Por exemplo: um conjunto de dados da API Cloud Healthcare na região asia-northeast1 precisa ser protegido com uma chave tocar da região asia-northeast1.

  • Não é possível usar a região global ao configurar a CMEK para um conjunto de dados da API Cloud Healthcare.

Para mais informações, consulte Locais da API Cloud Healthcare. e os locais do Cloud KMS.

Crie um keyring e uma chave.

Conclua as etapas a seguir no projeto do Google Cloud que executa o Cloud KMS:

  1. Crie um keyring.
  2. Criar uma chave.

Conceder permissões de criptografia e descriptografia

Para proteger seus dados da API Cloud Healthcare com uma chave do Cloud KMS, conceda a Conta de serviço do Agente de serviço do Cloud Healthcare a Criptografador/Descriptografador do CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) o papel nessa chave. Para instruções, consulte Permissões da CMEK do conjunto de dados.

Depois de conceder o papel à conta de serviço, a API Cloud Healthcare pode criptografar e descriptografar recursos criptografados por CMEK. Seus aplicativos não precisam especificar chaves ao ler ou gravar dados. A API Cloud Healthcare lida com criptografia.

Quando um solicitante lê ou grava um objeto criptografado com uma do Cloud KMS acessam o objeto normalmente. Durante a solicitação, o agente de serviço criptografa ou descriptografa o objeto solicitado, desde que as duas condições a seguir sejam atendidas:

  • O agente de serviço ainda tem as permissões necessárias.
  • A chave está disponível e ativada.

Criar um conjunto de dados criptografado pela CMEK API Cloud Healthcare

Os exemplos a seguir mostram como criar um conjunto de dados criptografado por CMEK.

É necessário especificar um ID de recurso de chave do Cloud KMS ao criar o conjunto de dados. Essa chave diferencia maiúsculas de minúsculas e está no seguinte formato:

projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

Para acessar os códigos de recurso da chave do Cloud KMS, consulte Como conseguir um ID de recurso do Cloud KMS.

Console

  1. No console do Google Cloud, acesse a página Navegador.

    Acessar o navegador

  2. Clique em Criar conjunto de dados. A página Criar conjunto de dados é exibida.

  3. No campo Nome, insira um identificador para o conjunto de dados sujeito aos requisitos de tamanho e caracteres permitidos.

  4. Selecione um dos seguintes tipos de local:

    • Region. O conjunto de dados reside permanentemente em uma região do Google Cloud. Depois de selecionar essa opção, digite ou selecione um local no campo Região.

    • Multirregional. O conjunto de dados reside permanentemente em um local que abrange várias regiões do Google Cloud. Depois de selecionar essa opção, digite ou selecione um local multirregional no campo Multirregional.

  5. Na seção Criptografia, selecione um dos seguintes tipos:

    • Chave de criptografia gerenciada pelo Google: o método de criptografia padrão. Use este método se quiser que o Google gerencie as chaves de criptografia que proteger seus dados no conjunto de dados da API Cloud Healthcare.

    • Chave do Cloud KMS: use uma chave de criptografia gerenciada pelo cliente (CMEK).

  6. Clique em Criar. A página Navegador é exibida. O novo conjunto de dados será exibido na lista.

gcloud

Crie o conjunto de dados usando o comando gcloud healthcare datasets create.

Antes de usar os dados do comando abaixo, faça estas substituições:

Execute o seguinte comando:

Linux, macOS ou Cloud Shell

gcloud healthcare datasets create DATASET_ID \
  --location=LOCATION \
  --encryption-key=KEY_RESOURCE_ID

Windows (PowerShell)

gcloud healthcare datasets create DATASET_ID `
  --location=LOCATION `
  --encryption-key=KEY_RESOURCE_ID

Windows (cmd.exe)

gcloud healthcare datasets create DATASET_ID ^
  --location=LOCATION ^
  --encryption-key=KEY_RESOURCE_ID

Você receberá uma resposta semelhante a esta

Create request issued for: [DATASET_ID]
Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...
Created dataset [DATASET_ID].

REST

  1. Crie o conjunto de dados usando datasets.create. .

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    Corpo JSON da solicitação:

    {
      "encryptionSpec": {
        "kmsKeyName": "KEY_RESOURCE_ID"
      }
    }
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

    cat > request.json << 'EOF'
    {
      "encryptionSpec": {
        "kmsKeyName": "KEY_RESOURCE_ID"
      }
    }
    EOF

    Depois execute o comando a seguir para enviar a solicitação REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_ID"

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

    @'
    {
      "encryptionSpec": {
        "kmsKeyName": "KEY_RESOURCE_ID"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Depois execute o comando a seguir para enviar a solicitação REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_ID" | Select-Object -Expand Content

    APIs Explorer

    Copie o corpo da solicitação e abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Cole o corpo da solicitação nessa ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.

    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem demorar mais para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. Confira o status da operação de longa duração usando o método projects.locations.datasets.operations.get.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • LOCATION: o local do conjunto de dados;
    • DATASET_ID: o ID do conjunto de dados;
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    execute o seguinte comando:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, o operação de longa duração foi concluída.

Determinar se um conjunto de dados é protegido pelo Cloud KMS

Para cada uma das chaves que você criou ou que protege seus conjuntos de dados da API Cloud Healthcare, é possível ver quais recursos essa chave protege com o rastreamento de uso da chave. Para mais informações, consulte Ver o uso da chave.

Rotação de chaves

O Cloud KMS é compatível com a rotação de chaves automática e manual para uma nova versão.

A rotação de uma chave resulta no seguinte:

  • Os conjuntos de dados da API Cloud Healthcare criados após a rotação usam a nova versão da chave para criptografia e todas as operações.
  • Os recursos em um conjunto de dados atual que são criptografados com a chave não são automaticamente recriptografados com a nova versão da chave primária.

Para que a criptografia funcione, todas as versões da chave precisam estar disponíveis. Caso contrário, o conjunto de dados da API Cloud Healthcare será desativado, e todas as solicitações para o conjunto de dados vão falhar. Para mais informações, consulte Considerações sobre chaves externas. e Conjuntos de dados desativados e exclusão permanente de conjuntos de dados.

Remover o acesso da API Cloud Healthcare à chave do Cloud KMS

Você tem controle sobre as chaves e pode desativar, destruir ou revogar permissões na chave para que a API Cloud Healthcare não acessa dados criptografados com CMEK. Depois de destruir uma chave ou versão de chave associados a um conjunto de dados da API Cloud Healthcare, todos os dados criptografados com essa chave ou a versão da chave é perdida permanentemente.

Há um atraso entre a desativação de uma chave ou versão de chave não podem mais ser usadas. Também há um atraso entre quando você revogar as permissões da conta de serviço do agente de serviço do Cloud Healthcare na chave e quando for possível e não pode mais ser acessado. Para mais informações, consulte Consistência de recursos do Cloud KMS.

Exportar e importar dados para uma instância ativada para CMEK

Para manter os dados criptografados com uma chave gerenciada pelo cliente durante uma operação de exportação, é necessário definir uma CMEK no destino de armazenamento antes de iniciar a exportação. Não há requisitos especiais restrições de importação de dados para um conjunto de dados criptografado por CMEK ao importar de armazenamento não criptografado com CMEK ou CMEK.

Restrições

Preços

Os conjuntos de dados são faturados da mesma forma, quer não sejam criptografados por CMEK. Para mais informações, consulte Preços da API Cloud Healthcare.

Você recebe cobranças pelo Cloud KMS pelo custo da chave e quaisquer operações nessa chave. Essas operações ocorrem quando a API Cloud Healthcare usa a chave para criptografia ou descriptografia. Espera-se que esses custos sejam mínimos, com base na número esperado de operações criptográficas geradas pelo API Cloud Healthcare. Para mais informações, consulte Preços do Cloud KMS.

Cotas do Cloud KMS e API Cloud Healthcare

Ao usar uma CMEK na API Cloud Healthcare, seus projetos podem consumir solicitações criptográficas do Cloud KMS cotas. Os conjuntos de dados da API Cloud Healthcare criptografados por CMEK e os armazenamentos DICOM, FHIR e HL7v2 consomem essas cotas para todas as operações, exceto datasets.get. 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.

A seguir