Gerenciar pontos de extremidade de conectividade privada para o Snowflake Open Catalog: AWS

Quando os dados de seus catálogos na conta do Snowflake Open Catalog são armazenados em buckets de armazenamento do Amazon Simple Storage Service (Amazon S3), siga estas etapas para configurar a conectividade privada para o tráfego de rede de saída.

Para ativar a conectividade privada da sua conta do Open Catalog, você normalmente só precisa concluir as etapas de configuração deste tópico uma única vez. Depois disso, você habilita a conectividade privada de saída para cada catálogo em sua conta do Open Catalog.

Por exemplo, se você tiver concluído as etapas de configuração e, posteriormente, criar um novo catálogo catalog1, normalmente só precisará ativar a conectividade privada de saída para catalog1. Para obter instruções sobre como habilitar a conectividade privada para um catálogo, consulte Habilitar a conectividade privada de saída para um catálogo. No entanto, se catalog1 usar um bucket de armazenamento para o qual você não atualizou a política de bucket, também será necessário atualizar a política de bucket para o bucket. Quando você atualiza uma política de bucket, restringe o acesso à rede para o bucket a um ponto de extremidade de conectividade privada.

Pré-requisitos

  • Sua conta do Open Catalog e o armazenamento externo na nuvem devem estar hospedados na mesma região AWS.

  • Você precisa das permissões IAM na AWS que lhe permitem modificar a política de bucket do bucket de armazenamento AWS, onde as tabelas Iceberg estão armazenadas. Para obter detalhes, consulte Políticas de bucket para o Amazon S3 na documentação AWS.

  • Seu mecanismo de consulta de terceiros ou o mecanismo Snowflake deve ter acesso ao seu bucket de armazenamento por meio do AWS PrivateLink ou do S3 Gateway Endpoint. Para obter detalhes, consulte Configurar um ponto de extremidade de interface na documentação da AWS. Caso contrário, quando você ativar a conectividade privada de saída, o mecanismo não poderá ler ou gravar em tabelas armazenadas no bucket, mas o Open Catalog poderá ler ou gravar metadados no bucket.

Configure a conectividade privada para sua conta

Siga estas etapas para configurar a conectividade privada para sua conta do Open Catalog.

Etapa 1: Crie uma conexão do Snowflake CLI para o Open Catalog

Para configurar a conectividade privada no Open Catalog, você precisa de uma conexão do Snowflake CLI para o Open Catalog. Siga estas etapas para criar essa conexão. Se você ainda não tiver o Snowflake CLI instalado, consulte Instalação do Snowflake CLI.

Antes de começar

Para criar uma conexão do Snowflake CLI para o Open Catalog, você precisa do identificador completo da sua conta do Open Catalog. O identificador de conta inclui o nome da organização do Snowflake e o nome da conta do Open Catalog; por exemplo, <orgname>.<my-snowflake-open-catalog-account-name>.

  • Para encontrar o nome da organização Snowflake (<orgname>), consulte Como encontrar o nome da conta e organização de uma conta <https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#label-account-name-find>_.

  • Para encontrar o nome da sua conta do Snowflake Open Catalog (<my-snowflake-open-catalog-account-name>), consulte Encontrar o nome da conta do Snowflake Open Catalog <https://other-docs.snowflake.com/en/opencatalog/find-account-name>_.

Importante

Para criar essa conexão, você deve ser um usuário do Open Catalog com privilégios de administrador de serviço. Para obter informações sobre privilégios de administrador de serviço, consulte Função de administrador de serviço.

Adicionar uma conexão Snowflake CLI para o Snowflake Open Catalog

