Chaves do Cloud KMS geridas pelo cliente
Por predefinição, o BigQuery encripta o seu conteúdo armazenado em repouso. O BigQuery processa e gere esta encriptação predefinida por si sem ações adicionais da sua parte. Primeiro, os dados numa tabela do BigQuery são encriptados com uma chave de encriptação de dados. Em seguida, essas chaves de encriptação de dados são encriptadas com chaves de encriptação de chaves, o que é conhecido como encriptação de envelope. As chaves de encriptação de chaves não encriptam diretamente os seus dados, mas são usadas para encriptar as chaves de encriptação de dados que a Google usa para encriptar os seus dados.
Se quiser controlar a encriptação, pode usar chaves de encriptação geridas pelo cliente (CMEK) para o BigQuery. Em vez de a Google possuir e gerir as chaves de encriptação de chaves que protegem os seus dados, controla e gere as chaves de encriptação de chaves no Cloud KMS. Este documento fornece detalhes sobre a criação manual de chaves do Cloud KMS para o BigQuery.
Saiba mais acerca das opções de encriptação no Google Cloud. Para informações específicas sobre a CMEK, incluindo as respetivas vantagens e limitações, consulte o artigo Chaves de encriptação geridas pelo cliente.
Antes de começar
Todos os recursos de dados residentes no armazenamento gerido do BigQuery suportam CMEK. No entanto, se também estiver a consultar dados armazenados numa origem de dados externa, como o Cloud Storage, que tenha dados encriptados com CMEK, a encriptação de dados é gerida pelo Cloud Storage. Por exemplo, as tabelas BigLake suportam dados encriptados com CMEK no Cloud Storage.
O BigQuery e as tabelas do BigLake não suportam chaves de encriptação fornecidas pelo cliente (CSEK).
Decida se vai executar o BigQuery e o Cloud KMS no mesmo Google Cloud projeto ou em projetos diferentes. Para fins de exemplos de documentação, é usada a seguinte convenção:
PROJECT_ID
: o ID do projeto do projeto que executa o BigQueryPROJECT_NUMBER
: o número do projeto do projeto que executa o BigQueryKMS_PROJECT_ID
: o ID do projeto do projeto que executa o Cloud KMS (mesmo que seja o mesmo projeto que executa o BigQuery)
O BigQuery é ativado automaticamente em novos projetos. Se estiver a usar um projeto pré-existente para executar o BigQuery, ative a API BigQuery.
Para o Google Cloud projeto que executa o Cloud KMS, ative a API Cloud Key Management Service.
É feita uma chamada de desencriptação através do Cloud KMS uma vez por consulta a uma tabela encriptada com CMEK. Para mais informações, consulte os preços do Cloud KMS.
Especificação de encriptação
As chaves do Cloud KMS usadas para proteger os seus dados no BigQuery são chaves AES-256. Estas chaves são usadas como chaves de encriptação de chaves no BigQuery, uma vez que encriptam as chaves de encriptação de dados que encriptam os seus dados.
Criação de chaves manual ou automática
Pode criar as suas chaves CMEK manualmente ou usar a chave automática do Cloud KMS. A funcionalidade Autokey simplifica a criação e a gestão das suas chaves CMEK através da automatização do aprovisionamento e da atribuição. Com o Autokey, não precisa de aprovisionar conjuntos de chaves, chaves e contas de serviço antecipadamente. Em vez disso, são gerados a pedido como parte da criação de recursos do BigQuery. Para mais informações, consulte a Vista geral do Autokey.
Crie manualmente um conjunto de chaves e uma chave
Para o Google Cloud projeto que executa o Cloud KMS, crie um conjunto de chaves e uma chave, conforme descrito em Criar conjuntos de chaves e chaves. Crie o anel de chaves numa localização que corresponda à localização do seu conjunto de dados do BigQuery:
Qualquer conjunto de dados multirregional deve usar um anel de chaves multirregional de uma localização correspondente. Por exemplo, um conjunto de dados na região
US
deve ser protegido com um conjunto de chaves da regiãous
, e um conjunto de dados na regiãoEU
deve ser protegido com um conjunto de chaves da regiãoeurope
.Os conjuntos de dados regionais devem usar chaves regionais correspondentes. Por exemplo, um conjunto de dados na região
asia-northeast1
deve ser protegido com um conjunto de chaves da regiãoasia-northeast1
.Não pode usar a região
global
quando configurar a CMEK para o BigQuery na Google Cloud consola. No entanto, pode usar a regiãoglobal
ao configurar a CMEK para o BigQuery através da ferramenta de linha de comandos bq ou do GoogleSQL.
Para mais informações sobre as localizações suportadas para o BigQuery e o Cloud KMS, consulte o artigo Localizações na nuvem.
Conceda autorização de encriptação e desencriptação
Para proteger os seus dados do BigQuery com uma chave CMEK, conceda à conta de serviço do BigQuery autorização para encriptar e desencriptar com essa chave. A função Encriptador/desencriptador de CryptoKey do Cloud KMS concede esta autorização.
Certifique-se de que a conta de serviço foi criada e, em seguida, use a Google Cloud consola para determinar o ID da conta de serviço do BigQuery. Em seguida, atribua à conta de serviço a função adequada para encriptar e desencriptar através do Cloud KMS.
Acione a criação da sua conta de serviço
A sua conta de serviço do BigQuery não é criada inicialmente quando
cria um projeto. Para acionar a criação da sua conta de serviço, introduza um comando que a use, como o comando bq show --encryption_service_account
, ou chame o método da API
projects.getServiceAccount. Por exemplo:
bq show --encryption_service_account --project_id=PROJECT_ID
Determine o ID da conta de serviço
O ID da conta de serviço do BigQuery tem o seguinte formato:
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
As técnicas seguintes mostram como pode determinar o ID da conta de serviço do BigQuery para o seu projeto.
Consola
Aceda à página Painel de controlo na Google Cloud consola.
Clique na lista pendente Selecionar a partir de na parte superior da página. Na janela Selecionar de apresentada, selecione o seu projeto.
O ID do projeto e o número do projeto são apresentados no cartão Informações do projeto do painel de controlo do projeto:
Na string seguinte, substitua PROJECT_NUMBER pelo número do seu projeto. A nova string identifica o ID da conta de serviço do BigQuery.
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
bq
Use o comando bq show
com a flag --encryption_service_account
para determinar o ID da conta de serviço:
bq show --encryption_service_account
O comando apresenta o ID da conta de serviço:
ServiceAccountID ------------------------------------------------------------- bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
Atribua a função de encriptador/desencriptador
Atribua a função de encriptar/desencriptar do CryptoKey do Cloud KMS à conta de serviço do sistema do BigQuery que copiou para a área de transferência. Esta conta tem o seguinte formato:
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
Consola
Abra a página Chaves criptográficas na Google Cloud consola.
Clique no nome do conjunto de chaves que contém a chave.
Clique na caixa de verificação da chave de encriptação à qual quer adicionar a função. É aberto o separador Permissões.
Clique em Adicionar membro.
Introduza o endereço de email da conta de serviço,
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
.- Se a conta de serviço já estiver na lista de membros, tem funções existentes. Clique na lista pendente da função atual para a conta de serviço
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
.
- Se a conta de serviço já estiver na lista de membros, tem funções existentes. Clique na lista pendente da função atual para a conta de serviço
Clique na lista pendente Selecionar uma função, clique em Cloud KMS e, de seguida, clique na função Encriptador/desencriptador de CryptoKey do Cloud KMS.
Clique em Guardar para aplicar a função à conta de serviço
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
.
gcloud
Pode usar a Google Cloud CLI para atribuir a função:
gcloud kms keys add-iam-policy-binding \ --project=KMS_PROJECT_ID \ --member serviceAccount:bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING \ KMS_KEY
Substitua o seguinte:
KMS_PROJECT_ID
: o ID do seu Google Cloud projeto que está a executar o Cloud KMSPROJECT_NUMBER
: o número do projeto (não o ID do projeto) do seu projeto que está a executar o BigQuery Google CloudKMS_KEY_LOCATION
: o nome da localização da sua chave do Cloud KMSKMS_KEY_RING
: o nome do conjunto de chaves da sua chave do Cloud KMSKMS_KEY
: o nome da chave da sua chave do Cloud KMS
ID de recurso da chave
O ID de recurso da chave do Cloud KMS é necessário para a utilização da CMEK, conforme mostrado nos exemplos. 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
Recupere o ID de recurso da chave
Abra a página Chaves criptográficas na Google Cloud consola.
Clique no nome do conjunto de chaves que contém a chave.
Para a chave cujo ID de recurso está a obter, clique em Mais more_vert.
Clique em Copiar nome do recurso. O ID do recurso da chave é copiado para a área de transferência. O ID do recurso também é conhecido como o nome do recurso.
Crie uma tabela protegida pelo Cloud KMS
Para criar uma tabela protegida pelo Cloud KMS:
Consola
Abra a página do BigQuery na Google Cloud consola.
No painel Explorador, expanda o projeto e selecione um conjunto de dados.
Expanda a opção
Ações e clique em Abrir.No painel de detalhes, clique em Criar tabela
.Na página Criar tabela, preencha as informações necessárias para criar uma tabela vazia com uma definição de esquema. Antes de clicar em Criar tabela, defina o tipo de encriptação e especifique a chave do Cloud KMS a usar com a tabela:
- Clique em Opções avançadas.
- Clique em Chave gerida pelo cliente.
- Selecione a chave. Se a chave que quer usar não estiver listada, introduza o ID do recurso da chave.
Clique em Criar tabela.
SQL
Use a declaração
CREATE TABLE
com a opção kms_key_name
:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
CREATE TABLE DATASET_ID.TABLE_ID ( name STRING, value INT64 ) OPTIONS ( kms_key_name = 'projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY');
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Pode usar a ferramenta de linhas de comando bq com a flag --destination_kms_key
para criar a tabela. A flag --destination_kms_key
especifica o ID de recurso da chave a usar com a tabela.
Para criar uma tabela vazia com um esquema:
bq mk --schema name:string,value:integer -t \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.TABLE_ID
Para criar uma tabela a partir de uma consulta:
bq query --destination_table=DATASET_ID.TABLE_ID \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ "SELECT name,count FROM DATASET_ID.TABLE_ID WHERE gender = 'M' ORDER BY count DESC LIMIT 6"
Para mais informações sobre a ferramenta de linhas de comando bq, consulte o artigo Usar a ferramenta de linhas de comando bq.
Terraform
Use o recurso
google_bigquery_table
.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
O exemplo seguinte cria uma tabela denominada mytable
e também usa os recursos
google_kms_crypto_key
e
google_kms_key_ring
para especificar uma
chave do Cloud Key Management Service para a tabela.
Para executar este exemplo, tem de ativar a API Cloud Resource Manager e a API Cloud Key Management Service.
Para aplicar a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o ficheiro é denominadomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o ficheiro
main.tf
criado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade
:terraform init -upgrade
Aplique as alterações
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Proteja uma nova tabela com uma chave de encriptação gerida pelo cliente definindo a propriedade Table.encryption_configuration para um objeto EncryptionConfiguration antes de criar a tabela.Consultar uma tabela protegida por uma chave do Cloud KMS
Não são necessários procedimentos especiais para consultar uma tabela protegida pelo Cloud KMS. O BigQuery armazena o nome da chave usada para encriptar o conteúdo da tabela e usa essa chave quando é consultada uma tabela protegida pelo Cloud KMS.
Todas as ferramentas existentes, a consola do BigQuery e a ferramenta de linha de comandos bq são executadas da mesma forma que com as tabelas encriptadas por predefinição, desde que o BigQuery tenha acesso à chave do Cloud KMS usada para encriptar o conteúdo da tabela.
Proteja os resultados das consultas com uma chave do Cloud KMS
Por predefinição, os resultados da consulta são armazenados numa tabela temporária encriptada com um Google-owned and Google-managed encryption key. Se o projeto já tiver uma chave predefinida, a chave é aplicada à tabela de resultados da consulta temporária (predefinida). Em alternativa, para usar uma chave do Cloud KMS para encriptar os resultados da consulta, selecione uma das seguintes opções:
Consola
Abra a página do BigQuery na Google Cloud consola.
Clique em Redigir nova consulta.
Introduza uma consulta GoogleSQL válida na área de texto da consulta.
Clique em Mais, clique em Definições de consulta e, de seguida, clique em Opções avançadas.
Selecione Encriptação gerida pelo cliente.
Selecione a chave. Se a chave que quer usar não estiver listada, introduza o ID do recurso da chave.
Clique em Guardar.
Clique em Executar.
bq
Especifique a flag --destination_kms_key
para proteger a tabela de destino ou os resultados da consulta (se usar uma tabela temporária) com a sua chave do Cloud KMS.
A flag --destination_kms_key
especifica o ID do recurso da chave a usar com o destino ou a tabela resultante.
Opcionalmente, use a flag --destination_table
para especificar o destino dos resultados da consulta. Se --destination_table
não for usado, os resultados da consulta são
escritos numa tabela temporária.
Para consultar uma tabela:
bq query \ --destination_table=DATASET_ID.TABLE_ID \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ "SELECT name,count FROM DATASET_ID.TABLE_ID WHERE gender = 'M' ORDER BY count DESC LIMIT 6"
Para mais informações sobre a ferramenta de linhas de comando bq, consulte o artigo Usar a ferramenta de linhas de comando bq.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Proteja uma nova tabela com uma chave de encriptação gerida pelo cliente definindo a propriedade Table.encryption_configuration para um objeto EncryptionConfiguration antes de criar a tabela.Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Proteja uma nova tabela com uma chave de encriptação gerida pelo cliente definindo a propriedade Table.encryption_configuration para um objeto EncryptionConfiguration antes de criar a tabela.Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Proteja uma tabela de destino de consulta com uma chave de encriptação gerida pelo cliente definindo a propriedade QueryJobConfig.destination_encryption_configuration como uma EncryptionConfiguration e execute a consulta.
Carregue uma tabela protegida pelo Cloud KMS
Para carregar um ficheiro de dados numa tabela protegida pelo Cloud KMS:
Consola
Proteja uma tabela de destino de uma tarefa de carregamento com uma chave de encriptação gerida pelo cliente especificando a chave quando carregar a tabela.
Abra a página do BigQuery na Google Cloud consola.
No painel Explorador, expanda o projeto e selecione um conjunto de dados.
No painel de detalhes, clique em Criar tabela.
Introduza as opções que quer usar para carregar a tabela, mas antes de clicar em Criar tabela, clique em Opções avançadas.
Em Encriptação, selecione Chave gerida pelo cliente.
Clique na lista pendente Selecionar uma chave gerida pelo cliente e selecione a chave a usar. Se não vir nenhuma chave disponível, introduza um ID do recurso da chave.
Clique em Criar tabela.
bq
Proteja uma tabela de destino de uma tarefa de carregamento com uma chave de encriptação gerida pelo cliente definindo a flag --destination_kms_key
.
bq --location=LOCATION load \ --autodetect \ --source_format=FORMAT \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET.TABLE \ path_to_source
bq load \ --autodetect \ --source_format=NEWLINE_DELIMITED_JSON \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ test2.table4 \ gs://cloud-samples-data/bigquery/us-states/us-states.json
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Proteja uma tabela de destino de uma tarefa de carregamento com uma chave de encriptação gerida pelo cliente definindo a propriedade LoadJobConfig.destination_encryption_configuration para uma EncryptionConfiguration e carregue a tabela.
Fazer stream para uma tabela protegida pelo Cloud KMS
Pode transmitir dados para a sua tabela do BigQuery protegida pela CMEK sem especificar parâmetros adicionais. Tenha em atenção que estes dados são encriptados com a sua chave do Cloud KMS na memória intermédia, bem como na localização final. Antes de usar o streaming com uma tabela CMEK, reveja os requisitos de disponibilidade e acessibilidade das chaves.
Saiba mais sobre o streaming em Streaming de dados com a API Storage Write do BigQuery.
Altere uma tabela da encriptação predefinida para a proteção do Cloud KMS
bq
Pode usar o comando bq cp
com a flag --destination_kms_key
para copiar uma tabela protegida pela encriptação predefinida para uma nova tabela ou para a tabela original, protegida pelo Cloud KMS. A flag --destination_kms_key
especifica o ID do recurso da chave a usar com a tabela de destino.
Para copiar uma tabela com encriptação predefinida para uma nova tabela com proteção do Cloud KMS:
bq cp \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ SOURCE_DATASET_ID.SOURCE_TABLE_ID DESTINATION_DATASET_ID.DESTINATION_TABLE_ID
Se quiser copiar uma tabela com encriptação predefinida para a mesma tabela com proteção do Cloud KMS:
bq cp -f \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.TABLE_ID DATASET_ID.TABLE_ID
Se quiser alterar uma tabela da proteção do Cloud KMS para a encriptação predefinida, copie o ficheiro para si próprio executando bq cp
sem usar a flag --destination_kms_key
.
Para mais informações sobre a ferramenta de linhas de comando bq, consulte o artigo Usar a ferramenta de linhas de comando bq.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Proteja o destino de uma cópia de tabela com uma chave de encriptação gerida pelo cliente definindo a propriedade QueryJobConfig.destination_encryption_configuration para uma EncryptionConfiguration e copie a tabela.
Determine se uma tabela está protegida pelo Cloud KMS
Na Google Cloud consola, clique na seta azul à esquerda do conjunto de dados para o expandir ou clique duas vezes no nome do conjunto de dados. São apresentadas as tabelas e as vistas no conjunto de dados.
Clique no nome da tabela.
Clique em Detalhes. A página Detalhes da tabela apresenta a descrição e as informações da tabela.
Se a tabela estiver protegida pelo Cloud KMS, o campo Chave de encriptação gerida pelo cliente apresenta o ID do recurso da chave.
Para cada uma das chaves que criou ou que protegem as suas tabelas, 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.
Altere a chave do Cloud KMS para uma tabela do BigQuery
Para alterar a chave do Cloud KMS de uma tabela protegida pela CMEK existente, pode executar uma consulta ALTER TABLE
, usar a API ou usar a ferramenta de linha de comandos bq.
Existem duas formas de modificar a chave do Cloud KMS através da API e da ferramenta de linha de comandos bq: update
ou cp
.
Se usar o update
, pode alterar a chave do Cloud KMS usada para uma tabela protegida por CMEK.
Se usar o cp
, pode alterar a chave do Cloud KMS usada para uma tabela protegida por CMEK, alterar uma tabela da encriptação predefinida para a proteção por CMEK ou alterar uma tabela da proteção por CMEK para a encriptação predefinida.
Uma vantagem do update
é que é mais rápido do que o cp
e permite-lhe usar
decoradores de tabelas.
SQL
Use a declaração
ALTER TABLE SET OPTIONS
para atualizar o campo kms_key_name
de uma tabela:
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
ALTER TABLE DATASET_ID.mytable SET OPTIONS ( kms_key_name = 'projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY');
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Pode usar o comando bq cp
com a flag --destination_kms_key
para alterar a chave de uma tabela protegida pelo Cloud KMS. A flag --destination_kms_key
especifica o ID de recurso da chave a usar com a tabela.
bq update \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ -t DATASET_ID.TABLE_ID
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Altere a chave de encriptação gerida pelo cliente de uma tabela alterando a propriedade Table.encryption_configuration para um novo objeto EncryptionConfiguration e atualize a tabela.
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Predefina uma chave do conjunto de dados
Pode definir uma chave do Cloud KMS predefinida ao nível do conjunto de dados que se aplica a todas as tabelas criadas recentemente no conjunto de dados, a menos que seja especificada uma chave do Cloud KMS diferente quando criar a tabela. A chave predefinida não se aplica a tabelas existentes. A alteração da chave predefinida não modifica nenhuma tabela existente e aplica-se apenas a novas tabelas criadas após a alteração.
Pode aplicar, alterar ou remover uma chave predefinida do conjunto de dados
Especificando a chave predefinida no campo
EncryptionConfiguration.kmsKeyName
quando chama os métodosdatasets.insert
oudatasets.patch
especificando a chave predefinida na flag
--default_kms_key
quando executar o comandobq mk --dataset
.bq mk \ --default_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ --dataset DATASET_ID
bq update \ --default_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ --dataset DATASET_ID
Defina uma chave predefinida do projeto
Pode definir chaves do Cloud KMS predefinidas ao nível do projeto que se aplicam a todos os resultados das consultas e tabelas criadas recentemente no projeto para essa localização, a menos que especifique uma chave do Cloud KMS diferente. A chave predefinida não se aplica a tabelas existentes. A alteração da chave predefinida não modifica nenhuma tabela existente e aplica-se apenas a novas tabelas criadas após a alteração.
SQL
Use a declaração
ALTER PROJECT SET OPTIONS
para atualizar o campo default_kms_key_name
de um projeto. Pode encontrar o nome do recurso da chave na página do Cloud KMS.
Na Google Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
ALTER PROJECT PROJECT_ID SET OPTIONS ( `region-LOCATION.default_kms_key_name` = 'projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY');
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Pode usar o comando bq
para executar uma
declaração ALTER PROJECT SET OPTIONS
para atualizar o campo default_kms_key_name
de um projeto:
bq query --nouse_legacy_sql \
'ALTER PROJECT PROJECT_ID
SET OPTIONS (
`region-LOCATION.default_kms_key_name`
="projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY");'
Use a CMEK para proteger os modelos do BigQuery ML
O BigQuery ML é compatível com a CMEK. Juntamente com a encriptação predefinida fornecida pelo BigQuery, pode usar as suas próprias chaves do Cloud Key Management Service para encriptar modelos de aprendizagem automática, incluindo modelos do TensorFlow importados.
Crie um modelo encriptado com uma chave do Cloud KMS
Para criar um modelo encriptado, use a declaração
CREATE MODEL
e especifique KMS_KEY_NAME
nas opções de preparação:
CREATE MODEL my_dataset.my_model OPTIONS( model_type='linear_reg', input_label_cols=['your_label'], kms_key_name='projects/my_project/locations/my_location/keyRings/my_ring/cryptoKeys/my_key') AS SELECT * FROM my_dataset.my_data
A mesma sintaxe também se aplica a modelos do TensorFlow importados:
CREATE MODEL my_dataset.my_model OPTIONS( model_type='tensorflow', path='gs://bucket/path/to/saved_model/*', kms_key_name='projects/my_project/locations/my_location/keyRings/my_ring/cryptoKeys/my_key') AS SELECT * FROM my_dataset.my_data
Limitações
As chaves de encriptação geridas pelo cliente têm as seguintes restrições quando encriptam modelos de aprendizagem automática:
As chaves CMEK da região
Global
não são suportadas para os seguintes tipos de modelos:As chaves CMEK de região e as chaves CMEK multirregião, por exemplo,
EU
ouUS
, não são suportadas quando cria os seguintes tipos de modelos:Global
As chaves CMEK não são suportadas para modelos remotos:
Altere um modelo da encriptação predefinida para a proteção do Cloud KMS
Pode usar o comando bq cp
com o sinalizador --destination_kms_key
para copiar um modelo protegido pela encriptação predefinida para um novo modelo protegido pelo Cloud KMS.
Em alternativa, pode usar o comando bq cp
com a flag -f
para substituir um modelo protegido pela encriptação predefinida e atualizá-lo para usar a proteção do Cloud KMS. A flag --destination_kms_key
especifica o
ID de recurso da chave a usar com o modelo de destino.
Para copiar um modelo com encriptação predefinida para um novo modelo com proteção do Cloud KMS:
bq cp \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ SOURCE_DATASET_ID.SOURCE_MODEL_ID DESTINATION_DATASET_ID.DESTINATION_MODEL_ID
Para substituir um modelo que tem a encriptação predefinida pelo mesmo modelo com a proteção do Cloud KMS:
bq cp -f \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.MODEL_ID DATASET_ID.MODEL_ID
Para alterar um modelo da proteção do Cloud KMS para a encriptação predefinida:
bq cp -f \ DATASET_ID.MODEL_ID DATASET_ID.MODEL_ID
Para mais informações sobre a ferramenta de linhas de comando bq, consulte o artigo Usar a ferramenta de linhas de comando bq.
Determine se um modelo está protegido pelo Cloud KMS
Use o comando
bq show
para ver se um modelo está protegido pela chave do Cloud KMS. A chave de encriptação encontra-se no campo kmsKeyName
.
bq show -m my_dataset.my_model
Também pode usar a Google Cloud consola para encontrar a chave do Cloud KMS para um modelo encriptado. As informações da CMEK encontram-se no campo Chave gerida pelo cliente na secção Detalhes do modelo do painel Detalhes do modelo.
Altere a chave do Cloud KMS para um modelo encriptado
Use o comando bq update
com a flag --destination_kms_key
para alterar a chave de um modelo protegido pelo Cloud KMS:
bq update --destination_kms_key \ projects/my_project/locations/my_location/keyRings/my_ring/cryptoKeys/my_key \ -t my_dataset.my_model
Use as chaves do projeto ou do conjunto de dados predefinidas
Se tiver uma chave do Cloud KMS predefinida definida ao nível do projeto ou do conjunto de dados,
o BigQuery ML usa automaticamente esta chave quando cria modelos.
Use a declaração CREATE MODEL
para especificar uma chave diferente para encriptar o modelo
se não quiser usar a chave predefinida.
Use funções do BigQuery ML com modelos encriptados
Pode usar todas as funções do BigQuery ML com um modelo encriptado sem especificar uma chave de encriptação.
Use a CMEK para proteger a API BigQuery Connection
Para ligações do Cloud SQL, pode proteger as credenciais da API BigQuery Connection através da CMEK.
Para mais informações sobre como criar uma ligação protegida por CMEK, consulte o artigo Crie ligações do Cloud SQL.
Remova o acesso do BigQuery à chave do Cloud KMS
Pode remover o acesso do BigQuery à chave do Cloud KMS em qualquer altura, revogando a autorização de gestão de identidade e acesso (IAM) para essa chave.
Se o BigQuery perder o acesso à chave do Cloud KMS, a experiência do utilizador pode sofrer um impacto significativo e podem ocorrer perdas de dados:
Já não é possível aceder aos dados nestas tabelas protegidas pela CMEK:
query
,cp
,extract
etabledata.list
vão falhar.Não é possível adicionar novos dados a estas tabelas protegidas pela CMEK.
Depois de o acesso ser novamente concedido, o desempenho das consultas a estas tabelas pode ser degradado durante vários dias.
Controle a utilização da CMEK com a política da organização
O BigQuery integra-se com as restrições da política da organização da CMEK para lhe permitir especificar os requisitos de conformidade da encriptação para os recursos do BigQuery na sua organização.
Esta integração permite-lhe fazer o seguinte:
Exigir CMEKs para todos os recursos do BigQuery num projeto.
Restrinja as chaves do Cloud KMS que podem ser usadas para proteger recursos num projeto.
Exija CMEKs para todos os recursos
Uma política comum é exigir que as CMEKs sejam usadas para proteger todos os recursos num conjunto específico de projetos. Pode usar a restrição constraints/gcp.restrictNonCmekServices
para aplicar esta política no BigQuery.
Se estiver definida, esta política da organização faz com que todos os pedidos de criação de recursos sem uma chave do Cloud KMS especificada falhem.
Depois de definir esta política, aplica-se apenas aos novos recursos no projeto. Todos os recursos existentes sem chaves do Cloud KMS definidas continuam a existir e são acessíveis sem problemas.
Consola
Abra a página Políticas da organização.
No campo Filtro, introduza
constraints/gcp.restrictNonCmekServices
e, de seguida, clique em Restrinja os serviços que podem criar recursos sem CMEK.Clique em
Editar.Selecione Personalizar, selecione Substituir e, de seguida, clique em Adicionar regra.
Selecione Personalizado e, de seguida, clique em Recusar.
No campo Valor personalizado, introduza
is:bigquery.googleapis.com
.Clique em Concluído e, de seguida, clique em Guardar.
gcloud
gcloud resource-manager org-policies --project=PROJECT_ID \ deny gcp.restrictNonCmekServices is:bigquery.googleapis.com
Para verificar se a política foi aplicada com êxito, pode tentar criar uma tabela no projeto. O processo falha, a menos que especifique uma chave do Cloud KMS.
Esta política também se aplica a tabelas de resultados de consultas no projeto. Pode especificar uma chave predefinida do projeto para que os utilizadores não tenham de especificar manualmente uma chave sempre que executam uma consulta no projeto.
Restrinja as chaves do Cloud KMS para um projeto do BigQuery
Pode usar a restrição constraints/gcp.restrictCmekCryptoKeyProjects
para
restringir as chaves do Cloud KMS que pode usar para proteger um recurso num
projeto do BigQuery.
Pode especificar uma regra, por exemplo, "Para todos os recursos do BigQuery em projects/my-company-data-project, as chaves do Cloud KMS usadas neste projeto têm de ser provenientes de projects/my-company-central-keys OU projects/team-specific-keys".
Consola
Abra a página Políticas da organização.
No campo Filtro, introduza
constraints/gcp.restrictCmekCryptoKeyProjects
e, de seguida, clique em Restrinja os projetos que podem fornecer CryptoKeys do KMS para CMEK.Clique em
Editar.Selecione Personalizar, selecione Substituir e, de seguida, clique em Adicionar regra.
Selecione Personalizado e, de seguida, clique em Permitir.
No campo Valor personalizado, introduza
under:projects/<var>KMS_PROJECT_ID</var>
.Clique em Concluído e, de seguida, clique em Guardar.
gcloud
gcloud resource-manager org-policies --project=PROJECT_ID \ allow gcp.restrictCmekCryptoKeyProjects under:projects/KMS_PROJECT_ID
Para verificar se a política foi aplicada com êxito, pode tentar criar uma tabela com uma chave do Cloud KMS de um projeto diferente. O processo vai falhar.
Limitações das políticas da organização
Existem limitações associadas à definição de uma política da organização.
Atraso de propagação
Depois de definir ou atualizar uma política da organização, a nova política pode demorar até 15 minutos a entrar em vigor. O BigQuery armazena em cache as políticas para não afetar negativamente a latência de criação de consultas e tabelas.
Autorizações necessárias para definir uma política da organização
A autorização para definir ou atualizar a política da organização pode ser difícil de adquirir para fins de teste. Tem de ter a função de administrador da política da organização, que só pode ser concedida ao nível da organização (em vez do nível do projeto ou da pasta).
Embora a função tenha de ser concedida ao nível da organização, ainda é possível especificar uma política que se aplica apenas a um projeto ou uma pasta específicos.
Impacto da rotação de chaves do Cloud KMS
O BigQuery não alterna automaticamente uma chave de encriptação de tabela quando a chave do Cloud KMS associada à tabela é alternada. Todos os dados nas tabelas existentes continuam a ser protegidos pela versão da chave com a qual foram criados.
Todas as tabelas criadas recentemente usam a versão da chave principal no momento da respetiva criação.
Para atualizar uma tabela de modo a usar a versão mais recente da chave, atualize a tabela com a mesma chave do Cloud KMS. Esta atualização não verifica nenhuma política da organização. Apenas a atualização da chave verifica a política da organização.
Impacto na faturação do Cloud KMS
Quando cria ou trunca uma tabela protegida por CMEK, o BigQuery gera uma chave de encriptação de chaves intermédia que é, em seguida, encriptada com a chave do Cloud KMS especificada.
Para fins de faturação, isto significa que nem as suas chamadas para o Cloud KMS nem os respetivos custos associados são dimensionados com o tamanho da tabela. Para tabelas protegidas por CMEK,
pode esperar uma chamada para o Cloud KMS
cryptoKeys.encrypt
para cada criação ou truncagem de tabelas e uma chamada para o Cloud KMS
cryptoKeys.decrypt
para cada tabela envolvida numa consulta. Ambos os métodos pertencem à categoria de
Operações com chaves: criptográficas apresentadas nos
Preços do Cloud KMS.
A leitura ou a escrita numa tabela protegida por CMEK invoca o
Cloud KMS cryptoKeys.decrypt
porque a chave intermédia tem de ser
desencriptada.
Limitações
Acesso do BigQuery à chave do Cloud KMS
Uma chave do Cloud KMS é considerada disponível e acessível pelo BigQuery nas seguintes condições:
- A chave está ativada
- A conta de serviço do BigQuery tem autorizações de encriptação e desencriptação na chave
As secções seguintes descrevem o impacto nos inserções de streaming e nos dados inacessíveis a longo prazo quando uma chave está inacessível.
Impacto nos anúncios de inserção em streaming
A chave do Cloud KMS tem de estar disponível e acessível durante, pelo menos, 24 horas consecutivas no período de 48 horas após um pedido de inserção de streaming. Se a chave não estiver disponível e acessível, os dados transmitidos em fluxo podem não ser totalmente mantidos e podem ser perdidos. Para mais informações sobre inserções por stream, consulte o artigo Transmitir dados para o BigQuery.
Impacto nos dados inacessíveis a longo prazo
Uma vez que o BigQuery oferece armazenamento gerido, os dados inacessíveis a longo prazo não são compatíveis com a arquitetura do BigQuery. Se a chave do Cloud KMS de uma determinada tabela do BigQuery não estiver disponível e não for acessível durante 60 dias consecutivos, o BigQuery pode optar por eliminar a tabela e os respetivos dados associados. Pelo menos 7 dias antes da eliminação dos dados, o BigQuery envia um email para o endereço de email associado à conta de faturação.
Usar origens de dados externas
Se estiver a consultar dados armazenados numa origem de dados externa, como o Cloud Storage, que tenha dados encriptados com CMEK, a encriptação de dados é gerida pelo Cloud Storage. Por exemplo, as tabelas BigLake suportam dados encriptados com CMEK no Cloud Storage.
O BigQuery e as tabelas do BigLake não suportam chaves de encriptação fornecidas pelo cliente (CSEK).
Alternar entre a encriptação predefinida e a encriptação protegida por CMEK
Não pode alternar uma tabela no local entre encriptações predefinidas e encriptação CMEK. Para mudar a encriptação, copie a tabela com as informações de encriptação de destino definidas ou use uma consulta SELECT *
para selecionar a tabela em si própria com a disposição WRITE_TRUNCATE
.
Usar decoradores de tabelas
Se proteger uma tabela com o Cloud KMS e, em seguida, substituir os dados na tabela usando o valor WRITE_TRUNCATE
para uma operação load
, cp
ou query
, os decoradores de intervalo não funcionam no limite da alteração de encriptação. Pode continuar a usar os decoradores de tabelas, incluindo os decoradores de intervalos, para consultar os dados antes ou depois do limite, ou consultar a imagem instantânea num determinado momento.
Consultas de tabelas com carateres universais
Não é possível consultar tabelas protegidas por CMEK com um sufixo de carateres universais.
Suporte de scripts
Os scripts não podem definir tabelas de destino para operações CMEK.
Suporte de edições
O suporte de CMEK para o BigQuery só está disponível para o BigQuery Enterprise, o BigQuery Enterprise Plus e o BigQuery On-Demand.
Suporte do BigQuery Studio
Os recursos de código do BigQuery Studio, incluindo consultas guardadas e blocos de notas, não suportam a CMEK.
Perguntas frequentes
Quem precisa de autorização para a chave do Cloud KMS?
Com as chaves de encriptação geridas pelo cliente, não é necessário especificar autorizações repetidamente. Desde que a conta de serviço do BigQuery tenha autorização para usar a chave do Cloud KMS para encriptar e desencriptar, qualquer pessoa com autorização para a tabela do BigQuery pode aceder aos dados, mesmo que não tenha acesso direto à chave do Cloud KMS.
Que conta de serviço é usada?
A conta de serviço do BigQuery associada ao Google Cloud projeto da tabela é usada para desencriptar os dados dessa tabela. As contas de serviço do BigQuery são únicas para cada projeto. Para uma tarefa que escreve dados numa tabela anónima protegida pelo Cloud KMS, é usada a conta de serviço do projeto da tarefa.
Por exemplo, considere três tabelas protegidas por CMEK: table1
, table2
e table3
. Para consultar dados de {project1.table1, project2.table2}
com a tabela de destino {project3.table3}
:
- Use a conta de serviço
project1
paraproject1.table1
- Use a conta de serviço
project2
paraproject2.table2
- Use a conta de serviço
project3
paraproject3.table3
De que formas o BigQuery pode usar a minha chave do Cloud KMS?
O BigQuery usa a chave do KMS da nuvem para desencriptar dados em resposta a uma consulta do utilizador, por exemplo, tabledata.list
ou jobs.insert
.
O BigQuery também pode usar a chave para tarefas de manutenção e otimização do armazenamento de dados, como a conversão de dados num formato otimizado para leitura.
Que bibliotecas de criptografia são usadas?
O BigQuery baseia-se no Cloud KMS para a funcionalidade CMEK. O Cloud KMS usa o Tink para a encriptação.
Como receber mais ajuda?
Se tiver perguntas que não estejam respondidas aqui, consulte o apoio técnico do BigQuery.
Resolução de problemas de erros
Segue-se uma descrição dos erros comuns e das mitigações recomendadas.
Erro | Recomendação |
---|---|
Conceda a função de encriptador/desencriptador de CryptoKey do Cloud KMS | A conta de serviço do BigQuery associada ao seu projeto não tem autorização IAM suficiente para operar na chave do Cloud KMS especificada. Siga as instruções no erro ou nesta documentação para conceder a autorização IAM adequada. |
As definições de encriptação da tabela existentes não correspondem às definições de encriptação especificadas no pedido | Isto pode ocorrer em cenários em que a tabela de destino tem definições de encriptação que não correspondem às definições de encriptação no seu pedido. Como mitigação, use a disposição de escrita TRUNCATE para substituir a tabela ou especifique uma tabela de destino diferente. |
Esta região não é suportada | A região da chave do Cloud KMS não corresponde à região do conjunto de dados do BigQuery da tabela de destino. Como mitigação, selecione uma chave numa região que corresponda ao seu conjunto de dados ou carregue-a num conjunto de dados que corresponda à região da chave. |
O seu administrador requer que especifique uma chave de encriptação para consultas no projeto PROJECT_ID. | Uma política de organização impediu a criação de um recurso ou a execução de uma consulta. Para saber mais acerca desta política, consulte o artigo Exigir CMEKs para todos os recursos num projeto do BigQuery. |
O seu administrador impede a utilização de chaves do KMS do projeto KMS_PROJECT_ID para proteger recursos no projeto PROJECT_ID. | Uma política de organização impediu a criação de um recurso ou a execução de uma consulta. Para saber mais acerca desta política, consulte o artigo Restrinja as chaves do Cloud KMS para um projeto do BigQuery. |