你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Database for PostgreSQL 是一种完全托管的数据库服务,它提供内置的高可用性、自动备份和缩放功能。 保护 PostgreSQL 数据库部署对于防止敏感数据泄露并确保符合行业标准至关重要。
本文介绍了如何保护 Azure Database for PostgreSQL 服务器部署。
网络安全
“网络安全”部分将指导你阻止公共访问,并利用网络功能将 PostgreSQL 集成到一个安全的、分段的云网络体系结构中。
禁用公用网络访问:禁用对 PostgreSQL 的公用网络访问,以防止暴露在 Internet 上。 此操作确保只有受信任的网络才能访问你的数据库。
专用终结点:使用专用终结点从虚拟网络中安全地连接到 PostgreSQL。
或者,使用虚拟网络集成:使用虚拟网络集成将 PostgreSQL 连接到虚拟网络。 此集成允许从 Azure 资源和服务器安全访问消耗的资源,例如 AI。
旧式防火墙规则和服务终结点:如果需要允许从特定 IP 地址进行访问,请使用旧式防火墙规则和服务终结点。 但是,不建议使用此方法。 相反,建议优先使用专用终结点或虚拟网络集成。
网络安全文章位于“网络”部分中:
身份管理
“标识管理”部分重点介绍了使用集中式身份和访问管理系统来实现身份验证、标识保护和访问控制。 该部分涵盖了最佳做法,例如为应用程序使用强身份验证机制和托管标识。
下面是“标识管理”部分的一些可能的安全服务、功能和最佳做法:
使用 Entra 而非数据库本地身份验证:你应该禁止 PostgreSQL 服务器的本地身份验证。 相反,应当仅使用 Microsoft Entra 身份验证(而非混合模式)来管理对数据库的访问。 Microsoft Entra 提供集中式身份验证,具备强大的安全控制功能,并通过 Defender for Identity 提供实时保护。 有关详细信息,请参阅 Microsoft Entra 概述,以及在 Azure Database for PostgreSQL 中使用 Microsoft Entra 进行身份验证。
使用托管标识实现安全的应用程序访问:在 Azure 中使用托管标识,可以安全地对应用程序和服务进行身份验证,而无需管理凭据。 这提供了一种安全且简化的方式来访问诸如 Azure Database for PostgreSQL 之类的资源。 有关详细信息,请访问托管标识。
通过条件访问策略强制实施安全控制:在 Microsoft Entra 中设置条件访问策略,以根据用户、位置或设备上下文强制实施安全控制。 这些策略允许基于风险动态强制实施安全要求,从而增强整体安全态势。 有关详细信息,请访问 Microsoft Entra 条件访问。
本地身份验证应使用 SCRAM 身份验证:如果必须使用本地身份验证,请确保强制实施强密码策略。 使用密码复杂性要求和定期密码轮换,以最大程度地降低帐户泄露的风险。 有关详细信息,请访问 Azure Database for PostgreSQL 中的 SCRAM 身份验证。
存取控制
“访问控制”部分重点介绍了如何基于最低特权原则来保障访问安全。 它强调了通过限制和管理提升的权限、强制实施多重身份验证,并确保对特权操作进行记录和审核,最大限度地降低未经授权访问敏感资源的风险。
下面是访问控制部分的一些可能的安全服务、功能和最佳做法:
使用 Entra 角色进行访问控制:实施 Azure 基于角色的访问控制 (RBAC) 来管理对 Azure Database for PostgreSQL 资源的访问。 根据最低特权原则来分配角色,确保用户和应用程序仅具有所需的权限。 有关详细信息,请访问 Azure 基于角色的访问控制 (RBAC) 概述和在 Azure Database for PostgreSQL 中管理 Microsoft Entra 角色。
遵循 Entra 最佳做法:利用 MFA、条件访问策略、实时 (JIT) 访问来保护用户和数据库。
管理本地数据库用户、角色和权限:使用 PostgreSQL 的内置角色管理来控制在数据库级别的访问。 创建具有特定权限的自定义角色,以强制实施最低特权原则。 定期复查和审核这些角色,以确保符合安全策略。 有关详细信息,请访问在 Azure Database for PostgreSQL 中创建用户。
数据保护
“数据保护”部分重点介绍了保护静态和传输中的敏感数据。 它确保数据被加密、访问受控制,并保护敏感信息免遭未经授权的访问。 它强调使用加密、安全连接和数据脱敏来保护数据的完整性和机密性。
下面是“数据保护”部分的一些可能的安全服务、功能和最佳做法:
加密传输中的数据
验证 TLS 连接:Azure PostgreSQL 始终使用 SSL 或 TLS 来加密在应用程序与数据库之间传输的数据。 你应该将应用程序配置为验证所使用的证书(例如根 CA)、证书是否过期、主机名是否匹配以及证书是否被吊销。 这种做法有助于保护敏感信息免受窃听和中间人攻击。 有关详细信息,请访问在 Azure Database for PostgreSQL 中使用 TLS 和 SSL 实现安全连接。
确保客户端已安装最新的 TLS 证书:确保客户端应用程序安装了最新的 TLS 证书以支持安全连接。 这种做法有助于防止连接失败,并确保应用程序能够与 PostgreSQL 服务器建立安全连接。 有关详细信息,请访问下载根 CA 证书并更新应用程序客户端。
要求使用 TLS 1.3:将你的 PostgreSQL 服务器配置为要求所有连接都使用 TLS 1.3。 此配置可确保仅使用最新、最安全的协议版本,从而提供更高的安全性和更好的性能。 有关详细信息,请访问 TLS 版本。
静态加密
数据在静止状态下始终通过 SMK 进行透明加密:Azure PostgreSQL 数据库会自动使用服务管理的密钥对静态数据进行加密。 这种加密方式可确保你的数据在无需额外配置的情况下得到保护。 它依赖于基础 Azure 存储基础结构。 它涵盖主服务器、副本、时间点恢复 (PITR) 和备份。 有关详细信息,请访问 Azure Database for PostgreSQL 中的数据加密。
使用客户管理的密钥进行更多控制:如果你需要对加密密钥进行更多控制,可使用存储在 Azure Key Vault 或 Azure HSM 中的由客户管理的密钥 (CMK)。 此选项允许你管理加密密钥,并提供更多的安全性和合规性选项。 有关详细信息,请访问 Azure Database for PostgreSQL 中由客户管理的密钥和在 Azure Database for PostgreSQL 中配置数据加密。
在 KV 或托管 HSM 中设置自动密钥轮换:如果你使用客户管理的密钥,请在 Azure Key Vault 中配置自动密钥轮换,以确保加密密钥定期更新。 Azure Database for PostgreSQL 支持在密钥轮换后自动更新密钥版本。 有关详细信息,请参阅在 Azure 托管 HSM 中配置密钥自动轮换或了解 Azure Key Vault 中的自动轮换以获取更多 Key Vault 详细信息。 有关详细信息,请访问在服务器预配期间使用客户管理的密钥配置数据加密,了解有关如何配置自动密钥轮换的详细步骤。
使用客户端加密对超敏感数据进行加密:对于超敏感数据,请考虑实施客户端加密。 此方法涉及在将数据发送到数据库之前对其进行加密,确保仅将加密的数据存储在数据库中。 这种做法提供了更高层次的安全性,因为数据库本身以及数据库管理员无法访问未加密的数据。
机密计算
Azure 机密计算 (ACC) 使组织能够安全地处理和协作处理敏感数据,例如个人数据或受保护的健康信息 (PHI)。 ACC 通过可信执行环境 (TEE) 保护正在使用的数据,从而提供针对未经授权访问的内置保护。
- SaaS 提供商和托管提供商考虑配置机密计算:如果你是软件即服务 (SaaS) 提供商或托管提供商,并且你的 PostgreSQL 工作负载涉及处理敏感数据,请考虑使用 Azure 机密计算来保护正在使用的数据。 该解决方案通过确保数据在安全环境中处理,提供了更高层次的安全性,即使是特权用户也无法进行未经授权的访问。 有关详细信息,请访问 Azure Database for PostgreSQL 的 Azure 机密计算来了解更多详细信息。
数据脱敏与遮蔽
实施数据脱敏:使用 PostgreSQL 匿名程序扩展来支持以下功能:
匿名转储:将带掩码的数据导出到 SQL 文件中。
静态脱敏:根据规则移除个人数据。
动态脱敏:仅对被脱敏的用户隐藏个人数据。
脱敏视图:为被脱敏的用户构建专用视图。
脱敏数据包装器:对外部数据应用脱敏规则。
日志记录和威胁检测
“日志记录与威胁检测”部分涵盖了 Azure 环境中用于检测威胁的控制措施。 其中介绍了如何为 Azure 服务启用、收集和存储审核日志。 它强调了利用原生威胁检测功能、集中式日志管理以及适当的日志保留,以支持安全调查和合规性要求。 本部分重点介绍了如何生成高质量的警报,通过 Azure 工具集中进行安全分析,保持准确的时间同步,并确保有效的日志保留策略。
下面是“日志记录和威胁检测”部分的一些可能的安全服务、功能和最佳做法:
启用诊断日志收集:通过选择类别组“审核”,确保启用诊断日志记录。使用 Azure Policy 来实现:
按类别组为 PostgreSQL (microsoft.dbforpostgresql/flexibleservers) 启用到 Log Analytics 的日志记录策略
利用 Microsoft Defender for Open-Source 关系数据库:使用 Microsoft Defender for Open-Source 关系数据库来增强 PostgreSQL 灵活服务器实例的安全态势。 此服务为开源数据库提供高级威胁防护、漏洞评估和安全建议。 有关详细信息,请访问 Microsoft Defender for Open-Source Relational Databases 概述以获取更多详细信息。
启用审核日志记录:使用 pgaudit 扩展配置 PostgreSQL 的审核日志记录以跟踪和记录数据库活动。 有关详细信息,请访问 Azure Database for PostgreSQL 中的审核日志记录以了解更多详细信息。
备份和恢复
“备份和恢复”部分重点介绍了如何确保 Azure 服务中的数据和配置得到定期备份、保护,并在发生故障或灾难时可恢复。 它强调了自动化备份、保护备份数据,以及确保恢复流程经过测试和验证,以满足恢复时间目标 (RTO) 和恢复点目标 (RPO)。 本部分还重点介绍了监视和审核备份过程的重要性,以确保合规性和就绪性。 有关概述,请访问有关使用 Azure Database for PostgreSQL 确保业务连续性的概述。
下面是“备份和恢复检测”部分的一些可能的安全服务、功能和最佳做法:
利用高可用性:为 PostgreSQL 灵活服务器实例实现高可用性(HA)配置,以最大程度地减少停机时间并确保持续访问数据库。 有关详细信息,请访问 Azure Database for PostgreSQL 中的高可用性(可靠性)和配置高可用性。
配置自动备份:Azure Database for PostgreSQL 自动执行数据库文件的每日备份,并持续备份事务日志。 你可以将备份保留 7 天至 35 天。 可将数据库服务器还原到备份保留期内的任何时间点。 RTO 取决于要还原的数据的大小和执行日志恢复的时间。 它可能从几分钟到 12 小时不等。 有关详细信息,请访问 Azure Database for PostgreSQL 中的备份和还原。
配置只读副本:使用只读副本将读取操作从主服务器上分担出去,从而提高性能和可用性。 你还可以在灾难恢复场景中使用只读副本,当主服务器发生故障时,可以快速切换到副本。 有关详细信息,请访问 Azure Database for PostgreSQL 中的只读副本。
使用客户管理的密钥加密保护备份数据:使用静态加密来保护备份数据。