Adicione uma conexão para a conta do Snowflake Open Catalog na qual você deseja ativar a conectividade privada.

  • Adicione uma conexão <https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#add-a-connection>_ com os seguintes valores. Para todos os outros parâmetros, pressione Enter para pular a especificação de um valor para o parâmetro.

    Parâmetros de configuração da conexão

    Valor

    Nome para essa conexão

    Especifique um nome para a conexão; por exemplo, myopencatalogconnection.

    Nome da conta

    Especifique o nome da organização do Snowflake, seguido do nome da conta do Open Catalog, neste formato:

    <orgname>-<my-snowflake-open-catalog-account-name>.

    Por exemplo, ABCDEFG-MYACCOUNT1.

    Para encontrar esses nomes, consulte Antes de começar_.

    Nome de usuário

    Especifique seu nome de usuário para o Open Catalog; por exemplo, jsmith.

    Senha [opcional]

    Esse parâmetro não é opcional quando você cria uma conexão para o Open Catalog.

    Digite sua senha para o Open Catalog; por exemplo, MyPassword123456789.

    Função para a conexão [opcional]

    Esse parâmetro não é opcional quando você cria uma conexão para o Open Catalog.

    Você deve inserir POLARIS_ACCOUNT_ADMIN

Teste a conexão do Snowflake CLI

  • Para testar sua conexão CLI, siga este exemplo, que testa a conexão para myopencatalogconnection:

    snow connection test -c myopencatalogconnection
    
    Copy

    A resposta deve ser semelhante a esta:

    +------------------------------------------------------------------------------+
    | key              | value                                                     |
    |----------------------------+-------------------------------------------------|
    | Connection name  | myopencatalogconnection                                   |
    | Status           | OK                                                        |
    | Host             | ABCDEFG-MYACCOUNT1.snowflakecomputing.com                 |
    | Account          | ABCDEFG-MYACCOUNT1                                        |
    | User             | jsmith                                                    |
    | Role             | POLARIS_ACCOUNT_ADMIN                                     |
    | Database         | not set                                                   |
    | Warehouse        | not set                                                   |
    +------------------------------------------------------------------------------+
    
    Copy

Defina sua conexão do Snowflake CLI para o Snowflake Open Catalog como padrão

Para garantir que a conexão que você está usando sempre tenha a função POLARIS_ACCOUNT_ADMIN necessária concedida a ela, é possível definir a conexão do Snowflake CLI criada para o Open Catalog como a conexão padrão. Para obter mais informações sobre a conexão padrão, consulte Definir a conexão padrão <https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#set-the-default-connection>_.

  1. Siga este exemplo, que define a conexão myopencatalogconnection como padrão:

    snow connection set-default myopencatalogconnection
    
    Copy
  2. Para confirmar que está usando o usuário e a função corretos, execute o seguinte:

    snow sql -q "Select current_user(); select current_role();"
    
    Copy

    A resposta deve retornar seu nome de usuário do Open Catalog e CURRENT ROLE deve ser POLARIS_ACCOUNT_ADMIN.

    +----------------+
    | CURRENT_USER() |
    |----------------|
    | JSMITH        |
    +----------------+
    select current_role();
    +-----------------------+
    | CURRENT_ROLE()        |
    |-----------------------|
    | POLARIS_ACCOUNT_ADMIN |
    +-----------------------+
    
    Copy

Etapa 2: Provisione um ponto de extremidade de conectividade privada

Use a conexão do Snowflake CLI para o Open Catalog para chamar as seguintes funções do sistema:

  1. Para provisionar um ponto de extremidade de conectividade privada para seus buckets de armazenamento, chame a função de sistema SYSTEM$PROVISION_PRIVATELINK_ENDPOINT.

  2. Para confirmar que o ponto de extremidade de conectividade privada está pronto para ser usado, chame a função de sistema SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO.

Para obter instruções, consulte Provisionar pontos de extremidade de conectividade privada na documentação do Snowflake. Lembre-se de que as instruções se referem a uma conta do Snowflake em vez de uma conta Snowflake Open Catalog, mas o processo é o mesmo no Open Catalog.

Importante

  • Você deve usar a função POLARIS_ACCOUNT_ADMIN em vez da função ACCOUNTADMIN mencionada nas instruções.

  • Se a conexão padrão do Snowflake CLI que você definiu não tiver a função POLARIS_ACCOUNT_ADMIN concedida a ela, será necessário incluir a seguinte instrução no comando: USE ROLE POLARIS_ACCOUNT_ADMIN;

  • Com o seu comando, você deve inserir uma barra imediatamente antes de $ para escapá-lo. Por exemplo, snow sql -q "SELECT SYSTEM\$GET_PRIVATELINK_CONFIG();".

Nota

