実稼働環境にログ配布を展開したいと考えています。これは、開発環境を更新するためにバックアップを取る人々によって中断される可能性があるバックアップチェーンを管理する必要があることを意味します。障害が発生し、ログバックアップを使用して特定の時点に復元したい場合は、開発者が作成したバックアップも必要になります。
開発者がコピーのみのバックアップのみを使用している場合、これは起こりません。だから私の質問は次のとおりです。コピーのみのバックアップのみを実行できるようにユーザーを制限する方法はありますか?
実稼働環境にログ配布を展開したいと考えています。これは、開発環境を更新するためにバックアップを取る人々によって中断される可能性があるバックアップチェーンを管理する必要があることを意味します。障害が発生し、ログバックアップを使用して特定の時点に復元したい場合は、開発者が作成したバックアップも必要になります。
開発者がコピーのみのバックアップのみを使用している場合、これは起こりません。だから私の質問は次のとおりです。コピーのみのバックアップのみを実行できるようにユーザーを制限する方法はありますか?
回答:
あなたはそれらを使用させる必要はありません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.
できるのは、1)そのようなユーザーに対してバックアップ(ログおよび/またはフル)を拒否するが、それでも2)特定のデータベースのコピーのみのバックアップを実行するジョブを許可する(許可されたアカウントで実行する)バックアップ許可)。調査目的でデータベースのPRODからPRE-PRODへの自動復元を自動化するためのこのようなソリューションがあります。特定のユーザーは、PRODでコピーのみのバックアップを実行し、ファイルをPRODからPRE-PRODに移動し、移動したバックアップをPRE-PRODサーバーに復元するジョブ(PRE-PROD)にアクセスできます。したがって、そのようなユーザーがPRODのバックアップロジックを破る方法がないことを確認してください。
(問題を調査するとき、開発者は、バックアップロジックを壊していることを知らずに、ファイルをソースからテストサーバーに実際に移動することにより、テストサーバーで復元するために完全バックアップを作成したいと思うかもしれません... -バックアップのみが重要です。)