限制用户仅复制备份


13

我希望在我的生产环境中部署日志传送。这意味着我将不得不管理备份链,而备份链可能会因人们进行备份以刷新开发环境而中断。如果发生故障,并且想使用日志备份还原到某个时间点,则还需要开发人员进行备份。

如果开发人员仅使用“仅复制”备份,则不会发生这种情况。所以我的问题是:是否有一种方法可以限制用户只能执行“仅复制”备份?

Answers:


12

您不需要让他们使用COPY_ONLY。只有中级LOG BACKUPS才能打破僵局LSN。您可以做的是明确DENY BACKUP LOG to [user|group]授予开发人员或开发人员组特权。或者,只需创建一个ROLE并拒绝该角色的备份日志即可。因此,该角色中的所有用户都将继承权限。

例如

USE test_kin
GO
CREATE ROLE [deny_log_backups]
GO
USE [test_kin]
GO
CREATE USER [Kin] FOR LOGIN [Kin]
GO
ALTER USER [Kin] WITH DEFAULT_SCHEMA=[dbo]
GO
use test_kin
GO
DENY BACKUP LOG TO [deny_log_backups]
GO
USE test_kin
GO
EXEC sp_addrolemember N'deny_log_backups', N'kin'
GO

现在测试一下:

backup database [test_kin]
to disk = 'C:\crap_test\kin_test_full.bak'
with compression, stats =10, init

---- ### success for FULL BACKUP 

backup log [test_kin]
to disk = 'C:\crap_test\kin_test_log.log'

 --- $$$ ERROR MESSAGE 

Msg 262, Level 14, State 1, Line 3
BACKUP LOG permission denied in database 'test_kin'.
Msg 3013, Level 16, State 1, Line 3
BACKUP LOG is terminating abnormally.

2

我找不到很好的答案的好问题,但这是一个。如果您取消了所有人的备份角色,然后创建了一个任务,该任务使用特定用户的执行方式命令将copy_only备份文件放到了特定位置,该怎么办?


-1

您可能能够做的是1)拒绝对此类用户的备份(日志和/或完整),但仍然2)允许他们启动执行特定数据库的仅副本备份的工作(在已授予帐户的情况下运行)备份权限)。我有这样一个解决方案,可以将PROD自动化为PRO-PROD数据库自动还原以进行调查;特定用户可以访问作业(在PRE-PROD中),该作业在PROD中执行仅复制备份,将文件从PROD移至PRE-PROD,然后在PRE-PROD服务器上还原移动的备份。因此,确保此类用户没有办法破坏PROD上的备份逻辑。

(在调查问题时,开发人员可能会通过将文件实际从源移动到测试服务器,而又不知道他们破坏了备份逻辑,因此很想在测试服务器上进行完整备份以将其还原到测试服务器上。因此,我同意强制进行复制-仅备份很重要。)


您为什么要用copy_only进行完整备份,因为OP只关心破坏LSN?
Kin Shah 2014年

好吧,进行完整备份然后移走文件会破坏逻辑,对吗?如果开发人员这样做,则将文件移至开发服务器,则下一个LOG备份将使其FirstLSN值与丢失的FULL备份的CheckPointLSN相匹配。如何在没有丢失文件的情况下还原?
本杰明·赖伯2014年

完全备份不会重置LSN。只有日志备份可以做到。我猜你正在把事情弄混。
Kin Shah

1
哦,是的,你是对的。如果您执行差异备份而不是日志备份,那将很重要。然后搬走很危险。我把事情搞混了,谢谢。
本杰明·赖伯2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.