Azure Database for MySQL 是一项完全托管的数据库服务,可提供内置的高可用性、自动备份和缩放功能。 保护 MySQL 数据库部署对于保护敏感数据并保持符合行业标准至关重要。
本文介绍如何保护 Azure Database for MySQL Server 部署。
网络安全
“网络安全”部分指导你防止公共访问和使用网络功能将 MySQL 集成到安全分段的云网络体系结构中。 有关概念详细信息,请参阅 Azure Database for MySQL 灵活服务器的连接和网络概念。
若要增强 MySQL 数据库服务器的安全性,请考虑以下最佳做法:
- 禁用公用网络访问:禁用 MySQL 的公共网络访问,以防止暴露在 Internet 上。 此操作确保只有受信任的网络才能访问你的数据库。
- 专用终结点:使用 专用终结点 从虚拟网络中安全地连接到 MySQL。
- 或者,使用虚拟网络集成: 使用虚拟网络集成 将 MySQL 连接到虚拟网络。 此集成允许从 Azure 资源和服务器安全访问消耗的资源,例如 AI。
- 旧防火墙规则:如果需要允许从特定 IP 地址进行访问,请使用 旧的防火墙规则和服务终结点。 但是,不建议使用此方法。 相反,建议优先使用专用终结点或虚拟网络集成。
网络安全文章位于“网络”部分中:
- Azure Database for MySQL 的连接和网络概念
- Azure Database for MySQL 的专用链接
- 使用 Azure Database for MySQL 的虚拟网络集成进行专用网络访问
- Azure Database for MySQL 的公共网络访问
标识管理
“标识管理”部分重点介绍了使用集中式身份和访问管理系统来实现身份验证、标识保护和访问控制。 该部分涵盖了最佳做法,例如为应用程序使用强身份验证机制和托管标识。
使用 Entra 而不是数据库本地身份验证:应禁止 MySQL 服务器的本地身份验证。 相反,应当仅使用 Microsoft Entra 身份验证(而非混合模式)来管理对数据库的访问。 Microsoft Entra 提供集中式身份验证,具备强大的安全控制功能,并通过 Defender for Identity 提供实时保护。 有关详细信息,请访问 Microsoft Entra ,并使用 Azure Database for MySQL Microsoft Entra 身份验证。
使用托管标识实现安全的应用程序访问:在 Azure 中使用托管标识,可以安全地对应用程序和服务进行身份验证,而无需管理凭据。 托管标识提供了访问 Azure Database for MySQL 等资源的安全简化方法。 有关详细信息,请访问托管标识。
通过条件访问策略强制实施安全控制:在 Microsoft Entra 中设置条件访问策略,以根据用户、位置或设备上下文强制实施安全控制。 这些策略允许基于风险动态强制实施安全要求,从而增强整体安全态势。 有关详细信息,请访问 Microsoft Entra 条件访问。
本地身份验证基于 MySQL 的身份验证功能:如果必须使用本地身份验证,请确保遵循有关 访问控制和帐户管理的官方 MySQL 文档。 有关管理 MySQL 用户的 Azure 特定说明,请参阅 在 Azure Database for MySQL 中创建用户。
存取控制
访问控制部分重点介绍如何根据最低特权原则保护访问级别,以降低未经授权的访问风险
- 限制和管理提升的权限。
- 强制实施多重身份验证。
- 确保记录和审核特权操作。
访问控制的安全服务、功能和最佳做法包括:
使用 Entra 角色进行访问控制:实现 Azure Role-Based 访问控制(RBAC)来管理对 Azure Database for MySQL 资源的访问。 根据最低特权原则来分配角色,确保用户和应用程序仅具有所需的权限。 有关详细信息,请访问 Azure 基于角色的访问控制(RBAC), 并为 Azure Database for MySQL 设置Microsoft Entra 身份验证。
遵循 Entra 最佳做法:
- 利用多重身份验证(MFA)为用户访问添加额外的安全层。
- 实现 Privileged Identity Management (PIM),以管理、控制和监视访问。
- 条件访问策略,实时(JIT)访问以保护用户和数据库。
管理本地数据库用户、角色和权限:使用 MySQL 的内置角色管理来控制数据库级别的访问。 创建具有特定权限的自定义角色,以强制实施最低特权原则。 定期复查和审核这些角色,以确保符合安全策略。 有关详细信息,请访问 在 Azure Database for MySQL 中创建用户。
数据保护
“数据保护”部分重点介绍了保护静态和传输中的敏感数据。 它确保数据被加密、访问受控制,并保护敏感信息免遭未经授权的访问。 它强调使用加密、安全连接和数据脱敏来保护数据的完整性和机密性。
下面是“数据保护”部分的一些可能的安全服务、功能和最佳做法:
加密传输中的数据
验证 TLS 连接:Azure MySQL 始终使用 TLS 来加密应用程序和数据库之间的传输数据。 你应该将应用程序配置为验证所使用的证书(例如根 CA)、证书是否过期、主机名是否匹配以及证书是否被吊销。 这种做法有助于保护敏感信息免受窃听和中间人攻击。 有关详细信息,请访问 Azure Database for MySQL 中的传输层安全性(TLS)。
确保客户端已安装最新的 TLS 证书:确保客户端应用程序安装了最新的 TLS 证书以支持安全连接。 这种做法有助于防止连接失败,并确保应用程序能够与 MySQL 服务器建立安全连接。 有关详细信息,请访问 Azure Database for MySQL 中的传输层安全性(TLS)。
要求使用 TLS 1.3:将 MySQL 服务器配置为要求所有连接的 TLS 1.3。 此配置可确保仅使用最新、最安全的协议版本,从而提供更高的安全性和更好的性能。 有关详细信息,请访问 Azure Database for MySQL 中的传输层安全性(TLS)。
静态加密
数据始终使用 SMK 以透明方式静态加密:Azure Database for MySQL 使用服务管理的密钥(SMK)自动加密静态数据。 这种加密方式可确保你的数据在无需额外配置的情况下得到保护。 它依赖于基础 Azure 存储基础结构。 它涵盖主服务器、副本、时间点恢复 (PITR) 和备份。 有关详细信息,请使用 Azure 门户访问 Azure Database for MySQL 的数据加密。
使用客户管理的密钥进行其他控制:如果需要对加密密钥进行更多控制,请使用存储在 Azure Key Vault 中的客户管理的密钥(CMK)。 此选项允许你管理加密密钥,并提供更多的安全性和合规性选项。 有关详细信息,请访问 使用 Azure Database for MySQL 的客户托管密钥进行数据加密。
在 KV 中设置自动密钥轮换:如果使用客户管理的密钥,请在 Azure Key Vault 中配置自动密钥轮换,以确保加密密钥定期更新。 轮换密钥后,Azure Database for MySQL 支持自动密钥版本更新。 有关详细信息,请访问 了解 Azure Key Vault 中的自动轮换 以获取更多关于 Key Vault 的详细信息。
使用客户端加密对超敏感数据进行加密:对于超敏感数据,请考虑实施客户端加密。 此方法涉及在将数据发送到数据库之前对其进行加密,确保仅将加密的数据存储在数据库中。 这种做法提供了更高层次的安全性,因为数据库本身以及数据库管理员无法访问未加密的数据。
日志记录和威胁检测
“日志记录与威胁检测”部分涵盖了 Azure 环境中用于检测威胁的控制措施。
日志记录和威胁检测部分的安全服务、功能和最佳做法:
启用诊断日志收集:选择类别组“audit”,确保启用诊断日志记录。
利用 Microsoft Defender for Open-Source 关系数据库:使用 Microsoft Defender for Open-Source 关系数据库来增强 PostgreSQL 灵活服务器实例的安全态势。 此服务为开源数据库提供高级威胁防护、漏洞评估和安全建议。 有关详细信息,请访问 Microsoft Defender for Open-Source Relational Databases 概述以获取更多详细信息。