No catálogo do ambiente de execução do Lakehouse, as regras de perímetro do VPC Service Controls para endpoints de catálogo federado permitem consultar tabelas externas do Apache Iceberg no BigQuery, além de ajudar a evitar a exfiltração de dados. Quando os projetos ou buckets do Cloud Storage doGoogle Cloud residem em um perímetro de serviço, é possível configurar regras de saída para o Amazon S3 e o Microsoft Azure Data Lake Storage (ADLS) Gen2 ou regras de entrada para o Cloud Storage. Essas regras autorizam a sincronização de metadados e consultas de tabelas registradas no AWS Glue Data Catalog, no Databricks Unity Catalog, no Snowflake Horizon Catalog e no Workday Data Lake.
Se os projetos não estiverem dentro de um perímetro de serviço, os endpoints do catálogo federado vão funcionar sem nenhuma configuração do VPC Service Controls. Para conexões entre nuvens com o SAP Business Data Cloud (SAP BDC), consulte Configuração do VPC Service Controls para o SAP BDC. Para proteger os buckets acessados pelo endpoint do catálogo REST do Apache Iceberg no modo de venda de credenciais, consulte Usar o VPC Service Controls com venda de credenciais.
Antes de começar
- Configure um endpoint de catálogo federado para o AWS Glue Data Catalog, o Databricks Unity Catalog, o Snowflake Horizon Catalog ou o Workday Data Lake.
Crie um ou mais perímetros de serviço para seus projetos, dependendo de onde os arquivos de tabela estão armazenados:
- Armazenamento em nuvem externo (Amazon S3 ou ADLS Gen2): proteja
seu projeto de endpoint de catálogo federado com um perímetro que restringe
biglake.googleapis.comebigquery.googleapis.com. Para a regra de saída necessária, consulte Adicionar uma regra de saída para armazenamento em nuvem externo. - Cloud Storage: proteja seu projeto de bucket do Cloud Storage com um perímetro que restringe
storage.googleapis.com. O projeto do bucket e o projeto do endpoint do catálogo federado podem compartilhar um único perímetro ou residir em perímetros separados. Para ver a regra de entrada necessária, consulte Adicionar uma regra de entrada para buckets do Cloud Storage em um perímetro de serviço.
- Armazenamento em nuvem externo (Amazon S3 ou ADLS Gen2): proteja
seu projeto de endpoint de catálogo federado com um perímetro que restringe
Se usuários ou contas de serviço fora do perímetro consultarem o endpoint do catálogo federado, adicione uma regra de entrada que os admita no perímetro do projeto do endpoint do catálogo.
Funções exigidas
Para receber as permissões necessárias para configurar perímetros de serviço, peça ao administrador que conceda a você os seguintes papéis do IAM na sua organização:
-
Configurar perímetros de serviço e políticas de entrada ou saída:
Editor do Access Context Manager (
roles/accesscontextmanager.policyEditor)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Casos de uso e regras de perímetro necessárias
As regras de perímetro que você configura dependem de onde os arquivos de tabela residem e de onde os autores de chamada de consulta são executados:
| Caso de uso | Regra de perímetro obrigatória | Etapas de configuração |
|---|---|---|
Consultar tabelas entre nuvens no Amazon S3 ou no ADLS Gen2: consulte tabelas do Apache Iceberg em buckets do s3:// ou contêineres do abfss:// usando um endpoint de catálogo federado em um projeto protegido do BigQuery, bloqueando a saída externa não autorizada. |
Adicione uma regra de saída no perímetro do projeto do endpoint do catálogo que permita que a conta de serviço blirc-... do endpoint do catálogo e os principais de consulta leiam os buckets ou contêineres externos aprovados. |
Encontre a conta de serviço do endpoint do catálogo e adicione uma regra de saída para o armazenamento em nuvem externo. |
Acessar tabelas de catálogo externo em buckets protegidos do Cloud Storage: consulte tabelas do Databricks Unity Catalog ou do Snowflake Horizon Catalog armazenadas em um bucket do gs:// dentro de um perímetro que restringe o storage.googleapis.com (mesmo no mesmo projeto e perímetro que o endpoint do catálogo federado). |
Adicione uma regra de entrada no perímetro do projeto do bucket do Cloud Storage que permita que a conta de serviço Google Cloud do catálogo remoto acesse storage.googleapis.com. |
Adicione uma regra de entrada para buckets do Cloud Storage em um perímetro de serviço. |
| Permitir consultas de autores de chamadas fora do perímetro do endpoint do catálogo: execute jobs do BigQuery no projeto do endpoint do catálogo usando contas de analista, ferramentas de BI ou contas de serviço de carga de trabalho localizadas fora do perímetro. | Adicione uma regra de entrada no perímetro do projeto de endpoint do catálogo que permita que os autores de chamadas externos acessem bigquery.googleapis.com e biglake.googleapis.com, além da regra de armazenamento para o local da tabela. |
Configure a entrada do autor da chamada usando a referência de regras de entrada e siga o procedimento de armazenamento para o local da tabela. |
Como o VPC Service Controls avalia o tráfego de endpoints de catálogo federado
Um endpoint de catálogo federado realiza duas operações distintas que leem do armazenamento subjacente: sincronização de metadados e consultas do BigQuery. A forma como o VPC Service Controls avalia essas operações depende de onde os arquivos da tabela estão armazenados:
Armazenamento em nuvem externo (Amazon S3 ou Azure Data Lake Storage Gen2): o VPC Service Controls avalia a saída do perímetro de serviço do projeto do endpoint do catálogo em relação à identidade do autor da chamada em Google Cloud e ao bucket ou contêiner externo de destino:
Operação Identidade avaliada Recurso avaliado Sincronização de metadados A conta de serviço do Lakehouse provisionada automaticamente do endpoint do catálogo ( blirc-PROJECT_NUMBER-ID@gcp-sa-biglakerestcatalog.iam.gserviceaccount.com)O bucket ou contêiner externo que contém os metadados do Apache Iceberg da tabela. Consulta A conta de usuário ou de serviço que executa o job do BigQuery Os buckets ou contêineres externos que armazenam os metadados e os arquivos de dados da tabela. Para tabelas armazenadas no Amazon S3 ou no ADLS Gen2, a regra de saída do perímetro precisa incluir todos os seguintes itens:
- Identidades: a conta de serviço do endpoint do catálogo e os principais da consulta.
- Recursos externos: cada bucket ou contêiner que suas tabelas usam para metadados e arquivos de dados.
- Operações:
bigquery.googleapis.com(com a permissãoexternalResource.read) ebiglake.googleapis.com(com todos os métodos,'*').
Cloud Storage (locais externos do Databricks Unity Catalog ou do Snowflake Horizon Catalog no Google Cloud): durante a sincronização de metadados e as consultas do BigQuery, o BigQuery e o Lakehouse leem do Cloud Storage usando as credenciais de escopo reduzido vendidas pelo catálogo remoto, em vez da conta de serviço
blirc-...do endpoint do catálogo. Quando o projeto do bucket do Cloud Storage está dentro de um perímetro de serviço que restringe ostorage.googleapis.com, ostorage.googleapis.comavalia a conta de serviço do Google Cloud do catálogo remoto como uma identidade externa que tenta entrar no perímetro. Essa avaliação se aplica mesmo quando o bucket está no mesmo projeto e perímetro de serviço que o endpoint do catálogo federado. Adicione uma regra de entrada ao perímetro de serviço do projeto do bucket que permita que a conta de serviçoGoogle Cloud do catálogo remoto acessestorage.googleapis.com.
O VPC Service Controls avalia apenas as leituras de armazenamento realizadas pelo
BigQuery e pelo Lakehouse (biglake.googleapis.com).
Ele não avalia as chamadas que o Lakehouse faz para o endpoint de API do catálogo remoto (como listar namespaces e tabelas) e não
controla os mecanismos de consulta externos que leem o armazenamento diretamente.
Formatos de recursos externos
Especifique recursos externos em regras de saída como um URI exato de bucket ou contêiner.
Caminhos de objeto e caracteres curinga não são aceitos. Os nomes de buckets, contêineres e contas de armazenamento precisam estar em letras minúsculas. As regras que contêm caracteres maiúsculos nesses nomes são rejeitadas quando você as salva. Os URIs do Azure Data Lake Storage Gen2 (abfss://) e do Armazenamento de Blobs do Azure (azure://) não são intercambiáveis nas regras de saída do VPC Service Controls. Para endpoints de catálogo federados, é necessário especificar o formato abfss://.
A tabela a seguir mostra os formatos de URI de recursos externos compatíveis com endpoints de catálogo federado:
| Serviço de armazenamento | Formatar | Exemplo |
|---|---|---|
| Amazon S3 | s3://BUCKET_NAME |
s3://my-iceberg-warehouse |
| Azure Data Lake Storage Gen2 | abfss://CONTAINER@STORAGE_ACCOUNT.dfs.core.windows.net |
abfss://unity-catalog-storage@mystorageaccount.dfs.core.windows.net |
Encontrar a conta de serviço do endpoint do catálogo
O Lakehouse provisiona uma conta de serviço dedicada para cada endpoint de catálogo federado quando você cria o endpoint de catálogo. Para tabelas no Cloud Storage, pule para Adicionar uma regra de entrada para buckets do Cloud Storage em um perímetro de serviço. Se as tabelas estiverem armazenadas no Amazon S3 ou no ADLS Gen2, recupere o endereço de e-mail da conta de serviço para a regra de saída:
gcloud biglake iceberg catalogs describe CATALOG_ID \
--project=PROJECT_ID \
--format='value(biglake-service-account)'
Substitua:
CATALOG_ID: o ID do endpoint do catálogo federado.PROJECT_ID: o ID do projeto do Google Cloud que contém o endpoint do catálogo federado.
O comando retorna um endereço de e-mail no seguinte formato:
blirc-PROJECT_NUMBER-ID@gcp-sa-biglakerestcatalog.iam.gserviceaccount.com
Adicionar uma regra de saída para o armazenamento em nuvem externo
Se as tabelas acessadas pelo endpoint do catálogo federado estiverem armazenadas no Amazon S3 ou no ADLS Gen2, adicione uma regra de saída ao perímetro de serviço que protege o projeto do endpoint do catálogo.
Console
No console do Google Cloud , acesse a página VPC Service Controls.
Selecione sua organização e política de acesso e clique no nome do perímetro de serviço que contém o projeto de endpoint do catálogo.
Clique em Editar e, na seção Política de saída, clique em Adicionar uma regra de saída.
Na seção De, em Identidades, selecione Selecionar identidades e grupos, clique em Adicionar identidades e adicione a conta de serviço do endpoint do catálogo e os usuários ou contas de serviço que executam consultas.
Na seção Para:
- Selecione Recursos externos, clique em Adicionar recursos, insira cada
bucket do
s3://ou contêiner doabfss://que suas tabelas usam e clique em Adicionar recursos externos. - Em Operações ou papéis do IAM, configure os seguintes serviços
na tabela Operações da API:
- API BigQuery (
bigquery.googleapis.com): para restringir a entrada padrão de todos os métodos (*) ao acesso somente leitura, abra o menu de ações debigquery.googleapis.come clique em Editar, selecione Selecionar métodos, selecione a permissãoexternalResource.reade clique em Adicionar métodos selecionados. - API BigLake (
biglake.googleapis.com): clique em Adicionar operações, selecione API BigLake (biglake.googleapis.com), selecione Todos os métodos e clique em Adicionar todos os métodos.
- API BigQuery (
- Selecione Recursos externos, clique em Adicionar recursos, insira cada
bucket do
Clique em Salvar.
CLI da gcloud
Crie um arquivo chamado
egress.yamlque especifique a conta de serviço do endpoint do catálogo, os principais de consulta e todos os buckets ou contêineres externos usados pelas tabelas. Para ver o esquema completo, consulte a referência de regras de saída.- egressFrom: identities: - serviceAccount:CATALOG_ENDPOINT_SERVICE_ACCOUNT - user:QUERY_USER_EMAIL egressTo: externalResources: - s3://S3_BUCKET_NAME - abfss://ADLS_CONTAINER@STORAGE_ACCOUNT.dfs.core.windows.net operations: - serviceName: bigquery.googleapis.com methodSelectors: - permission: externalResource.read - serviceName: biglake.googleapis.com methodSelectors: - method: '*'Substitua:
CATALOG_ENDPOINT_SERVICE_ACCOUNT: o endereço de e-mail da conta de serviço do endpoint do catálogo que você recuperou anteriormente.QUERY_USER_EMAIL: o endereço de e-mail de um usuário ou conta de serviço que executa consultas pelo endpoint do catálogo federado. Para uma conta de serviço, use o prefixoserviceAccount:em vez deuser:. Como alternativa, substituaidentitiesporidentityType: ANY_IDENTITYpara permitir qualquer principal no perímetro.S3_BUCKET_NAME,ADLS_CONTAINEReSTORAGE_ACCOUNT: os locais de armazenamento externo que contêm os metadados e os arquivos de dados da tabela. Inclua apenas as entradas que se aplicam ao seu provedor de armazenamento.
Encontre o ID numérico da política de acesso da sua organização:
gcloud access-context-manager policies list \ --organization=ORGANIZATION_ID \ --format='value(name)'Substitua
ORGANIZATION_IDpelo ID numérico da organização.Aplique a regra de saída ao perímetro de serviço:
gcloud access-context-manager perimeters update PERIMETER_NAME \ --policy=POLICY_ID \ --set-egress-policies=egress.yamlSubstitua:
PERIMETER_NAME: o nome do perímetro de serviço.POLICY_ID: o ID numérico da sua política de acesso.
Para testar a regra antes de aplicá-la, use
gcloud access-context-manager perimeters dry-run updatepara aplicá-la a uma configuração de simulação e, após a validação, usegcloud access-context-manager perimeters dry-run enforcepara aplicá-la.Verifique se a regra está ativa:
gcloud access-context-manager perimeters describe PERIMETER_NAME \ --policy=POLICY_ID \ --format='yaml(status.egressPolicies)'
Adicionar uma regra de entrada para buckets do Cloud Storage em um perímetro de serviço
Se as tabelas em um catálogo remoto (como o Databricks Unity Catalog ou o Snowflake
Horizon Catalog) forem armazenadas em um bucket do Cloud Storage protegido por um
perímetro que restringe storage.googleapis.com, adicione uma regra de entrada ao
perímetro de serviço do projeto do bucket. Como o BigQuery e o
Lakehouse se autenticam no Cloud Storage usando a conta de serviço Google Cloud do catálogo remoto (não a conta de serviço blirc-...), essa regra é necessária mesmo quando o bucket está no mesmo projeto e perímetro que o endpoint do catálogo federado.
Console
No console do Google Cloud , acesse a página VPC Service Controls.
Selecione sua organização e política de acesso e clique no nome do perímetro de serviço que protege o projeto que contém o bucket do Cloud Storage.
Clique em Editar e, na seção Política de entrada, clique em Adicionar uma regra de entrada.
Na seção De:
- Em Identidades, selecione Selecionar identidades e grupos, clique em Adicionar identidades e adicione a conta de serviço do Google Cloud provisionada pelo catálogo remoto para o bucket do Cloud Storage.
- Em Origens, selecione Todas as origens (ou selecione Selecionar origens para especificar um nível de acesso).
Na seção Para:
- Em Recursos, escolha Selecionar recursos. Na guia Projetos, clique em Adicionar projetos, selecione o projeto que contém o bucket do Cloud Storage e clique em Adicionar projetos selecionados.
- Em Operações ou papéis do IAM, selecione Selecionar operações,
clique em Adicionar operações, selecione API Storage do Cloud
(
storage.googleapis.com), selecione Todos os métodos e clique em Adicionar todos os métodos. Como alternativa, selecione Selecionar métodos para escolher métodos de serviço compatíveis específicos (comogoogle.storage.objects.get,google.storage.objects.listegoogle.storage.buckets.get) e clique em Adicionar métodos selecionados.
Clique em Salvar.
CLI da gcloud
Crie um arquivo chamado
ingress.yamlque permita que a conta de serviçoGoogle Cloud do catálogo remoto acessestorage.googleapis.comno projeto do bucket. Para ver o esquema completo, consulte a referência de regras de entrada.- ingressFrom: identities: - serviceAccount:REMOTE_CATALOG_GCS_SERVICE_ACCOUNT sources: - accessLevel: '*' ingressTo: operations: - serviceName: storage.googleapis.com methodSelectors: - method: '*' resources: - projects/BUCKET_PROJECT_NUMBERSubstitua:
REMOTE_CATALOG_GCS_SERVICE_ACCOUNT: o endereço de e-mail da conta de serviço doGoogle Cloud provisionado pelo catálogo remoto para acessar o bucket do Cloud Storage (por exemplo, deDESCRIBE STORAGE CREDENTIALno Databricks Unity Catalog ouDESC EXTERNAL VOLUMEno Snowflake Horizon Catalog).BUCKET_PROJECT_NUMBER: o número do projeto que contém o bucket do Cloud Storage.
Encontre o ID numérico da política de acesso da sua organização:
gcloud access-context-manager policies list \ --organization=ORGANIZATION_ID \ --format='value(name)'Substitua
ORGANIZATION_IDpelo ID numérico da organização.Aplique a regra de entrada ao perímetro de serviço que protege o projeto do bucket:
gcloud access-context-manager perimeters update BUCKET_PERIMETER_NAME \ --policy=POLICY_ID \ --set-ingress-policies=ingress.yamlSubstitua:
BUCKET_PERIMETER_NAME: o nome do perímetro de serviço que protege o projeto do bucket.POLICY_ID: o ID numérico da sua política de acesso.
Para testar a regra antes de aplicá-la, use
gcloud access-context-manager perimeters dry-run updatepara aplicá-la a uma configuração de simulação e, após a validação, usegcloud access-context-manager perimeters dry-run enforcepara aplicá-la.Verifique se a regra está ativa:
gcloud access-context-manager perimeters describe BUCKET_PERIMETER_NAME \ --policy=POLICY_ID \ --format='yaml(status.ingressPolicies)'
Verificar a configuração
As atualizações da política de perímetro de serviço podem levar até 30 minutos para serem propagadas. Depois que a regra entrar em vigor, verifique se a sincronização de metadados e as consultas do BigQuery são concluídas sem negações do VPC Service Controls:
Aguarde a conclusão do próximo ciclo de sincronização de metadados programado e, em seguida, verifique os registros de auditoria de política negada nos registros de auditoria do Cloud para confirmar que não há violações do VPC Service Controls. A sincronização é executada automaticamente na programação de atualização e não pode ser acionada manualmente.
No Análise de registros, selecione o projeto protegido: o projeto de endpoint do catálogo para armazenamento em nuvem externo ou o projeto de bucket do Cloud Storage para tabelas do Cloud Storage. Para mais informações, consulte Recuperar erros do VPC Service Controls nos registros de auditoria. Execute a seguinte consulta:
log_id("cloudaudit.googleapis.com/policy") protoPayload.metadata.@type:"type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"Se as entradas de violação aparecerem após a propagação da regra, inspecione os campos
egressViolations.targetResource,ingressViolations.targetResourceeauthenticationInfo.principalEmailna entrada de registro para confirmar se eles correspondem aos recursos e às identidades na regra. Se as novas tabelas não forem sincronizadas e nenhuma entradaVpcServiceControlAuditMetadataaparecer, verifique as permissões e credenciais do catálogo remoto. Consulte Resolver problemas de acesso a dados entre nuvens.Execute uma consulta de teste em uma tabela no BigQuery usando a convenção de nomenclatura P.C.N.T (Project.Catalog.Namespace.Table) de quatro partes:
SELECT COUNT(*) FROM `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`;Substitua:
PROJECT_ID: o ID do projeto do Google Cloud que contém o endpoint do catálogo federado.CATALOG_ID: o ID do endpoint do catálogo federado.NAMESPACE: o namespace no endpoint do catálogo federado.TABLE_NAME: o nome de uma tabela no namespace.
Se uma consulta for bloqueada pelo VPC Service Controls, a mensagem de erro vai incluir um valor
vpcServiceControlsUniqueIdentifier. Filtre os registros de auditoria de política negada na Análise de registros correspondendoprotoPayload.metadata.vpcServiceControlsUniqueIda esse identificador:log_id("cloudaudit.googleapis.com/policy") protoPayload.metadata.@type:"type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata" protoPayload.metadata.vpcServiceControlsUniqueId="UNIQUE_IDENTIFIER"Substitua
UNIQUE_IDENTIFIERpelo valorvpcServiceControlsUniqueIdentifierda mensagem de erro.
A seguir
- Consultar dados remotos
- Visão geral do fornecimento de credenciais
- Regras de entrada e saída do VPC Service Controls
- Resolver problemas de acesso a dados entre nuvens