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 的公共网络访问
身份管理
“标识管理”部分重点介绍如何使用集中式标识和访问管理系统进行身份验证、保护标识和访问控制。 它涵盖了适用于应用程序的强身份验证机制和托管标识等最佳做法。
使用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 概述以获取更多详细信息。