AWS 上的 Power BI:使用 RLS 进行 Athena、Glue 和 Lake Formation 的终极指南
将 Power BI 连接到现代 AWS 数据湖是企业分析的强大策略,但应对 Athena、Glue 和 Lake Formation 的复杂性可能令人望而生畏。本权威指南为构建安全、高性能和可治理的解决方案提供了完整的端到端蓝图。我们将超越基本连接来应对企业部署的现实挑战,重点关注直接在数据源逐步实施强大的行级安全性 (RLS),确保您的分析既强大又安全。
GigXP.com | AWS 上的 Power BI:终极端到端指南
将 Power BI 与 Athena、Glue 和 Lake Formation 集成的明确蓝图,重点关注性能、治理和强大的行级安全性 (RLS)。
架构概览
此架构可实现从 S3 中的原始存储到 Power BI 中的交互式可视化的无缝、安全的数据流。它利用无服务器堆栈来消除传统数据仓库的成本和复杂性。
端到端数据流
1.S3数据湖
原始和处理后的数据存储
→
2. 胶水目录
元数据和模式发现
→
3. 湖泊形成
集中治理和安全
→
4.雅典娜
无服务器 SQL 查询引擎
→
5. Power BI
可视化(通过网关)
第 1 部分:在 AWS 中构建数据湖基础
整个分析解决方案的完整性、安全性和性能取决于正确配置的 AWS 基础。本节详细介绍了构建该基础层的细致过程。
1.1:数据湖存储和基础安全(S3 和 IAM)
结构良好的 S3 环境至关重要。我们建议在 Athena 中使用分区布局以获得最佳查询性能并节省成本。应使用 Hive 样式的键值对约定对数据进行分区(例如“s3://…/year=2024/month=05/”)。
要点:遵循最小权限原则,创建专用的 IAM 角色,而不是具有静态密钥的 IAM 用户。此角色将由 Power BI 网关的 EC2 实例承担。
1.3:使用 AWS Lake Formation 进行集中治理
Lake Formation 从根本上改变了授权模型,从基础设施级 IAM 策略转变为数据级治理。它成为数据访问权限的单一事实来源。
关键配置:在 Lake Formation 设置中,您必须取消选择“仅对新数据库/表使用 IAM 访问控制”。这会将所有新 Glue 资源的权限管理委托给 Lake Formation,使其成为取代机构。
第 2 部分:将 Power BI 连接到 AWS 数据湖
AWS 基础建立后,下一阶段就是缩小与 Power BI 前端的差距。这涉及配置客户端环境、了解连接参数以及选择 Power BI 与数据交互的方式。
2.1:通过ODBC驱动程序建立连接
ODBC 驱动程序促进从 Power BI Desktop 到 Athena 的连接。 Power BI 中的本机“Amazon Athena”连接器是一个包装器,需要预安装并正确配置的 64 位 ODBC 驱动程序和数据源名称 (DSN) 才能运行。
ODBC DSN 配置
使用 Windows“ODBC 数据源(64 位)”工具,使用以下精确参数创建系统 DSN:
- AWS 区域:Athena 和 S3 所在的区域(例如“us-east-1”)。
- 架构:Glue 中要连接的数据库的名称(例如“sales_db”)。
- S3输出位置:Athena 查询结果的完整 S3 路径(例如“s3://your-athena-results-bucket/”)。
- 验证:将“IAM 凭据”与指定 Power BI IAM 角色的访问密钥和密钥一起使用。
关键设置:在 DSN 的高级选项中,“LakeformationEnabled”属性必须设置为“true”(或“1”)。这指示驱动程序使用 Lake Formation 进行授权。如果没有这个,您的整个治理模型和 RLS 策略将被绕过。
阅读更多:DirectLake、Athena 与 Redshift Spectrum:2025 年 Lakehouse BI 终极指南
2.2:数据连接模式:DirectQuery 与导入
通过 Athena 连接大规模数据湖时,DirectQuery 通常是唯一可行的选择。数据湖中的数据集大小可能为 TB 或 PB,太大而无法导入 Power BI 的内存限制。
- 直接查询:不复制任何数据。每次用户交互都会生成对 Athena 的实时 SQL 查询。这可确保数据始终是最新的,但意味着性能完全取决于 Athena 的查询速度。
- 进口:整个数据集被复制到 Power BI 的内存引擎中。这提供了极快的视觉性能,但需要计划刷新,并且不适合大规模数据集。
建议的策略是对大型事实表使用 DirectQuery,并考虑对较小的预聚合汇总表或维度使用导入模式,以创建高性能混合模型。
第 3 部分:发布和企业部署
将报表移至生产环境需要本地数据网关。在此云环境中,它充当 Power BI 服务与 AWS VPC 内的 Athena 数据源之间的安全代理。
3.1:本地数据网关的作用
网关必须安装在标准模式在与您的数据资源位于同一 VPC 内的专用 EC2 实例上。这将使所有数据流量保持在安全的 AWS 网络内。网关计算机必须具有与开发所用的完全相同的 64 位 Athena ODBC 驱动程序和名称相同的 DSN。
3.2:配置Power BI服务
发布报表后,您必须在 Power BI 服务门户中配置连接:
- 注册网关:在“管理连接和网关”中,验证您的新网关是否显示为“在线”状态。
- 创建数据源:在网关上创建新的“Amazon Athena”数据源,提供准确的 DSN 名称和必要的凭据。
- 地图数据集:在数据集的设置中,将其映射以使用新配置的网关数据源。
常见陷阱:网关服务帐户:网关作为 Windows 服务帐户运行(例如“NT SERVICEPBIEgwService”)。如果您的 DSN 依赖于与特定用户的本地配置文件(例如默认 AWS CLI 配置文件)关联的身份验证方法,则连接将会失败。在 DSN 中使用独立于用户上下文的身份验证方法(例如显式 IAM 密钥或 EC2 实例配置文件)。
第 4 部分:实施行级安全性 (RLS)
选择在何处以及如何实施 RLS 是一项基本架构决策,会对安全性、性能和管理开销产生深远影响。
4.1:RLS策略的比较分析
对于需要使用 DirectQuery 实现一致治理和性能的企业场景,通过 AWS Lake Formation 在数据源上实施安全性是最佳选择。
按功能过滤:
全部
执行
表现
可扩展性
| 特征 | AWS Lake Formation 数据过滤器 | 安全的雅典娜景观 | Power BI DAX 角色 (DirectQuery) |
|---|---|---|---|
| 执行点 | 数据来源(湖泊形成) | 数据源(雅典娜) | BI 层(Power BI 服务) |
| 集权 | 高的(适用于所有工具的单一策略) | 中(按视图管理) | 低(特定于 Power BI 模型) |
| 可扩展性 | 高的 | 中(查看蔓延风险) | 低(性能下降) |
| 性能影响 | 低的(过滤器被推下) | 低到中 | 高的(禁止查询折叠) |
| 推荐用例 | 企业治理 | 静态 RLS 或简单情况 | 导入模式或简单RLS |
4.2:使用 Lake Formation 实现 RLS(推荐)
此方法提供集中、一致且高性能的安全性。 Lake Formation 数据过滤器是可重用的策略对象,其中包含行过滤器表达式(例如,“marketplace=”US”`)。这些过滤器被授予表上特定 IAM 角色的权限。当具有该角色的用户查询表时,Lake Formation 在执行前动态地将过滤器附加到查询的“WHERE”子句,确保在源头强制执行安全性。
4.3:用户上下文挑战和动态 RLS
动态 RLS 的黄金标准是在 Power BI 和 AWS 之间启用单点登录 (SSO)。这需要使用 SAML 2.0 身份联合在 Azure Active Directory 和 AWS IAM 之间建立信任关系。
具有身份联合流程的动态 RLS
用户登录→Power BI / Azure AD
↓SAML
Athena + Lake Formation(应用过滤器)←AWS IAM(承担角色)
4.4:替代 RLS 方法及其局限性
Lake Formation 的替代方案虽然功能强大,但对于企业使用而言存在重大缺陷。
- 雅典娜的观点:为每个安全排列创建一个视图(例如“CREATE VIEW us_sales AS ...”)是一种传统方法,但会导致“视图蔓延”,随着安全规则的增长,成为维护的噩梦。
DirectQuery 警告:不建议将 Power BI 的本机 DAX 角色用于带有 DirectQuery 的 RLS。 DAX 筛选器可以防止“查询折叠”,迫使 Power BI 从 Athena 提取大型、未经筛选的数据集并在本地应用安全性。这抵消了 DirectQuery 的优势,增加了成本并严重降低了性能。
第 5 部分:优化、故障排除和最佳实践
性能是整个堆栈的一个新兴属性。优化解决方案涉及调整架构的每一层以协同工作。
5.1:性能和成本优化
最有影响力的优化发生在 S3 存储层。使用列式格式 (Parquet/ORC)、压缩和分区可以降低查询成本并将速度提高几个数量级。
S3 数据优化对 Athena 的影响
5.2:常见问题及故障排除
Power BI 中的一般错误通常会掩盖 AWS 堆栈中的特定根本原因。一种系统方法是“翻译”Power BI 错误并开始在 AWS 端进行诊断。
常见陷阱:“s3://… 上的 Lake Formation 权限不足”此错误几乎总是意味着您已授予对 Glue 表的权限,但忘记在 Lake Formation 控制台中授予对底层 S3“数据湖位置”的权限。这是一个两步过程。
© 2025 GigXP.com。版权所有。
现代数据专业人员的专家指南。
