Por predefinição, Google Cloud encripta automaticamente os dados quando estão em repouso através de chaves de encriptação geridas pela Google. Se tiver requisitos de conformidade ou regulamentares específicos relacionados com as chaves que protegem os seus dados, pode usar chaves de encriptação geridas pelo cliente (CMEK) para os seus conjuntos de dados da Cloud Healthcare API. Em vez de a Google possuir e gerir as chaves de encriptação que protegem os seus dados, os conjuntos de dados da Cloud Healthcare API são encriptados com uma chave que controla e gere no Cloud Key Management Service (Cloud KMS).
Para mais informações sobre as CMEK em geral, incluindo quando e por que motivo as ativar, consulte o artigo Chaves de encriptação geridas pelo cliente (CMEK).
Antes de começar
Decida se o conjunto de dados da Cloud Healthcare API e o Cloud KMS vão estar no mesmo projeto ou em projetos diferentes. Google Cloud Para orientações, consulte o artigo Separação de funções.
Para fins de documentação, são usadas as seguintes convenções:
PROJECT_ID
: o ID do projeto da Cloud Healthcare APIKMS_PROJECT_ID
: o ID do projeto onde o Cloud KMS é executado, que pode ser o mesmo quePROJECT_ID
Para obter informações sobre os Google Cloud IDs e os números dos projetos, consulte o artigo Identificar projetos.
Limitações
- Só pode usar chaves do Cloud KMS quando cria um conjunto de dados da Cloud Healthcare API. Não pode ativar, alterar nem desativar chaves do Cloud KMS num conjunto de dados da Cloud Healthcare API existente.
- Apenas os armazenamentos FHIR, DICOM e HL7v2 são suportados em conjuntos de dados encriptados com CMEK. A proteção CMEK aplica-se aos armazenamentos DICOM, FHIR e HL7v2 no conjunto de dados e aos respetivos recursos.
- Não é possível remover a identificação de recursos encriptados com CMEK.
Operações de CMEK
As chaves do Cloud KMS são usadas quando um recurso encriptado com CMEK é criado, lido, atualizado ou eliminado, e para tarefas operacionais, como faturação ou garantir que a chave está disponível.
Considerações sobre chaves externas
Para obter informações sobre a utilização de chaves que gere num sistema de gestão de chaves externo suportado de um parceiro para proteger dados no Google Cloud, consulte o Cloud External Key Manager.
Se perder chaves que gere fora do Google Cloud, a Google não pode recuperar os seus dados.
Indisponibilidade de chaves e perda de dados
Se um conjunto de dados for encriptado por uma chave, e essa chave ficar indisponível e permanecer indisponível, a Cloud Healthcare API desativa e, eventualmente, elimina o conjunto de dados. Por vezes, uma chave fica indisponível se estiver desativada ou destruída, ou se estiver inacessível devido a autorizações revogadas, mas este comportamento ocorre se a chave estiver indisponível por qualquer motivo. O nível de proteção da chave ou se é uma chave externa não afeta este comportamento. As chaves externas também podem ficar indisponíveis de forma imprevisível. Por exemplo, podem surgir problemas de conetividade entre os seus Google Cloud recursos e o seu GCE.
O processo seguinte descreve como a disponibilidade das chaves é verificada e como um conjunto de dados pode ser desativado e eliminado:
Depois de criar um conjunto de dados da Cloud Healthcare API encriptado com CMEK, a Cloud Healthcare API verifica o estado da chave a cada cinco minutos para garantir que a chave está disponível. Se a chave estiver indisponível, a Cloud Healthcare API continua a suportar pedidos ao conjunto de dados durante um máximo de uma hora.
Após uma hora, se a Cloud Healthcare API ainda não conseguir estabelecer ligação ao Cloud KMS, o conjunto de dados da Cloud Healthcare API é desativado como medida de proteção. Para reativar o conjunto de dados da Cloud Healthcare API, contacte o seu representante do apoio técnico.
Quando está desativada, só pode enviar pedidos
datasets.get
edatasets.delete
para o conjunto de dados da Cloud Healthcare API. Outros pedidos falham com um erro400 FAILED_PRECONDITION
.Se o conjunto de dados da Cloud Healthcare API permanecer indisponível durante mais de 30 dias, é eliminado permanentemente. Todos os armazenamentos DICOM, FHIR e HL7v2 no conjunto de dados e os respetivos dados associados também são eliminados. Se forem eliminados, não é possível recuperar estes dados.
Criação de chaves
As secções seguintes descrevem como criar um conjunto de chaves do Cloud KMS e uma chave. Apenas são suportadas chaves de encriptação simétricas do Cloud KMS.
Localizações suportadas
As chaves do Cloud KMS estão disponíveis nas localizações da Cloud Healthcare API. Crie o conjunto de chaves numa localização que corresponda à região ou à multirregião do seu conjunto de dados da Cloud Healthcare API.
Qualquer conjunto de dados da Cloud Healthcare API multirregional tem de usar um anel de chaves multirregional de uma localização correspondente. Por exemplo, um conjunto de dados da Cloud Healthcare API na região
us
tem de ser protegido com um conjunto de chaves da regiãous
, e um conjunto de dados da Cloud Healthcare API na regiãoeu
tem de ser protegido com um conjunto de chaves da regiãoeurope
.Os conjuntos de dados da API Cloud Healthcare regionais têm de usar chaves regionais correspondentes. Por exemplo, um conjunto de dados da Cloud Healthcare API na região
asia-northeast1
tem de ser protegido com um anel de chaves da regiãoasia-northeast1
.Não pode usar a região
global
quando configurar a CMEK para um conjunto de dados da Cloud Healthcare API.
Para mais informações, consulte as localizações da Cloud Healthcare API e as localizações do Cloud KMS.
Crie um conjunto de chaves e uma chave
Conclua os seguintes passos no Google Cloud projeto que executa o Cloud KMS:
Conceda autorizações de encriptação e desencriptação
Para proteger os seus dados da Cloud Healthcare API com uma chave do Cloud KMS, conceda à conta de serviço do
agente de serviço da Cloud Healthcare
a função de encriptar/desencriptar do CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter
)
nessa chave. Para ver instruções, consulte o artigo
Autorizações de CMEK do conjunto de dados.
Depois de conceder a função à conta de serviço, a Cloud Healthcare API pode encriptar e desencriptar recursos encriptados com CMEK. As suas aplicações não precisam de especificar chaves ao ler ou escrever dados. A Cloud Healthcare API processa a encriptação.
Quando um requerente lê ou escreve um objeto encriptado com uma chave do Cloud KMS, acede ao objeto normalmente. Durante o pedido, o agente de serviço encripta ou desencripta automaticamente o objeto pedido, desde que sejam cumpridas as seguintes condições:
- O agente do serviço continua a ter as autorizações necessárias.
- A chave está disponível e ativada.
Crie um conjunto de dados da Cloud Healthcare API encriptado com CMEK
Os exemplos seguintes mostram como criar um conjunto de dados encriptado com CMEK.
Tem de especificar um ID do recurso da chave do Cloud KMS quando cria o conjunto de dados. Esta chave é sensível a maiúsculas e minúsculas e tem o seguinte formato:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Para ver os IDs de recursos das chaves do Cloud KMS, consulte o artigo Obter um ID de recurso do Cloud KMS.
Consola
Na Google Cloud consola, aceda à página Navegador.
Clique em add_box Criar conjunto de dados. É apresentada a página Criar conjunto de dados.
No campo Nome, introduza um identificador para o conjunto de dados sujeito aos requisitos de tamanho e carateres permitidos do conjunto de dados.
Selecione um dos seguintes tipos de localização:
Região. O conjunto de dados reside permanentemente numa Google Cloud região. Depois de selecionar esta opção, escreva ou selecione uma localização no campo Região.
Multirregião. O conjunto de dados reside permanentemente numa localização que abrange várias Google Cloud regiões. Depois de selecionar esta opção, escreva ou selecione uma localização de várias regiões no campo Várias regiões.
Na secção Encriptação, selecione um dos seguintes tipos de encriptação:
Google-managed encryption key: o método de encriptação predefinido. Use este método se quiser que a Google faça a gestão das chaves de encriptação que protegem os seus dados neste conjunto de dados da Cloud Healthcare API.
Chave do Cloud KMS: use uma chave de encriptação gerida pelo cliente (CMEK).
Clique em Criar. É apresentada a página Navegador. O novo conjunto de dados é apresentado na lista de conjuntos de dados.
gcloud
Crie o conjunto de dados com o comando gcloud healthcare datasets create
.
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
DATASET_ID
: um identificador sujeito aos caracteres permitidos e aos requisitos de tamanho do conjunto de dadosLOCATION
: uma localização suportada para o conjunto de dadosKEY_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
Deve receber uma resposta semelhante à seguinte:
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 com o método
datasets.create
.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoDATASET_ID
: um identificador sujeito aos caracteres permitidos e aos requisitos de tamanho do conjunto de dadosLOCATION
: uma localização suportada para o conjunto de dadosKEY_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 do pedido:
{ "encryptionSpec": { "kmsKeyName": "KEY_RESOURCE_ID" } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:cat > request.json << 'EOF' { "encryptionSpec": { "kmsKeyName": "KEY_RESOURCE_ID" } } EOF
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:@' { "encryptionSpec": { "kmsKeyName": "KEY_RESOURCE_ID" } } '@ | Out-File -FilePath request.json -Encoding utf8
Em seguida, execute o seguinte comando para enviar o seu pedido 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 ContentExplorador de APIs
Copie o corpo do pedido e abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Cole o corpo do pedido nesta ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.
OPERATION_ID
. Precisa deste valor no passo seguinte.Obtenha o estado da operação de execução longa através do método
projects.locations.datasets.operations.get
.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do seu Google Cloud projetoLOCATION
: a localização do conjunto de dadosDATASET_ID
: o ID do conjunto de dadosOPERATION_ID
: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou.
Determine se um conjunto de dados está protegido pelo Cloud KMS
Para cada uma das chaves que criou ou que protegem os conjuntos de dados da Cloud Healthcare API, pode ver que recursos essa chave protege com a monitorização da utilização de chaves. Para mais informações, consulte o artigo Veja a utilização de chaves.
Rotação de chaves
O Cloud KMS suporta a rotação de chaves automática e manual para uma nova versão.
A alternância de uma chave resulta no seguinte:
- Os conjuntos de dados da Cloud Healthcare API criados após a rotação usam a nova versão da chave para encriptação e todas as operações.
- Os recursos num conjunto de dados existente que estão encriptados com a chave não são reenviados automaticamente com a nova versão da chave principal.
Para que a encriptação funcione, todas as versões das chaves têm de estar disponíveis. Caso contrário, o conjunto de dados da Cloud Healthcare API é desativado e todos os pedidos enviados para o conjunto de dados falham. Para mais informações, consulte as Considerações sobre chaves externas e os Conjuntos de dados desativados e eliminação permanente de conjuntos de dados.
Remova o acesso da Cloud Healthcare API à chave do Cloud KMS
Tem controlo sobre as suas chaves e pode desativar, destruir ou revogar autorizações na chave para que a Cloud Healthcare API não possa aceder a dados encriptados com CMEK. Depois de destruir uma chave ou uma versão da chave associada a um conjunto de dados da Cloud Healthcare API, todos os dados encriptados com essa chave ou versão da chave são perdidos permanentemente.
Existe um atraso entre o momento em que desativa uma chave ou uma versão da chave e o momento em que deixa de poder ser usada. Também existe um atraso entre o momento em que revoga as autorizações da conta de serviço do agente do serviço Cloud Healthcare na chave e o momento em que deixa de ser possível aceder à mesma. Para mais informações, consulte o artigo Consistência dos recursos do Cloud KMS.
Exporte e importe dados para uma instância com CMEK ativada
Para manter os seus dados encriptados com uma chave gerida pelo cliente durante uma operação de exportação, tem de definir uma CMEK no destino de armazenamento antes de iniciar a exportação. Não existem requisitos especiais nem restrições para importar dados para um conjunto de dados encriptado com CMEK quando importa dados de armazenamento não encriptado com CMEK ou encriptado com CMEK.
Restrições
- As justificações de acesso a chaves com o Cloud External Key Manager não são suportadas.
- Existe um limite de 10 conjuntos de dados CMEK por projeto num período de 30 dias. Esta quota é aplicada pela métrica de quota
cmek_datasets
. - Os VPC Service Controls com CMEK não são suportados.
- As políticas da organização CMEK não são suportadas.
Preços
Os conjuntos de dados são faturados da mesma forma, independentemente de estarem encriptados com CMEK. Para mais informações, consulte os preços da Cloud Healthcare API.
A faturação é feita pelo Cloud KMS para o custo da chave e quaisquer operações criptográficas nessa chave. Estas operações ocorrem quando a Cloud Healthcare API usa a chave para encriptação ou desencriptação. Pode esperar que estes custos sejam mínimos, com base no número esperado de operações criptográficas geradas pela Cloud Healthcare API. Para mais informações, consulte os preços do Cloud KMS.
Quotas do Cloud KMS e da Cloud Healthcare API
Quando usa CMEK na Cloud Healthcare API,
os seus projetos podem consumir quotas de pedidos criptográficos
do Cloud KMS.
Os conjuntos de dados da Cloud Healthcare API encriptados com CMEK e os respetivos arquivos DICOM, FHIR e HL7v2 consomem estas quotas para todas as operações, exceto datasets.get
.
As operações de encriptação e desencriptação que usam chaves CMEK afetam as quotas do Cloud KMS apenas se usar hardware (Cloud HSM) ou chaves externas (Cloud EKM).
Para mais informações, consulte as
cotas do Cloud KMS.
O que se segue?
- Para mais informações sobre as CMEK em geral, incluindo quando e por que motivo as ativar, consulte o artigo Chaves de encriptação geridas pelo cliente (CMEK).