适用于: Azure Database for PostgreSQL 灵活型服务器
可以将管理锁(如 CanNotDelete 或 ReadOnly)应用于 Azure Database for PostgreSQL 灵活服务器实例,以保护它们免受意外删除或修改。 这些锁在控制平面上运行并替代用户权限,提供额外的资源保护层。
锁定类型
锁定类型 | Description |
---|---|
CanNotDelete | 用户可以读取和修改设置,但不能删除服务器资源。 |
ReadOnly | 用户只能读取;它们无法更新或删除服务器。 类似于 “读取者” 角色。 |
先决条件
- 订阅中现有的 Azure Database for PostgreSQL 灵活服务器实例。
锁定行为和继承
- 可以在 订阅、 资源组或 服务器 级别应用锁。
- 子资源从其父级继承锁; 限制性最大的锁 优先。
- 锁定会限制 ARM作(门户、CLI、API), 但不阻止 SQL 数据平面作(如编辑表或架构)。
使用 Azure CLI 或 ARM 应用锁
Azure CLI
若要在现有服务器上应用 CanNotDelete 锁,请执行以下作:
az lock create \
--name PreventDelete \
--lock-type CanNotDelete \
--resource-group MyResourceGroup \
--resource-type Microsoft.DBforPostgreSQL/flexibleServers \
--resource-name MyFlexibleServer
若要删除锁,请执行以下命令:
az lock delete \
--name PreventDelete \
--resource-group MyResourceGroup \
--resource-type Microsoft.DBforPostgreSQL/flexibleServers \
--resource-name MyFlexibleServer
ARM 模板
将锁应用于 Azure PostgreSQL DB 资源时,请使用 Microsoft.Authorization/locks Azure 资源管理器 (ARM) 资源。
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2016-09-01",
"name": "serverLock",
"scope": "[resourceId('Microsoft.DBforPostgreSQL/flexibleServers', parameters('serverName'))]",
"properties": {
"level": "CanNotDelete",
"notes": "Prevent accidental deletion of PostgreSQL server."
}
}
Permissions
创建或删除锁需要权限,这些权限 Microsoft.Authorization/locks/*
在内置角色(如 所有者 和 用户访问管理员)中可用。
最佳做法和注意事项
- 非常适合需要删除安全措施 的生产工作负荷 。
- 对于 高可用性或后端服务器,请考虑在部署时实现锁。
- 确保在预配之前解锁 网络资源(VNET/子网), 然后重新应用部署后锁定以避免干扰。
- 当锁阻止服务器删除时,它们 不会 限制破坏性的 SQL作。 根据需要强制实施 SQL 级别策略。
结论
使用 ARM 管理锁有助于防止 PostgreSQL 灵活服务器意外删除,而不会妨碍日常作。 请考虑将其添加到自动化脚本和部署策略,以便更安全的生产工作流。