É possível usar esse ponto de extremidade de conectividade privada que você provisiona para conceder acesso a todos os buckets de armazenamento localizados na mesma região AWS em que sua conta do Open Catalog está hospedada; não é possível usá-lo para conceder acesso a um bucket localizado em uma região diferente.

Exemplo: Provisionar um ponto de extremidade de conectividade privada

O exemplo a seguir cria um PrivateLink com acesso externo ao Amazon S3 para configurar um ponto de extremidade para a região us-west-2:

SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
  'com.amazonaws.us-west-2.s3',
  '*.s3.us-west-2.amazonaws.com'
);
Copy

Etapa 3: Atualize sua política de bucket

Para restringir o acesso à rede do seu bucket de armazenamento ao ponto de extremidade de conectividade privada que você criou na etapa anterior, na AWS, atualize a política de bucket do seu bucket de armazenamento. Para obter instruções, consulte Restringir o acesso a um VPCendpoint específico na documentação AWS. Para <vpce-id> na política de bucket, especifique o ID do ponto de extremidade de conectividade privada que você criou na etapa anterior.

Se necessário, repita essa etapa para quaisquer outros buckets que você queira conectar ao Open Catalog.

Importante

Certifique-se de que sua política de bucket inclua privilégios que permitam que o usuário acesse o bucket e a política de bucket no navegador depois de adicioná-lo. Caso contrário, depois de atualizar a política do bucket, você não poderá acessar o bucket ou a política do bucket pelo navegador.

Esse exemplo de política de bucket permite que você acesse o bucket e a política de bucket pelo navegador:

{
    "Version": "2012-10-17",
    "Id": "Policy1234567890123",
    "Statement": [
        {
            "Sid": "Deny public access",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "aws:SourceVpc": "vpc-*"
                }
            }
        },
        {
            "Sid": "Access-to-specific-VPCE-only",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:SourceVpce": "vpce-xxxxxxxxxxx"
                }
            }
        }
    ]
}
Copy

Habilitar a conectividade privada de saída para um catálogo

Esta seção descreve como ativar a conectividade privada de saída para um catálogo em sua conta do Open Catalog.

Etapa 1: Habilite a conectividade privada

Você pode ativar a conectividade privada para um catálogo novo ou existente:

Habilitar a conectividade privada para um novo catálogo

Siga as instruções em Criar um catálogo usando o Amazon Simple Storage Service (Amazon S3). Certifique-se de que, para o catálogo, a opção Private Link esteja Enabled.

Nota

Se você não tiver atualizado a política de bucket para o bucket em que as tabelas do catálogo estão armazenadas, consulte Atualizar a sua política de bucket. Quando você atualiza uma política de bucket, restringe o acesso à rede ao seu bucket de armazenamento ao seu ponto de extremidade de conectividade privada.

Habilitar a conectividade privada para um catálogo existente

  1. Entre no Open Catalog.

  2. No menu de navegação, selecione Catalogs.

  3. Na lista de catálogos, selecione o catálogo para o qual você deseja ativar a conectividade privada.

  4. Na guia Catalog Details, defina a opção PrivateLink como Enabled.

Etapa 2: Criar uma tabela usando o mecanismo de consulta

Para verificar se o mecanismo de consulta está conectado ao catálogo por meio do AWS PrivateLink, use o mecanismo de consulta para criar uma tabela e inserir dados nela. Se não for possível inserir dados na tabela, talvez você não tenha configurado o AWS PrivateLink para o mecanismo de consulta.

Solução de problemas

Esta seção oferece solução de problemas com a conectividade privada de saída para o tráfego de rede.

Não é possível visualizar o esquema de uma tabela no Open Catalog

Sintoma

No Open Catalog, você seleciona uma tabela em seu catálogo (por exemplo, catalog1), mas recebe uma mensagem de erro de que não há permissões para acessar este recurso.

Causa

Na AWS, você atualizou com êxito a política de bucket para rotear o tráfego de rede por meio do ponto de extremidade VPC. No entanto, no Open Catalog, você não ativou a conectividade privada para esse catálogo, portanto, o Open Catalog não pode acessar o seu bucket.

Solução

Habilite a conectividade privada para o catálogo (por exemplo, catalog1). Para obter detalhes, consulte Habilitar a conectividade privada para um catálogo.