确保 Azure Database for MySQL 服务器安全

Azure Database for MySQL 是一项完全托管的数据库服务,可提供内置的高可用性、自动备份和缩放功能。 保护 MySQL 数据库部署对于保护敏感数据并保持符合行业标准至关重要。

本文介绍如何保护 Azure Database for MySQL Server 部署。

网络安全

“网络安全”部分指导你防止公共访问和使用网络功能将 MySQL 集成到安全分段的云网络体系结构中。 有关概念详细信息,请参阅 Azure Database for MySQL 灵活服务器的连接和网络概念

若要增强 MySQL 数据库服务器的安全性,请考虑以下最佳做法:

  • 禁用公用网络访问:禁用 MySQL 的公共网络访问,以防止暴露在 Internet 上。 此操作确保只有受信任的网络才能访问你的数据库。
  • 专用终结点:使用 专用终结点 从虚拟网络中安全地连接到 MySQL。
  • 或者,使用虚拟网络集成使用虚拟网络集成 将 MySQL 连接到虚拟网络。 此集成允许从 Azure 资源和服务器安全访问消耗的资源,例如 AI。
  • 旧防火墙规则:如果需要允许从特定 IP 地址进行访问,请使用 旧的防火墙规则和服务终结点。 但是,不建议使用此方法。 相反,建议优先使用专用终结点或虚拟网络集成。

网络安全文章位于“网络”部分中:

标识管理

“标识管理”部分重点介绍了使用集中式身份和访问管理系统来实现身份验证、标识保护和访问控制。 该部分涵盖了最佳做法,例如为应用程序使用强身份验证机制和托管标识。

  • 使用 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 概述以获取更多详细信息。