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 HealthcareKMS_PROJECT_ID
: o ID do projeto em que o Cloud KMS é executada, que pode ser igual aPROJECT_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:
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.
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
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 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ãous
e um conjunto de dados da API Cloud Healthcare na regiãoeu
precisam ser protegidos 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 uma chave tocar 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 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:
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
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 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.
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).
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 compatível para o conjunto de dados.KEY_RESOURCE_ID
: o ID do 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
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 compatível para o conjunto de dados.KEY_RESOURCE_ID
: o ID do 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 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.
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 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.
"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
- 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. Isso
cota é aplicada pela métrica de cota
cmek_datasets
. - O VPC Service Controls com CMEK não é compatível.
- As políticas da organização de CMEK não são compatíveis.
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
- Para mais informações sobre a CMEK, incluindo quando e por que ativá-las, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).