📢 转载信息
原文作者:Vignessh Baskaran, Nithyashree Alwarsamy, Andries Engelbrecht, and Chinnakanu Sai Janakiram
现代企业在连接商业智能平台与云数据仓库时,同时要保持自动化,面临着重大的挑战。基于密码的身份验证引入了安全漏洞、操作摩擦和合规性差距——这在Snowflake即将弃用用户名密码的情况下尤为关键。
Amazon QuickSight(Amazon Quick Suite的一项功能)现在支持使用密钥对身份验证来集成Snowflake,它采用非对称加密技术,使用RSA密钥对取代传统的密码。这一增强功能解决了Snowflake转向弃用基于密码的身份验证这一关键需求,需要更安全的身份验证方法。通过这项新功能,Amazon QuickSight用户可以使用RSA密钥对与Snowflake数据源建立安全、无密码的连接,提供满足企业安全标准的无缝且安全的集成体验。
在本文中,我们将指导您完成通过安全的密钥对身份验证在Amazon QuickSight和Snowflake之间建立数据源连接的步骤。
先决条件
在配置Amazon QuickSight和Snowflake之间的密钥对身份验证之前,请确保您具备以下条件:
- 一个活跃的Amazon QuickSight 账户以及适当的权限——您需要管理员权限来创建和管理数据源、配置身份验证设置以及向用户授予权限。Amazon QuickSight 企业版许可证或作者角色通常提供足够的访问权限。
- 一个具有ACCOUNTADMIN、SECURITYADMIN或USERADMIN角色的Snowflake 账户——这些提升的权限对于使用
ALTER USER命令分配公钥以及授予仓库和数据库权限至关重要。如果您没有这些角色的访问权限,请联系您的Snowflake管理员寻求帮助。 - 安装了OpenSSL(用于密钥生成)——此加密工具包以PKCS#8格式生成RSA密钥对。大多数Linux和macOS系统都预装了OpenSSL。Windows用户可以使用Windows Subsystem Linux (WSL) 或单独下载OpenSSL。
- (可选) AWS Secrets Manager 访问权限(用于基于API的设置)——对于程序化配置是必需的,您需要IAM 权限来创建和管理密钥,以及Amazon QuickSight API访问权限以实现自动化部署和基础设施即代码(IaC)实现。
解决方案演练
我们将指导您完成以下关键步骤,以在Amazon QuickSight和Snowflake之间建立安全的密钥对身份验证:
- 生成RSA密钥对——使用OpenSSL并遵循适当的加密标准来创建公钥和私钥
- 配置Snowflake用户——将公钥分配给您的Snowflake用户帐户并验证设置
- 建立数据源连接性——通过Amazon QuickSight UI进行交互式设置,或使用AWS命令行界面(AWS CLI)进行程序化部署来创建连接
让我们详细探讨每个步骤,并使用密钥对身份验证来保护您的Amazon QuickSight-Snowflake连接!
生成RSA密钥对:
- 在AWS 管理控制台中导航到AWS CloudShell,并执行以下命令生成RSA私钥。系统会提示您输入加密口令。请选择一个强口令并安全存储——稍后生成公钥时需要用到它。
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8

- 运行以下命令创建公钥对。系统会提示您输入上一步中使用的口令。
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub

- 提取私钥内容(包括头部和尾部):
cat rsa_key.p8
这会以以下格式显示您的私钥:
-----BEGIN PRIVATE KEY-----[key content]-----END PRIVATE KEY-----
注意:复制包括-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----行的整个输出。在创建Snowflake数据源连接时,您将使用这个完整的私钥(带头部和尾部)。
- Snowflake要求公钥采用特定格式,即不带头部或换行符。运行以下命令提取并正确格式化密钥。
grep -v KEY rsa_key.pub | tr -d '
' | awk '{print $1}' > pub.Key
cat pub.Key

这将显示您的格式化后的公钥字符串。复制此输出——您将在下一步中用它来配置您的Snowflake用户帐户。
将公钥分配给Snowflake用户:
- 登录Snowflake并执行以下SQL命令将公钥分配给您的用户:
ALTER USER <username> SET RSA_PUBLIC_KEY='<public_key_content>';
- 验证密钥分配:查找
RSA_PUBLIC_KEY属性以确认公钥已设置。
DESCRIBE USER <username>;
在Amazon QuickSight UI中建立您的Snowflake连接:
- 在AWS管理控制台中导航到Amazon QuickSight,选择数据集。然后选择数据源选项卡,然后选择创建数据源。

- 在创建数据源窗格中,在搜索数据集中输入“snowflake”,选择Snowflake,然后选择下一步。

- 在新的Snowflake数据源窗格中,输入数据源名称,然后将连接类型输入为“公共网络”或“私有VPC连接”。如果需要VPC连接,请参阅在QuickSight中配置VPC连接。
- 然后,输入数据库服务器主机名、数据库名称和仓库名称。
- 将身份验证类型选择为KeyPair,然后输入Snowflake用户的用户名。
- 在私钥字段中,粘贴
cat rsa_key.p8的完整输出(包括BEGIN和END头部)。如果您在密钥生成期间配置了口令,请在可选的“口令”字段中提供它。 - 输入完所有字段后,选择验证连接按钮。

- 连接验证后,选择创建数据源按钮。
- 然后在“数据源”列表中,找到您创建的Snowflake数据源。
- 从操作菜单中,选择创建数据集选项。




使用Amazon QuickSight API建立您的Snowflake连接:
使用AWS CLI,通过执行以下命令创建Amazon QuickSight数据源连接到Snowflake:
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
使用以下命令检查创建状态:
aws quicksight describe-data-source --region us-east-1 --aws-account-id 123456789 --data-source-id awsclikeypairtest
初始情况下,从describe-data-source命令返回的状态将是CREATION_IN_PROGRESS。如果新数据源准备就绪,该状态将更改为CREATION_SUCCESSFUL。
或者,当通过CreateDataSource以编程方式创建数据源时,您可以将用户名、密钥和口令存储在AWS Secrets Manager中,并使用Secret ARN引用它们。
成功创建数据源后,您可以导航到QuickSight控制台。在创建数据集页面上,您可以在数据源列表中看到新创建的数据源连接awsclikeypairtest。然后您可以继续创建数据集。
清理
为避免产生额外费用,请遵循以下步骤清理您的资源:
结论
密钥对身份验证代表了Amazon QuickSight和Snowflake之间安全数据连接的变革性进步。通过消除基于密码的漏洞并采用加密身份验证,组织可以在保持无缝自动化工作流程的同时,实现卓越的安全态势。此实现解决了关键的企业需求,例如通过非对称加密增强安全性、简化服务帐户管理,以及在Snowflake从传统密码方法过渡时遵守不断发展的身份验证标准。
无论是通过直观的Amazon QuickSight UI部署,还是使用AWS CLI进行基础设施即代码(IaC)实现,密钥对身份验证都提供了灵活性,而不会牺牲安全性。与AWS Secrets Manager的集成有助于保护私钥,而简单的设置过程使得在开发、暂存和生产环境中能够快速部署。
随着数据安全性的不断发展,采用密钥对身份验证可将贵组织置于最佳实践的前沿。商业智能团队现在可以专注于从Snowflake数据中提取可操作的见解,而不是管理身份验证复杂性,最终加速洞察获取时间并提高运营效率。
如需进一步阅读,请参阅Snowflake密钥对身份验证。
关于作者
🚀 想要体验更好更全面的AI调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。
评论区