Esta página descreve como encriptar dados armazenados em instâncias da IA de AML com chaves de encriptação geridas pelo cliente (CMEK).
Vista geral
Todos os Dados do Cliente numa instância de IA de AML são encriptados em repouso através de uma chave CMEK. A chave é gerida no Cloud Key Management Service (Cloud KMS), e o acesso à chave é controlado através da gestão de identidade e de acesso. Se desativar temporariamente ou destruir permanentemente a chave CMEK, não é possível aceder aos dados encriptados com essa chave.
A IA de AML só suporta CMEK através do Cloud KMS. Não suporta a encriptação predefinida da Google.
As CMEK permitem-lhe controlar mais aspetos do ciclo de vida e da gestão das suas chaves, mas também incorrem em custos adicionais para o serviço Cloud KMS.
O Cloud KMS pode ser executado no mesmo Google Cloud projeto que a IA da AML ou num projeto separado onde gere as chaves de forma centralizada para vários projetos.
A configuração da encriptação é configurada quando cria uma instância. Depois de criar uma instância, não pode atribuir uma chave do Cloud KMS diferente. Continua a poder rodar a chave.
Para mais informações sobre as CMEK em geral, consulte a documentação do Cloud KMS.
Níveis de proteção
O Cloud KMS permite-lhe escolher entre uma variedade de níveis de proteção diferentes, incluindo:
- Chaves de software
- Módulos de segurança de hardware (HSMs) com o Cloud HSM
Leia como configurar a CMEK na IA de AML. Nem todos os níveis de proteção estão disponíveis em todas as regiões. Tenha em atenção que a IA de AML não suporta chaves de encriptação fornecidas pelo cliente (CSEK) nem o gestor de chaves externo da nuvem.
Dados de clientes
Todos os dados de clientes processados pela IA de AML são encriptados em repouso através da chave CMEK especificada no recurso Instance principal correspondente. Isto inclui todos os dados de clientes associados aos recursos de IA de AML, como conjuntos de dados, configurações do motor, modelos e muito mais. Todo o armazenamento temporário e persistente de dados do cliente, incluindo cópias de entradas e saídas, funcionalidades de ML geradas, hiperparâmetros do modelo, ponderações do modelo e resultados de previsão, é encriptado através da chave CMEK da instância correspondente.
Consulte os termos específicos do serviço para ver a definição de dados de clientes, que podem não incluir identificadores de recursos, atributos ou outras etiquetas de dados.
Encriptação dos dados de entrada e saída
A configuração de encriptação de IA de AML numa instância é usada apenas para recursos de IA de AML e os respetivos dados. A IA de AML não gere a encriptação de dados de entrada ou saída no seu Google Cloudprojeto. Se quiser que estes dados sejam encriptados através da CMEK, tem de configurar uma chave do Cloud KMS para corresponder ao nível de proteção de chaves escolhido configurado no conjunto de dados do BigQuery. Também pode reutilizar a mesma chave usada pela IA de AML.
Leia mais sobre a encriptação no BigQuery.
Rotação de chaves
A rotação periódica e automática de chaves é uma prática de segurança recomendada. Com a CMEK, a rotação de chaves é controlada por si. Quando alterna uma chave, os dados encriptados com versões anteriores da chave não são reencriptados automaticamente com a nova versão da chave.
Um único recurso de IA de AML pode ser armazenado internamente como várias unidades. Se, durante a duração de um recurso de IA de AML, a versão da chave for alterada, nem todas as unidades podem ser encriptadas com a mesma versão da chave.
Se rodar uma chave, não existe forma de forçar uma nova encriptação na IA de AML nem de determinar se as versões mais antigas da chave são seguras para eliminação.
Leia mais acerca da rotação de chaves com o Cloud KMS.
Criar uma chave e conceder autorizações
As instruções seguintes explicam como criar uma chave para uma instância e conceder autorizações para encriptar e desencriptar dados da instância com a chave. Pode usar uma chave criada diretamente no Cloud KMS ou uma chave gerida externamente que disponibiliza com o Cloud External Key Manager.
No Google Cloud projeto onde quer gerir as suas chaves:
Crie um conjunto de chaves através do método
projects.locations.keyRings.create
. A localização do conjunto de chaves do Cloud KMS tem de corresponder à localização da instância que encripta.REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
KMS_PROJECT_ID
: o ID do Google Cloud projeto para o projeto que contém o conjunto de chavesLOCATION
: a localização do conjunto de chaves; use uma das regiões suportadasMostrar localizaçõesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: um identificador definido pelo utilizador para o conjunto de chaves
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID"PowerShell
Execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID", "createTime": "2023-03-14T15:52:55.358979323Z" }
gcloud
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
KMS_PROJECT_ID
: o ID do Google Cloud projeto para o projeto que contém o conjunto de chavesLOCATION
: a localização do conjunto de chaves; use uma das regiões suportadasMostrar localizaçõesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: um identificador definido pelo utilizador para o conjunto de chaves
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud kms keyrings create KEY_RING_ID \ --project KMS_PROJECT_ID --location LOCATION
Windows (PowerShell)
gcloud kms keyrings create KEY_RING_ID ` --project KMS_PROJECT_ID --location LOCATION
Windows (cmd.exe)
gcloud kms keyrings create KEY_RING_ID ^ --project KMS_PROJECT_ID --location LOCATION
$
Crie uma chave com o método
projects.locations.keyRings.cryptoKeys
.REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
KMS_PROJECT_ID
: o ID do Google Cloud projeto para o projeto que contém o conjunto de chavesLOCATION
: a localização do conjunto de chaves; use uma das regiões suportadasMostrar localizaçõesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: o identificador definido pelo utilizador para o conjunto de chavesKEY_ID
: um identificador definido pelo utilizador para a chave
Corpo JSON do pedido:
{ "purpose": "ENCRYPT_DECRYPT" }
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' { "purpose": "ENCRYPT_DECRYPT" } 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://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_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:@' { "purpose": "ENCRYPT_DECRYPT" } '@ | 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://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID", "primary": { "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID/cryptoKeyVersions/1", "state": "ENABLED", "createTime": "2023-03-14T15:52:55.358979323Z", "protectionLevel": "SOFTWARE", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION", "generateTime": "2023-03-14T15:52:55.358979323Z" }, "purpose": "ENCRYPT_DECRYPT", "createTime": "2023-03-14T15:52:55.358979323Z", "versionTemplate": { "protectionLevel": "SOFTWARE", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION" }, "destroyScheduledDuration": "86400s" }
gcloud
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
KMS_PROJECT_ID
: o ID do Google Cloud projeto para o projeto que contém o conjunto de chavesLOCATION
: a localização do conjunto de chaves; use uma das regiões suportadasMostrar localizaçõesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: o identificador definido pelo utilizador para o conjunto de chavesKEY_ID
: um identificador definido pelo utilizador para a chave
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud kms keys create KEY_ID \ --keyring KEY_RING_ID \ --project KMS_PROJECT_ID \ --location LOCATION \ --purpose "encryption"
Windows (PowerShell)
gcloud kms keys create KEY_ID ` --keyring KEY_RING_ID ` --project KMS_PROJECT_ID ` --location LOCATION ` --purpose "encryption"
Windows (cmd.exe)
gcloud kms keys create KEY_ID ^ --keyring KEY_RING_ID ^ --project KMS_PROJECT_ID ^ --location LOCATION ^ --purpose "encryption"
$
Se não tiver criado uma instância de IA de AML no projeto de IA de AML, a conta de serviço de IA de AML ainda não existe. Crie a conta de serviço.
Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
PROJECT_ID
: o ID do projeto do projeto onde a IA de AML está a ser executada Google Cloud
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
Windows (PowerShell)
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
Windows (cmd.exe)
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
Deve receber uma resposta semelhante à seguinte:
Service identity created: service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com
Conceda a função da IAM de encriptador/desencriptador de CryptoKey (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) à conta de serviço da IA de AML. Conceda esta autorização na chave que criou.Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
PROJECT_ID
: o ID do projeto do projeto onde a IA de AML está a ser executada Google CloudKEY_ID
: o identificador definido pelo utilizador para a chaveLOCATION
: a localização do conjunto de chaves; use uma das regiões suportadasMostrar localizaçõesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: um identificador definido pelo utilizador para o conjunto de chavesPROJECT_NUMBER
: o Google Cloud número do projeto para o projeto onde a IA de AML está a ser executada
Execute o seguinte comando:
Linux, macOS ou Cloud Shell
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID \ --location LOCATION --keyring=KEY_RING_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Windows (PowerShell)
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ` --location LOCATION --keyring=KEY_RING_ID ` --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ` --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Windows (cmd.exe)
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ^ --location LOCATION --keyring=KEY_RING_ID ^ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ^ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Deve receber uma resposta semelhante à seguinte:
Updated IAM policy for key KEY_ID. bindings: - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwYCq0Sq4Ho= version: 1
Para mais informações sobre este comando, consulte a documentação de gcloud kms keys add-iam-policy-binding.
Agora, pode criar uma instância e especificar a chave a usar para a encriptação.
Remover acesso
Existem várias formas de remover o acesso à chave da instância encriptada com CMEK:
- Revogue a função de encriptador/desencriptador de CryptoKey do Cloud KMS da conta de serviço de IA da AML através da Google Cloud consola ou da CLI gcloud
- Desative temporariamente a chave CMEK
- Destruir permanentemente a chave CMEK
Recomendamos que revogue as autorizações da conta de serviço de IA da AML antes de desativar ou destruir uma chave. As alterações às autorizações são propagadas em segundos, pelo que pode observar os impactos da desativação ou da destruição de uma chave.
Quando desativa ou destrói a chave de encriptação de uma instância, perde a capacidade de usar ou obter dados de clientes associados à instância. Todos os dados de clientes armazenados na instância ficam inacessíveis, incluindo modelos, configurações do motor, resultados de testes retroativos e resultados de previsões. Os utilizadores com qualquer função de visualizador de IA de AML podem continuar a ver campos como o nome da instância ou os outros campos de recursos devolvidos pela obtenção de recursos de IA de AML.
Todas as operações que usam ou exportam dados de clientes, por exemplo, a exportação de metadados de backtestResults
, falham.
Os utilizadores com a função de administrador de IA da AML ou de proprietário podem eliminar a instância.
Políticas da organização de CMEK
A IA de AML não suporta políticas da organização CMEK. No entanto, a IA de AML requer sempre a utilização de CMEK, independentemente da
constraints/gcp.restrictNonCmekServices
política da organização.
Interação com o VPC-SC
Se configurou a IA de AML num perímetro VPC-SC, a chave CMEK tem de continuar a estar acessível à conta de serviço. Se a chave não estiver dentro do mesmo perímetro do VPC-SC, existem várias formas de o fazer, incluindo:
- Use uma regra de saída para colocar o recurso na lista de autorizações
- Use o intercâmbio de perímetros da VPC
O que se segue?
- Crie uma instância
- Saiba mais acerca das CMEK