配置网络和安全功能
Azure Database for MySQL 灵活服务器中的主要网络和安全功能包括访问控制、连接性、对 Microsoft Entra ID 的支持、用于管理标识、角色和权限的集中式平台。 默认情况下,MySQL 灵活服务器还会加密所有传输中的数据,并启用通过 Azure 或客户管理的密钥加密静态数据的功能。
网络
配置网络访问
创建 MySQL 灵活服务器时,可以选择通过 Azure 虚拟网络进行专用访问,也可以选择使用可选专用终结点对允许列出的 IP 地址进行公共访问。 填写“基本信息”部分后,选择“下一步: 网络”,然后选择“公共访问和专用终结点”或“专用访问”:
如果选择“公共访问和专用终结点”,则可以选择是否向 Internet 公开数据库。 如果未选择“允许公共访问”,则数据库只能通过专用终结点访问,而不能使用公共 IP 地址。 若要保持公共 Internet 访问,请选择“允许公共访问”,然后在“防火墙规则”部分下将 IP 地址或范围添加到允许列表中。 若要将 Azure 网络上的所有 Azure 服务添加到允许列表,请选择“允许从 Azure 内的任何 Azure 服务公开访问此服务器”。
除了公共访问之外,或者作为公共访问的备选,还可以配置专用终结点。 由于 Wingtip Toys 计划在其本地网络和 Azure 之间运行 VPN,因此我们将跳过专用终结点。 有关设置专用链接的详细信息,请参阅参考文档。
若要仅允许来自虚拟网络的连接,请选择“专用访问”,然后选择相应的“订阅”、“虚拟网络”和“子网”。 如果未选择虚拟网络和子网,将创建新的网络和子网。
最后,需要设置“专用 DNS 集成”以使用完全限定的域名而不是可能会发生变化的 IP 地址进行连接。 选择现有的 DNS 区域,或让 Azure 为你创建一个新 DNS 区域。
配置传输中加密
默认情况下,MySQL 灵活服务器仅接受使用 TLS(传输层安全性)版本 1.2 的加密连接。 如果要开发支持 TLS 1.3 的新应用程序,建议支持甚至强制使用更高的版本。 要创建,请执行以下步骤:
- 在 Azure 门户中,选择要连接到 TLS 1.3 的 MySQL 灵活服务器。
- 在“服务器参数”部分的“顶部”或“全部”筛选器的搜索栏中输入 tls_version。
- 在“VALUE”下拉列表中,选择 TLSv1.2 和/或 TLSv1.3,然后选择“保存”。
还可以通过将 require_secure_transport
参数的值设置为 off 来允许未加密的连接,但不建议这样做,除非绝对必要。
Microsoft Defender for Cloud
Microsoft Defender for Cloud 是一种检测并警告异常或可疑数据库活动的经济高效的方法。 若要启用它,请执行下列步骤:
在 Azure 门户中,选择要使用 Defender 保护的 MySQL 灵活服务器。
在“Microsoft Defender for Cloud”部分中,选择“启用”。
若要详细了解 Defender,包括如何配置警报,请参阅参考文档。
使用 Microsoft Entra ID 身份验证启用和连接
在开始之前,需要适当配置的用户托管标识 (UMI)。 此标识需要目录读取者角色,或以下个人权限:User.Read.All、GroupMember.Read.All 和 Application.Read.ALL。 有关如何添加这些权限的详细信息,请参阅此教程。
若要为 Azure Database for MySQL 灵活服务器启用 Microsoft Entra ID 身份验证,请执行下列步骤:
在 Azure 门户中,选择要使用 Microsoft Entra ID 连接到的 MySQL 灵活服务器。
在“安全性”部分中,选择“身份验证”。
在标题“权限分配对象”下,选择以下任一项:“仅 Microsoft Entra 身份验证”(禁用本机 MySQL 用户/密码登录)或“MySQL 和 Microsoft Entra 身份验证”(允许本机 MySQL 和 Microsoft Entra 登录)。
在标题“选择标识”下,选择本单元前面提到的 UMI。
选择作为“Microsoft Entra 管理员”的 Microsoft Entra 用户或组。如果选择组,则组的所有成员都是管理员。 只能有一个管理员用户或组,可以选择其他管理员替换以前的管理员。
启用 Microsoft Entra ID 后,现在可以通过执行以下步骤,使用 Microsoft Entra ID 身份验证连接到 MySQL 灵活服务器。
使用 Azure 对 shell 进行身份验证。 如果使用 Azure Cloud Shell,则你的标识已在会话中配置,因此无需登录。 如果使用未经身份验证的终端,请运行以下命令:
az login az account set --subscription <subscription_id>
在经过身份验证的 shell 中,运行以下命令以检索访问令牌:
az account get-access-token --resource-type oss-rdbms
若要登录,请复制提供的访问令牌,并将其用作密码。 若要直接将访问令牌传递到 mysql 客户端,请在 Linux 上运行以下命令:
mysql -h mydb.mysql.database.azure.com \ --user user@tenant.onmicrosoft.com \ --enable-cleartext-plugin \ --password=`az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken`
如果使用的是 PowerShell,请运行以下命令:
mysql -h mydb.mysql.database.azure.com \ --user user@tenant.onmicrosoft.com \ --enable-cleartext-plugin \ --password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken)
使用 MySQL Workbench 等其他客户端时,只需将访问令牌粘贴到密码字段中即可。
使用客户管理的密钥加密静态数据
可以使用 Azure 门户或使用 Azure CLI 配置静态数据加密。 但是,在使用客户管理的密钥启用加密之前,需要验证是否已满足下列先决条件:
用户托管标识 (UMI) 需要数据库的 UMI 才能访问密钥保管库。
启用 [soft-delete](/azure/key-vault/general/soft-delete-overview" /l "soft-delete-behavior)。 意外失去对加密密钥的访问权限可能会导致数据永久性丢失。 启用软删除作为保护层。 使用 Azure 门户创建新的密钥保管库时,默认启用软删除。
如果知道保管库的名称而不是 ID,可以通过运行以下命令来查找它:
az keyvault show --name $KEY_VAULT_NAME
若要在现有保管库上启用软删除,请运行以下命令:
az resource update --id $KEY_VAULT_ID --set properties.enableSoftDelete=true
启用清除保护。 由于用户或代码错误,软删除的密钥仍可能在保留期结束之前被错误清除。 使用清除保护时,会设置一个永久移除已删除对象前的保留期。
现在,你可以使用 Azure 门户或 Aure CLI 配置客户管理的密钥来加密静态数据。
如果使用 Azure 门户:
导航到灵活服务器实例,然后选择“安全性”下的“数据加密”。
选择“数据加密”下的“+ 选择”。 在“选择用户分配的托管标识”对话框中,选择先决条件中确定的用户分配的托管标识,选择标识,然后选择“添加”。
然后,选择“输入密钥标识符”并输入 ID,或者在“选择密钥”对话框中,通过指定标识符或通过选择密钥保管库和密钥来选择密钥。
选择“保存”。
如果你使用的是 Azure CLI,请运行以下命令:
az mysql flexible-server update --resource-group $RESOURCE_GROUP --name $TEST_SERVER --key $KEY_IDENTIFIER --identity $IDENTITY