Gerenciamento de pontos de extremidade de conectividade privada para Snowflake Open Catalog: AWS

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

Para habilitar a conectividade privada em sua conta do Open Catalog, normalmente você só precisa concluir as etapas de configuração deste tópico uma 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ê concluiu as etapas de configuração e criou um novo catálogo catalog1, normalmente só é necessário habilitar a conectividade privada de saída para catalog1. Para obter instruções sobre como habilitar a conectividade privada para um catálogo, consulte Habilitação da conectividade privada de saída para um catálogo. Entretanto, se catalog1 usa um bucket de armazenamento do qual você não atualizou a política de bucket, também é necessário atualizar a política de bucket para o bucket. Ao atualizar uma política de bucket, você restringe o acesso à rede do bucket a um ponto de extremidade de conectividade privada.

Pré-requisitos

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

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

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

Configuração da conectividade privada na conta

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

Etapa 1: Criação de conexão do Snowflake CLI para Open Catalog

Para configurar a conectividade privada no Open Catalog, você precisa de uma conexão do Snowflake CLI para Open Catalog. Siga as etapas abaixo para criar essa conexão. Se você ainda não tem 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 da conta inclui o nome da organização Snowflake e o nome da conta do Open Catalog, por exemplo, <orgname>.<my-snowflake-open-catalog-account-name>.

  • Para encontrar o nome da sua 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 de uma conta do Snowflake Open Catalog <https://other-docs.snowflake.com/en/opencatalog/find-account-name>_.

Importante

Para criar essa conexão, você deve ser 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.

Adição da conexão do Snowflake CLI para Snowflake Open Catalog

Adicione uma conexão para a conta do Snowflake Open Catalog em que você quer habilitar a conectividade privada.

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

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

    Valor

    Nome desta conexão

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

    Nome da conta

    Especifique o nome da sua organização Snowflake, seguido do nome da sua 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 do 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 do 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 da conexão do Snowflake CLI

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

    snow connection test -c myopencatalogconnection
    
    Copy

    A resposta deve ser assim:

    +------------------------------------------------------------------------------+
    | 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

Configuração da conexão do Snowflake CLI para Snowflake Open Catalog como padrão

Para garantir que a conexão que você sempre usa tenha a função POLARIS_ACCOUNT_ADMIN necessária, defina a conexão do Snowflake CLI que você criou para o Open Catalog como padrão. Para obter mais informações sobre a conexão padrão, consulte Definição da 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 se você 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 a CURRENT ROLE deve ser POLARIS_ACCOUNT_ADMIN.

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

Etapa 2: Provisionamento de 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 os buckets de armazenamento, chame a função do sistema SYSTEM$PROVISION_PRIVATELINK_ENDPOINT.

  2. Para confirmar se o ponto de extremidade de conectividade privada está pronto para uso, chame a função do 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 mencionam uma conta Snowflake em vez de uma conta do Snowflake Open Catalog, mas o processo é o mesmo no Open Catalog.

Importante

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

  • Se a conexão padrão do Snowflake CLI que você definiu não tem a função POLARIS_ACCOUNT_ADMIN, inclua a seguinte instrução com o comando: USE ROLE POLARIS_ACCOUNT_ADMIN;.

  • Com o comando, você deve inserir uma barra como caractere de escape logo antes de $. Por exemplo, snow sql -q "SELECT SYSTEM\$GET_PRIVATELINK_CONFIG();".

Nota

É possível usar esse ponto de extremidade de conectividade privada provisionado para conceder acesso a todos os buckets de armazenamento localizados na mesma região AWS onde 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: Provisionamento de 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: Atualização da política de bucket

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

Se necessário, repita essa etapa para os buckets adicionais que quiser conectar ao Open Catalog.

Importante

Certifique-se de que sua política de bucket inclua privilégios que permitam o acesso ao bucket e à política de bucket pelo navegador depois de adicioná-lo. Caso contrário, depois que você atualizar a política de bucket, não será possível acessar o bucket ou a política de 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

Habilitação da conectividade privada de saída para um catálogo

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

Etapa 1: Desabilitação da conectividade privada

É possível habilitar a conectividade privada para um catálogo novo ou existente:

Habilitação da conectividade privada para um novo catálogo

Siga as instruções em Criação de um catálogo usando o Amazon Simple Storage Service (Amazon S3). Certifique-se de que, para o catálogo, o botão de alternância Private Link esteja habilitado.

Nota

Se você não atualizou a política do bucket em que as tabelas do catálogo estão armazenadas, consulte Atualização da política de bucket. Ao atualizar uma política de bucket, você restringe o acesso de rede ao bucket de armazenamento ao seu ponto de extremidade de conectividade privada.

Habilitação da 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 aquele no qual você quer habilitar a conectividade privada.

  4. Na guia Catalog Details, defina o botão de alternância PrivateLink como Enabled.

Etapa 2: Criação de uma tabela usando o mecanismo de consulta

Para verificar se o mecanismo de consulta está conectado ao seu catálogo por meio do AWS PrivateLink, use o mecanismo de consulta para criar uma tabela e insira 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 apresenta a 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 a seguinte mensagem de erro: «No permissions to access this resource.»

Causa

Na AWS, você atualizou com sucesso sua 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 habilitou a conectividade privada para esse catálogo; por isso, o Open Catalog não pode acessar seu bucket.

Solução

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