Azure Private Link e Snowflake Open Catalog¶
Este tópico descreve como configurar o Azure Private Link para conectar diretamente sua conta do Snowflake Open Catalog ao mecanismo de consulta usando a conectividade privada de entrada.
Pré-requisitos¶
A conta do Snowflake Open Catalog está hospedada no Azure.
Você tem as permissões necessárias para configurar o serviço DNS com o URL da conectividade privada da sua conta do Open Catalog.
Etapa 1: Recuperação das configurações da conta do Open Catalog¶
Recupere as configurações a seguir para definir o acesso ao Open Catalog com o Azure Private Link.
Entre no Snowflake Open Catalog.
No menu de navegação, selecione Settings.
Na página Settings, copie os valores das seguintes configurações em um editor de texto:
URL da conta PrivateLink
URL da conta PrivateLink sem região
PrivateLink OCSP URL
URL OCSP do PrivateLink sem região
ID do serviço Private Link
Cole esses valores durante a Configuração do acesso ao Open Catalog com o Azure Private Link e a Conexão com o Open Catalog por meio do Azure Private Link.
Para ver as descrições de cada configuração, consulte Valores de retorno para a função do sistema SYSTEM$GET_PRIVATELINK_CONFIG na documentação do Snowflake. Neste tópico, os nomes das configurações da conta estão no formato JSON.
Nota
Lembre-se de que, quando aplicável, a descrição menciona uma conta Snowflake, mas seu valor é, na verdade, referente à sua conta do Snowflake Open Catalog. Por exemplo, o privatelink-account-url
é o URL da sua conta do Snowflake Open Catalog.
Opcional: para recuperar esses valores no formato JSON, crie uma conexão do Snowflake CLI para Open Catalog e, em seguida, chame a função do sistema SYSTEM$GET_PRIVATELINK_CONFIG.
Etapa 2: Configuração do acesso ao Open Catalog com o Azure Private Link¶
Atenção
Esta seção aborda apenas os detalhes específicos do Open Catalog para configuração do ambiente VNet. Observe também que o Snowflake não é responsável pela configuração real das atualizações de firewall e dos registros DNS necessários. Se você tiver problemas com qualquer uma dessas tarefas de configuração, entre em contato diretamente com o Suporte da Microsoft.
Esta seção descreve como conectar o VNet ao Open Catalog VNet usando o Azure Private Link.
Para concluir as instruções, você precisa usar a CLI do Azure ou o Azure PowerShell. Para obter ajuda na instalação, consulte a documentação da Microsoft para a CLI do Azure ou o Azure PowerShell.
Depois de iniciar a conexão com o Snowflake Open Catalog usando o Azure Private Link, você poderá determinar o estado de aprovação da conexão no portal do Azure.
Criação de um ponto de extremidade privado¶
Nota
Se você já criou um ponto de extremidade privado para sua conta Snowflake, e a conta está na mesma implantação que a conta do Open Catalog, não é necessário criar um novo ponto de extremidade privado para a conta do Open Catalog. Você pode ignorar essa etapa.
Recupere os detalhes da sua conta do Azure. O exemplo a seguir usa o comando
az account list
da CLI do Azure.Name CloudName SubscriptionId State IsDefault ------- ---------- ------------------------------------ ------- ---------- MyCloud AzureCloud 13c... Enabled True
No portal do Azure, procure Private Link e selecione Private Link nos resultados.
Clique em Private endpoints e depois em Add.
Na guia Basics, preencha os campos Subscription, Resource group, Name e Region para o seu ambiente e clique em Next: Resource.
Na guia Resource, em Connection Method, selecione Connect to an Azure resource by resource ID or alias.
Em Resource ID or alias, insira o valor do
Private Link Service ID
que você obteve quando recuperou as configurações da sua conta do Open Catalog para conectividade privada.Se você receber uma mensagem de erro referente ao valor do alias, entre em contato com o suporte Snowflake para obter o valor do ID do recurso e, em seguida, repita esta etapa usando esse valor.
Quando o ponto de extremidade privado é aprovado, o CONNECTION STATE na seção Private endpoints da página Private Link Center exibe o valor Pending. Esse valor muda para Approved quando você conclui a autorização no procedimento seguinte.
Habilitação da conectividade privada de entrada¶
Neste procedimento, você habilita o Azure Private Link para sua conta do Open Catalog. Essa configuração permite que o mecanismo de consulta se conecte ao Open Catalog por meio da conectividade privada. Você precisará do ID de recurso do seu ponto de extremidade privado, do ID de uma assinatura e do valor do token federado que contém as credenciais de acesso para um usuário federado.
Para obter esses valores, execute os seguintes comandos na CLI do Azure:
Para obter o ID de recurso do seu ponto de extremidade privado, execute o seguinte comando e copie o valor em um editor de texto:
az network private-endpoint show
Para obter o ID da assinatura, execute o seguinte comando e anote o valor da coluna SubscriptionID na saída:
az account list --output table
Para obter o valor do token federado, execute o seguinte comando e copie o valor accessToken em um editor de texto:
az account get-access-token --subscription <SubscriptionID>
Em que:
SubscriptionID
é o identificador exclusivo obtido na etapa anterior.
Importante
O usuário que gera o token de acesso Azure deve ter as permissões de leitura na assinatura. A permissão de menor privilégio é Microsoft.Subscription/subscriptions/acceptOwnershipStatus/read. Alternativamente, a função padrão
Reader
concede mais permissões de granulação ampla.O valor
accessToken
é uma informação confidencial e deve ser tratado como um valor de senha. Não o compartilhe.Se for necessário entrar em contato com o suporte Snowflake, apague o token de acesso de quaisquer comandos e URLs antes de criar um tíquete de suporte.
Entre no Snowflake Open Catalog.
No menu de navegação, selecione Settings.
Selecione Authorize.
Na caixa de diálogo Authorize Private Link, habilite a conectividade privada em sua conta:
Em ID, insira o ID de recurso do ponto de extremidade privado que você copiou para um editor de texto.
Em Federated token, insira o valor do token federado que você copiou para um editor de texto.
Selecione Save.
Configuração de DNS¶
Todas as solicitações ao Open Catalog devem ser encaminhadas por meio do ponto de extremidade privado. Para resolver a conta do Snowflake Open Catalog e os URLs OCSP para o endereço IP do seu ponto de extremidade privado, atualize o DNS.
Para obter o endereço IP do ponto de extremidade, na barra de pesquisa do portal do Azure, insira o nome do ponto de extremidade privado que você criou.
Selecione o resultado da interface de rede.
Copie o valor para o Private IP address.
Configure o DNS para que os valores de ponto de extremidade apropriados das suas configurações da conta do Open Catalog para conectividade privada sejam resolvidos para o endereço IP privado.
Etapa 3: Conexão com o Open Catalog por meio do Azure Private Link¶
Para registrar uma conexão de serviço e conectar seu mecanismo de consulta ao Open Catalog por meio do Azure Private Link, use o seguinte código:
import pyspark from pyspark.sql import SparkSession spark = SparkSession.builder.appName('iceberg_lab') \ .config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,<maven_coordinate>') \ .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \ .config('spark.sql.defaultCatalog', 'opencatalog') \ .config('spark.sql.catalog.opencatalog', 'org.apache.iceberg.spark.SparkCatalog') \ .config('spark.sql.catalog.opencatalog.type', 'rest') \ .config('spark.sql.catalog.opencatalog.uri','https://<open_catalog_privatelink_account_url>/polaris/api/catalog') \ .config('spark.sql.catalog.opencatalog.header.X-Iceberg-Access-Delegation','vended-credentials') \ .config('spark.sql.catalog.opencatalog.credential','<client_id>:<client_secret>') \ .config('spark.sql.catalog.opencatalog.warehouse','<catalog_name>') \ .config('spark.sql.catalog.opencatalog.scope','PRINCIPAL_ROLE:<principal_role_name>') \ .getOrCreate()
Parâmetros¶
Nota
Certifique-se de que você configurou o serviço DNS para corresponder ao valor especificado para <open_catalog_account_identifier>
.
Parâmetro |
Descrição |
---|---|
|
Especifica o nome do catálogo ao qual se conectar. |
|
Especifica a coordenada Maven para seu provedor de armazenamento em nuvem externo:
|
|
Especifica o ID do cliente que a entidade de serviço deve usar. |
|
Especifica o segredo de cliente que a entidade de serviço deve usar. |
|
Especifica o URL para conectar à sua conta Snowflake usando o AWS PrivateLink ou o Azure Private Link.
|
|
Especifica a função de entidade concedida à entidade de serviço. |
Etapa 4 (opcional): Criação de integração de catálogo para Snowflake¶
Se você usa o Snowflake para consultar tabelas gerenciadas pelo Open Catalog, crie um catálogo para o Snowflake que use um endereço IP privado. Para criar essa integração de catálogo, a conta Snowflake deve estar na mesma implantação que a conta do Open Catalog.
Para ver um exemplo, consulte Exemplo: integração de catálogo que usa um endereço IP privado <https://docs.snowflake.com/en/user-guide/tables-iceberg-open-catalog-query#example-catalog-integration-that-uses-a-private-ip-address>
_ na documentação do Snowflake.
Nota
É possível também configurar a conectividade privada para a Snowflake Open Catalog UI. Essa configuração, combinada com a configuração da conectividade privada para a conta do Open Catalog, permite que você acesse a Open Catalog UI por meio da conectividade privada em vez da internet pública.
Para configurar esse acesso, consulte Configuração da conectividade privada para Snowflake Open Catalog UI.