确保 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 地址进行访问,请使用 旧的防火墙规则和服务终结点。 但是,不建议使用此方法。 相反,首选使用专用终结点或虚拟网络集成。

网络安全文章位于网络栏目中:

身份管理

“标识管理”部分重点介绍如何使用集中式标识和访问管理系统进行身份验证、保护标识和访问控制。 它涵盖了适用于应用程序的强身份验证机制和托管标识等最佳做法。

  • 使用Microsoft Entra而不是数据库本地身份验证:禁止 MySQL 服务器的本地身份验证。 请仅使用 Microsoft Entra 身份验证(非混合模式)来管理对数据库的访问。 Microsoft Entra 通过强大的安全控制和 Defender for Identity 实时保护提供集中式身份验证。 有关详细信息,请参阅有关Microsoft Entra的常规信息以及适用于 Azure Database for MySQL 灵活服务器的 Microsoft Entra 身份验证

  • 使用托管标识进行安全应用程序访问:使用 Azure 中的托管标识安全地对应用程序和服务进行身份验证,而无需管理凭据。 托管标识提供了访问 Azure Database for MySQL 等资源的安全简化方法。 有关详细信息,请参阅 Managed Identities

  • 通过条件访问策略强制执行安全性:在 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 密钥保管库中的客户管理的密钥(CMK)。 此选项允许你管理加密密钥,并提供更多的安全性和符合性选项。 有关详细信息,请参阅 使用 Azure Database for MySQL 的客户托管密钥进行数据加密

  • 在 KV 中设置自动密钥轮换:如果使用客户管理的密钥,请在Azure 密钥保管库中配置自动密钥轮换以确保加密密钥定期更新。 轮换密钥后,Azure Database for MySQL 支持自动密钥版本更新。 有关详细信息,请参阅 了解 Azure 密钥保管库 中的自动轮换,以了解有关 密钥保管库 的更多详细信息。

  • 使用客户端加密加密对超敏感数据进行加密:对于超敏感数据,请考虑实现客户端加密。 此方法涉及在将数据发送到数据库之前对其进行加密,确保仅将加密的数据存储在数据库中。 这种做法提供了更多的安全性,因为数据库本身及其管理员无法访问未加密的数据。

日志和威胁检测

日志记录和威胁检测部分涵盖用于检测 Azure 环境中的威胁的控制。

日志记录和威胁检测部分的安全服务、功能和最佳做法:

  • 启用诊断日志收集:选择类别组“audit”,确保启用诊断日志记录。

  • 利用 Microsoft Defender for Open-Source 关系数据库:使用 Microsoft Defender for Open-Source 关系数据库来增强 PostgreSQL 灵活服务器实例的安全态势。 此服务为开源数据库提供高级威胁防护、漏洞评估和安全建议。 有关详细信息,请访问 Microsoft Defender for Open-Source Relational Databases 概述以获取更多详细信息。