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 Role-Based 访问控制(Role-Based 访问控制(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 Database for PostgreSQL 使用服务管理的密钥(SMK)自动加密静态数据。 此加密可确保数据受到保护,而无需额外配置。 它依赖于基础 Azure 存储基础结构。 它涵盖主服务器、副本、时间点恢复(PITR)和备份。 有关详细信息,请访问 Azure Database for PostgreSQL 中的数据加密。
使用客户管理的密钥进行其他控制:如果需要对加密密钥进行更多控制,请使用存储在 Azure Key Vault 中的客户管理的密钥(CMK)。 此选项允许你管理加密密钥,并提供更多的安全性和符合性选项。 有关详细信息,请访问 Azure Database for PostgreSQL 中的客户托管密钥 ,并在 Azure Database for PostgreSQL 中配置数据加密。
在 KV 中设置自动密钥轮换:如果使用客户管理的密钥,请在 Azure Key Vault 中配置自动密钥轮换,以确保加密密钥定期更新。 轮换密钥后,Azure Database for PostgreSQL 支持自动密钥版本更新。 有关详细信息,请访问[了解 Azure Key Vault 中的自动轮换](/key-vault/general/autorotation),以获取更多 Key Vault 的详细信息。 有关详细信息,请访问 在服务器预配期间使用客户管理的密钥配置数据加密 ,详细了解如何配置自动密钥轮换。
使用客户端加密加密对超敏感数据进行加密:对于超敏感数据,请考虑实现客户端加密。 此方法涉及在将数据发送到数据库之前对其进行加密,确保仅将加密的数据存储在数据库中。 这种做法提供了一个更安全的层,因为数据库本身,因此数据库管理员无权访问未加密的数据。
数据掩码和修订
实现数据掩码:使用 PostgreSQL 匿名化程序扩展 支持:
匿名转储:将屏蔽的数据导出到 SQL 文件中。
静态掩码:根据规则删除个人数据。
动态掩码:仅隐藏已屏蔽用户的个人数据。
屏蔽视图:为已屏蔽的用户生成专用视图。
屏蔽数据包装器:对外部数据应用掩码规则。
日志记录和威胁检测
日志记录和威胁检测部分涵盖用于检测 Azure 环境中的威胁的控制。 其中介绍了如何为 Azure 服务启用、收集和存储审核日志。 它强调使用本机威胁检测功能、集中式日志管理和适当的日志保留,以便进行安全调查和符合性。 本部分重点介绍如何生成高质量的警报,通过 Azure 工具集中分析安全分析,保持准确的时间同步,并确保有效的日志保留策略。
下面是日志记录和威胁检测部分的一些可能的安全服务、功能和最佳做法:
启用诊断日志收集:选择类别组“audit”,确保启用诊断日志记录。
启用审核日志记录:使用 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 中的只读副本。
使用客户管理的密钥加密保护备份数据:使用静态加密来保护备份数据。