Обмеження користувачів на копіювання ТІЛЬКИ резервних копій


13

Я хочу розгорнути доставку журналів у своєму виробничому середовищі. Це означає, що мені доведеться керувати ланцюгами резервних копій, які можуть бути порушені людьми, які роблять резервні копії для оновлення середовищ розробки. Якщо у мене є збій і я хочу використовувати резервні копії журналу для відновлення до певного моменту, мені також знадобиться резервна копія, взята розробником.

Це не відбудеться, якби розробники використовували лише копіювання ТОЛЬКО резервного копіювання. Отже, моє запитання: чи існує спосіб обмеження користувачів лише виконувати резервні копії COPY ONLY?

Відповіді:


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

Хороший запитання, на яке я не можу знайти хорошої відповіді, але ось такий. Що робити, якщо ви видалили всіх із ролі резервного копіювання, а потім створили завдання, яке використовувало Execute як команду для конкретного користувача, який викидає файл резервного копіювання copy_only у певне місце?


-1

Ви можете зробити це: 1) заборонити резервне копіювання (журнал та / або повне) для таких користувачів, але все ж 2) дозволяти їм розпочати роботу, яка виконує резервне копіювання певної бази даних (працює в обліковому записі, який надається дозвіл на резервне копіювання). У мене є таке рішення для автоматизації роботи PROD для автоматизованого відновлення баз даних PRE-PROD для цілей розслідування; конкретні користувачі мають доступ до роботи (у PRE-PROD), яка робить резервну копію лише для копіювання в PROD, переміщує файл з PROD у PRE-PROD і потім відновлює переміщену резервну копію на сервері PRE-PROD. Таким чином переконайтесь, що такі користувачі не мають можливості порушити логіку резервного копіювання в PROD.

(При дослідженні проблем розробники можуть спокусити взяти повну резервну копію, щоб відновити його на тестовому сервері, фактично перемістивши файл з джерела на тестовий сервер, не знаючи, що вони порушують логіку резервного копіювання ... тож я погоджуюся, що примушувати робити копію - важливо лише резервне копіювання.)


Чому ви стурбовані ПОВНОЮ резервною копією з copy_only, оскільки ОП стосується лише розбиття LSN?
Кін Шах

Що ж, взяття ПОВНОЇ резервної копії та переміщення файлу порушить логіку, правда? Якщо розробник робить це, переміщує файл на сервер розробок, то в наступній резервній копії LOG його значення FirstLSN відповідатиме CheckPointLSN відсутньої резервної копії FULL. Як вам потім відновити без відсутнього файлу?
Бенджамін RAIBAUD

Повна резервна копія не скидає LSN. Лише резервна копія журналу зробить це. Я думаю, ви змішуєте речі.
Кін Шах

1
О так, ви праві. це було б важливо, якщо замість резервного копіювання журналу ви робите різні резервні копії. Тоді переїхати в повний бік ризиковано. Я змішую речі, дякую.
Бенджамін RAIBAUD
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.