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 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 ter e gerenciar as chaves de criptografia que protegem seus dados, os conjuntos de dados da API Cloud Healthcare são criptografados usando uma chave que você controla e gerencia no Cloud Key Management Service (Cloud KMS).
Para mais informações sobre CMEK em geral, como quando e por que ativar, 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 vão estar no mesmo projeto do Google Cloud ou em projetos diferentes. Para orientações, consulte Separação de deveres.
Para fins de documentação, as seguintes convenções são usadas:
PROJECT_ID
: o ID do projeto da API Cloud HealthcareKMS_PROJECT_ID
: o ID do projeto em que o Cloud KMS é executado, que pode ser o mesmo quePROJECT_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 chaves do Cloud KMS ao criar um conjunto de dados da API Cloud Healthcare. Não é possível ativar, mudar ou desativar chaves do Cloud KMS em um conjunto de dados da API Cloud Healthcare.
- Somente os armazenamentos FHIR, DICOM e HL7v2 têm suporte em conjuntos de dados criptografados com CMEK. A proteção CMEK se aplica aos armazenamentos DICOM, FHIR e HL7v2 no conjunto de dados e aos recursos deles.
- Não é possível desidentificar recursos criptografados com CMEK.
Operações de CMEK
As chaves do Cloud KMS são usadas quando um recurso criptografado por CMEK é criado, lido, atualizado ou excluído, e para 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 chaves gerenciadas fora do Google Cloud, o Google não vai poder recuperar seus dados.
Perda de dados e indisponibilidade de chaves
Se um conjunto de dados for criptografado por uma chave e essa chave ficar indisponível e permanecer indisponível, a API Cloud Healthcare vai desativar e, eventualmente, excluir o conjunto de dados. Às vezes, uma chave fica indisponível se for desativada ou destruída ou se não puder ser acessada devido a permissões revogadas. Esse comportamento ocorre se a chave estiver indisponível por qualquer motivo. O nível de proteção da chave ou se ela é externa não afeta esse comportamento. As chaves externas também podem ficar indisponíveis de forma 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:
Depois que um conjunto de dados da API Cloud Healthcare criptografado por CMEK é criado, a API Cloud Healthcare verifica o status da chave a cada cinco minutos para garantir que ela esteja disponível. Se a chave não estiver disponível, a API Cloud Healthcare vai continuar oferecendo suporte a solicitações para o conjunto de dados por até uma hora.
Após uma hora, se a API Cloud Healthcare ainda não conseguir se conectar ao Cloud KMS, o conjunto de dados da API Cloud Healthcare será desativado como uma medida de proteção. Para reativar o conjunto de dados da API Cloud Healthcare, entre em contato com seu representante de suporte.
Quando desativado, só é possível enviar solicitações
datasets.get
edatasets.delete
para o conjunto de dados da API Cloud Healthcare. Outras solicitações falham com um erro400 FAILED_PRECONDITION
.Se o conjunto de dados da API Cloud Healthcare ficar indisponível por mais de 30 dias, ele será excluído permanentemente. Todos os armazenamentos DICOM, FHIR e HL7v2 no conjunto de dados e os dados associados também são excluídos. Se excluídos, esses dados não poderão ser recuperados.
Criação de chave
As seções a seguir descrevem como criar um keyring e uma chave do Cloud KMS. Somente as chaves de criptografia simétricas 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ãous
, e um conjunto de dados da API Cloud Healthcare na regiãoeu
precisa ser protegido com um keyring da regiãoeurope
.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 um keyring da regiãoasia-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 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:
Conceder permissões de criptografia e descriptografia
Para proteger os dados da API Cloud Healthcare com uma chave do Cloud KMS, conceda à
conta de serviço do agente de serviço do Cloud Healthcare
o papel de Criptografador/Descriptografador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter
)
nesta chave. Para instruções, consulte
Permissões de CMEK do conjunto de dados.
Depois de conceder o papel à conta de serviço, a API Cloud Healthcare pode criptografar e descriptografar recursos criptografados com o CMEK. Seus aplicativos não precisam especificar chaves ao ler ou gravar dados. A API Cloud Healthcare processa a criptografia.
Quando um solicitante lê ou grava um objeto criptografado com uma chave do Cloud KMS, ele acessa o objeto normalmente. Durante a solicitação, o agente de serviço criptografa ou descriptografa automaticamente 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 da API Cloud Healthcare criptografado com CMEK
Os exemplos a seguir mostram como criar um conjunto de dados criptografado com 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 conferir os IDs de recurso de chave do Cloud KMS, consulte Como conseguir um ID de recurso do Cloud KMS.
Console
No console do Google Cloud, acesse a página Navegador.
Clique em add_box Criar conjunto de dados. A página Criar conjunto de dados é exibida.
No campo Nome, insira um identificador para o conjunto de dados sujeito aos requisitos de tamanho e caracteres permitidos.
Selecione um dos seguintes tipos de local:
Region. O conjunto de dados fica 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 fica 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 Multirregião.
Na seção Criptografia, selecione um dos seguintes tipos de criptografia:
Chave de criptografia gerenciada pelo Google: o método de criptografia padrão. Use esse método se quiser que o Google gerencie as chaves de criptografia que protegem seus dados neste conjunto de dados da API Cloud Healthcare.
Chave do Cloud KMS: use uma chave de criptografia gerenciada pelo cliente (CMEK).
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:
DATASET_ID
: um identificador sujeito aos requisitos de tamanho e caracteres permitidos do conjunto de dadosLOCATION
: um local com suporte para o conjunto de dadosKEY_RESOURCE_ID
: o ID de recurso de uma chave do Cloud KMS no formatoprojects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
.
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
Crie o conjunto de dados usando o método
datasets.create
.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;DATASET_ID
: um identificador sujeito aos requisitos de tamanho e caracteres permitidos do conjunto de dadosLOCATION
: um local com suporte para o conjunto de dadosKEY_RESOURCE_ID
: o ID de recurso de uma chave do Cloud KMS no formatoprojects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
.
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 ContentAPIs Explorer
Copie o corpo da solicitação e abra a 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.
OPERATION_ID
. Você vai precisar desse valor na próxima etapa.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 ContentAPIs Explorer
Abra a 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.
"done": true
, a 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 Conferir 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 em:
- 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 criptografados com a chave não são recriptografados automaticamente 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 Excluir conjuntos de dados desativados e permanentes.
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 que você destruir uma chave ou versão de chave associada a um conjunto de dados da API Cloud Healthcare, todos os dados criptografados com essa chave ou versão de chave serão perdidos permanentemente.
Há um atraso entre o momento em que você desativa uma chave ou versão de chave e quando ela não pode mais ser usada. Há também um atraso entre o momento em que você revoga as permissões da conta de serviço do Agente de serviço do Cloud Healthcare na chave e o momento em que ela não pode mais ser acessada. 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 ou restrições especiais para importar dados para um conjunto de dados criptografado por CMEK ao importar de armazenamento não CMEK ou criptografado por CMEK.
Restrições
- Não é possível usar Justificativas de acesso às chaves com o gerenciador de chaves externas do Cloud.
- Há um limite de 10 conjuntos de dados CMEK por projeto em um período de 30 dias. Essa cota é aplicada pela métrica de cota
cmek_datasets
. - O VPC Service Controls com CMEK não é compatível.
- Não é possível usar políticas da organização de CMEK.
Preços
Os conjuntos de dados são faturados da mesma forma, independentemente de serem criptografados com CMEK. Para mais informações, consulte Preços da API Cloud Healthcare.
Você vai receber cobranças do Cloud KMS pelo custo da chave e por qualquer operação criptográfica nesta chave. Essas operações ocorrem quando a API Cloud Healthcare usa a chave para criptografia ou descriptografia. Esses custos serão mínimos com base no número esperado de operações criptográficas geradas pela API Cloud Healthcare. Para mais informações, consulte Preços do Cloud KMS.
Cotas do Cloud KMS e API Cloud Healthcare
Quando você usa a CMEK na API Cloud Healthcare,
seus projetos podem consumir cotas de solicitações criptográficas
do Cloud KMS. Os conjuntos de dados da API Cloud Healthcare criptografados com 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
- Para mais informações sobre CMEK em geral, como quando e por que ativar, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).