意外删除关键的 Azure 资源(例如 Azure Database for MySQL 灵活服务器)可能会中断作并损害业务连续性。 本文概述了如何使用 Azure 资源锁和 Azure Policy 防止意外删除,以及如何使用 Azure CLI 恢复已删除的服务器。
Azure 提供内置机制来保护资源免受意外删除的影响。 这些机制包括:
- Azure 资源锁:防止删除资源或资源组。
- Azure Policy:强制实施组织标准并保护关键基础结构。
- Azure CLI 恢复命令:尽可能还原已删除的服务器。
防止意外删除
可以在资源和资源组级别应用资源锁。 这些锁会覆盖用户权限以防止删除。
锁定 MySQL 灵活服务器
az lock create \
--name "PreventDeleteLock" \
--resource-group <RESOURCE_GROUP_NAME> \
--resource-name <MYSQL_SERVER_NAME> \
--resource-type "Microsoft.DBforMySQL/flexibleServers" \
--lock-type CanNotDelete
验证锁
az lock list \
--resource-group <RESOURCE_GROUP_NAME> \
--resource-name <MYSQL_SERVER_NAME> \
--resource-type "Microsoft.DBforMySQL/flexibleServers" \
-o table
删除锁
az lock delete \
--name "PreventDeleteLock" \
--resource-group <RESOURCE_GROUP_NAME> \
--resource-name <MYSQL_SERVER_NAME> \
--resource-type "Microsoft.DBforMySQL/flexibleServers"
锁定整个资源组
az lock create \
--name "PreventDeleteGroupLock" \
--resource-group <RESOURCE_GROUP_NAME> \
--lock-type CanNotDelete
恢复已删除的服务器
如果意外删除了服务器,则可以使用 Azure CLI 和时间点还原(PITR)进行恢复(如果备份可用)。
使用 Azure CLI 还原
az mysql flexible-server restore \
--resource-group <RESOURCE_GROUP_NAME> \
--name <NEW_SERVER_NAME> \
--source-server <DELETED_SERVER_NAME> \
--restore-time <TIMESTAMP>
注释
确保将 <TIMESTAMP> 替换为删除前的时间戳。
最佳做法
- 将锁应用于
CanNotDelete关键资源和资源组。 - 使用 Azure Policy 跨订阅强制使用锁定。
- 定期测试还原过程,以确保恢复就绪。
- 使用 Azure 活动日志监视锁定配置和审核更改。