O desafio da conexão segura com data warehouses
Empresas modernas enfrentam desafios significativos ao integrar plataformas de inteligência de negócios com data warehouses em nuvem, especialmente quando é necessário manter a automação sem comprometer a segurança. A autenticação baseada em senha introduz vulnerabilidades, cria atrito operacional e gera lacunas de conformidade — particularmente crítico considerando que o Snowflake está descontinuando o suporte a autenticação por nome de usuário e senha.
A AWS reconheceu esse cenário e implementou uma solução através do Amazon QuickSight (um componente do Amazon Quick Suite), agora oferecendo suporte a autenticação por chave pública para integrações com Snowflake. Esse novo recurso utiliza criptografia assimétrica, onde pares de chaves RSA substituem as tradicionais senhas. Com essa capacidade, usuários da Amazon Quick Suite podem estabelecer conexões seguras e sem senha com fontes de dados Snowflake usando pares de chaves RSA, proporcionando uma experiência de integração contínua e segura que atende aos padrões empresariais de segurança.
Por que essa mudança importa
A implementação de autenticação por chave pública representa um avanço transformador na segurança de conectividade entre Amazon QuickSight e Snowflake. Ao eliminar as vulnerabilidades associadas a senhas e adotar autenticação criptográfica, as organizações conseguem alcançar uma postura de segurança superior mantendo fluxos de trabalho automatizados e contínuos. Essa implementação atende a requisitos críticos de empresas, como melhor segurança através de criptografia assimétrica, gerenciamento simplificado de contas de serviço e conformidade com padrões de autenticação em evolução, especialmente diante da transição do Snowflake para longe dos métodos tradicionais de senha.
Pré-requisitos para configuração
Antes de configurar a autenticação por chave pública entre Amazon QuickSight e Snowflake, verifique se você tem os seguintes requisitos:
Conta ativa da Amazon Quick
Você precisa de uma conta Amazon Quick com permissões apropriadas. Isso requer acesso administrativo para criar e gerenciar fontes de dados, configurar parâmetros de autenticação e conceder permissões a usuários. Tipicamente, licenças Enterprise da Amazon Quick ou o papel de Author na Amazon Quick Enterprise Edition fornecem acesso suficiente.
Conta Snowflake com permissões elevadas
Uma conta Snowflake com papéis ACCOUNTADMIN, SECURITYADMIN ou USERADMIN é essencial. Essas permissões elevadas são necessárias para modificar contas de usuário, atribuir chaves públicas usando comandos ALTER USER e conceder permissões em warehouses e bancos de dados. Se você não tiver acesso a esses papéis, entre em contato com seu administrador Snowflake.
OpenSSL instalado
OpenSSL, um kit de ferramentas criptográficas, é necessário para gerar pares de chaves RSA no formato PKCS#8. A maioria dos sistemas Linux e macOS inclui OpenSSL pré-instalado. Usuários de Windows podem usar Windows Subsystem for Linux (WSL) ou baixar OpenSSL separadamente.
AWS Secrets Manager (opcional)
Para configurações baseadas em API, acesso a AWS Secrets Manager é necessário. Você precisará de permissões IAM (Identity and Access Management) para criar e gerenciar secrets, além de acesso à API do Amazon QuickSight para implantações automatizadas e implementações de infraestrutura como código (IaC).
Passo a passo: Configurando a autenticação por chave pública
Para estabelecer autenticação segura por chave pública entre Amazon QuickSight e Snowflake, você seguirá estas etapas essenciais:
Gerar o par de chaves RSA
Navegue até AWS CloudShell no AWS Management Console e execute o comando a seguir para gerar a chave privada RSA. Você será solicitado a inserir uma frase de criptografia. Escolha uma frase forte e armazene-a com segurança — você precisará dela posteriormente ao gerar a chave pública.
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8
Execute os comandos a seguir para criar o par de chaves públicas. Você será solicitado a inserir a frase que utilizou no passo anterior.
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
Extraia o conteúdo da chave privada (incluindo cabeçalho e rodapé):
cat rsa_key.p8
Isso exibirá sua chave privada no formato:
-----BEGIN PRIVATE KEY-----[conteúdo da chave]-----END PRIVATE KEY-----
Importante: copie a saída inteira incluindo as linhas -----BEGIN PRIVATE KEY----- e -----END PRIVATE KEY-----. Você utilizará essa chave privada completa (com cabeçalhos e rodapés) ao criar sua conexão de fonte de dados Snowflake.
Formatar a chave pública
O Snowflake requer a chave pública em um formato específico sem cabeçalhos ou quebras de linha. Execute estes comandos para extrair e formatar a chave corretamente:
grep -v KEY rsa_key.pub | tr -d '\n' | awk '{print $1}' > pub.Key
cat pub.Key
Isso exibirá sua string de chave pública formatada. Copie essa saída — você a utilizará no próximo passo para configurar sua conta de usuário no Snowflake.
Atribuir a chave pública ao usuário Snowflake
Faça login no Snowflake e execute os seguintes comandos SQL para atribuir a chave pública ao seu usuário:
ALTER USER <username> SET RSA_PUBLIC_KEY='<public_key_content>';
Verifique a atribuição da chave procurando pela propriedade RSA_PUBLIC_KEY para confirmar se a chave pública foi configurada:
DESCRIBE USER <username>;
Estabelecendo a conexão através da interface do Amazon QuickSight
Navegue até Amazon QuickSight no AWS Management Console e selecione Datasets. Em seguida, selecione a aba Data sources e escolha Create data source. No painel Create data source, insira “snowflake” no campo Search datasets, selecione Snowflake e escolha Next.
No painel New Snowflake data source, insira o nome da fonte de dados e o tipo de conexão como Public Network ou uma Private VPC Connection. Se você precisar de uma conexão VPC, consulte a documentação para configurar a conexão VPC em QuickSight. Em seguida, insira o nome do host do servidor de banco de dados, o nome do banco de dados e o nome do warehouse.
Selecione Authentication Type como KeyPair e insira o nome do usuário Snowflake. No campo Private Key, cole a saída completa do comando cat rsa_key.p8 (incluindo os cabeçalhos BEGIN e END). Se você tiver configurado uma frase de criptografia durante a geração da chave, forneça-a no campo opcional Passphrase.
Após preencher todos os campos, selecione o botão Validate connection. Depois que a conexão for validada, selecione Create data source. Na lista de Data sources, localize a fonte de dados Snowflake que você criou. No menu Actions, selecione a opção Create dataset.
Estabelecendo a conexão através da API do Amazon QuickSight
Usando AWS CLI, você pode criar a conexão de fonte de dados do Amazon QuickSight com Snowflake executando o seguinte comando:
aws quicksight create-data-source \
--aws-account-id 123456789 \
--data-source-id awsclikeypairtest \
--name "awsclikeypairtest" \
--type SNOWFLAKE \
--data-source-parameters '{
"SnowflakeParameters": {
"Host": "hostname.snowflakecomputing.com",
"Database": "DB_NAME",
"Warehouse": "WH_NAME",
"AuthenticationType": "KEYPAIR"
}
}' \
--credentials '{
"KeyPairCredentials": {
"KeyPairUsername": "SNOWFLAKE_USERNAME",
"PrivateKey": "-----BEGIN ENCRYPTED PRIVATE KEY-----\nPRIVATE_KEY\n-----END ENCRYPTED PRIVATE KEY-----",
"PrivateKeyPassphrase": "******"
}
}' \
--permissions '[
{
"Principal": "arn:aws:quicksight:us-east-1:123456789:user/default/Admin/username",
"Actions": [
"quicksight:DescribeDataSource",
"quicksight:DescribeDataSourcePermissions",
"quicksight:PassDataSource",
"quicksight:UpdateDataSource",
"quicksight:DeleteDataSource",
"quicksight:UpdateDataSourcePermissions"
]
}
]' \
--region us-east-1
Use o comando a seguir para verificar o status da criação:
aws quicksight describe-data-source --region us-east-1 --aws-account-id 123456789 --data-source-id awsclikeypairtest
Inicialmente, o status retornado pelo comando describe-data-source será CREATION_IN_PROGRESS. O status mudará para CREATION_SUCCESSFUL quando a nova fonte de dados estiver pronta para uso.
Alternativamente, ao criar a fonte de dados programaticamente através de CreateDataSource, você pode armazenar o nome de usuário, chave e frase no AWS Secrets Manager e referenciá-los usando o Secret ARN. Após a criação bem-sucedida da fonte de dados, você poderá navegar até o console do QuickSight. Na página Create a Dataset, você visualizará a conexão de fonte de dados recém-criada awsclikeypairtest na lista de data sources. Você poderá então prosseguir para criar os datasets.
Limpeza de recursos
Para limpar seus recursos e evitar incorrer em custos adicionais, siga estas etapas:
- Excluir o secret criado no AWS Secrets Manager Console.
- Excluir a conexão de fonte de dados criada no Amazon QuickSight.
Benefícios práticos dessa implementação
A adoção de autenticação por chave pública oferece flexibilidade sem comprometer a segurança, independentemente de você estar implantando através da interface intuitiva do Amazon QuickSight ou usando AWS CLI para implementações de Infraestrutura como Código. A integração com AWS Secrets Manager ajuda a proteger as chaves privadas, enquanto o processo de configuração direto permite implantação rápida em ambientes de desenvolvimento, staging e produção.
Conforme a segurança de dados continua evoluindo, a adoção de autenticação por chave pública posiciona sua organização na vanguarda das melhores práticas. Os times de inteligência de negócios agora podem se concentrar em extrair insights acionáveis dos dados do Snowflake, em vez de gerenciar complexidades de autenticação, acelerando assim o tempo para obtenção de insights e melhorando a eficiência operacional.
Próximas leituras
Para aprofundar seu conhecimento sobre esse tópico, consulte autenticação por chave pública no Snowflake.
Fonte
Amazon Quick now supports key pair authentication to Snowflake data source (https://aws.amazon.com/blogs/machine-learning/amazon-quick-suite-now-supports-key-pair-authentication-to-snowflake-data-source/)
Leave a Reply