Restreindre les utilisateurs aux copies de sauvegarde uniquement

13

Je cherche à déployer l'envoi de journaux dans mon environnement de production. Cela signifie que je devrai gérer des chaînes de sauvegarde qui pourraient être perturbées par des personnes prenant des sauvegardes pour rafraîchir les environnements de développement. Si j'ai un échec et que je souhaite utiliser les sauvegardes de journaux pour restaurer à un moment donné, j'aurai également besoin de la sauvegarde effectuée par le développeur.

Cela ne se produirait pas si les développeurs n'utilisaient que des sauvegardes COPY ONLY. Ma question est donc la suivante: existe-t-il un moyen de restreindre les utilisateurs pour qu'ils ne puissent effectuer que des sauvegardes COPY ONLY?

James Anderson
la source

Réponses:

12

Vous n'avez pas besoin de les faire utiliser COPY_ONLY. Seul un intermédiaire LOG BACKUPSbrisera le LSN. Ce que vous pouvez faire, c'est explicitement DENY BACKUP LOG to [user|group]privilégier les développeurs ou le groupe de développeurs. Sinon, créez simplement un ROLE et refusez le journal de sauvegarde à ce rôle. Ainsi, tous les utilisateurs de ce rôle hériteront des autorisations.

par exemple

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

Maintenant testez-le:

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.
Kin Shah
la source
2

Bonne question pour laquelle je ne trouve pas de bonne réponse, mais en voici une. Que se passe-t-il si vous supprimez tout le monde du rôle de sauvegarde, puis créez une tâche qui utilise la commande execute as pour un utilisateur spécifique qui supprime le fichier de sauvegarde copy_only à un emplacement spécifique?

ACDBA
la source
-1

Ce que vous pourriez être en mesure de faire est 1) de refuser des sauvegardes (journal et / ou complètes) à ces utilisateurs mais toujours 2) de leur permettre de démarrer un travail qui effectue une sauvegarde en copie seule d'une base de données spécifique (exécutée sous un compte qui est accordé autorisation de sauvegarde). J'ai une telle solution en place pour automatiser une restauration automatisée PROD vers PRE-PROD de bases de données à des fins d'enquête; des utilisateurs spécifiques ont accès à une tâche (dans PRE-PROD) qui effectue une sauvegarde en copie seule dans PROD, déplace le fichier de PROD vers PRE-PROD, puis restaure la sauvegarde déplacée sur le serveur PRE-PROD. Ainsi, vous vous assurez que ces utilisateurs n'ont aucun moyen de rompre la logique de sauvegarde sur PROD.

(En enquêtant sur les problèmes, les développeurs peuvent être tentés de faire une sauvegarde complète pour la restaurer sur un serveur de test en déplaçant réellement le fichier de la source vers le serveur de test sans savoir qu'ils cassent la logique de sauvegarde ... donc je suis d'accord que forcer la prise de copie -les seules sauvegardes sont importantes.)

Benjamin RAIBAUD
la source
Pourquoi vous préoccupez-vous de la sauvegarde COMPLÈTE avec copy_only car l'OP ne concerne que la rupture des LSN?
Kin Shah
Eh bien, prendre une sauvegarde COMPLÈTE puis éloigner le fichier briserait la logique, non? Si un développeur fait cela, déplace le fichier vers un serveur de développement, la prochaine sauvegarde LOG aurait alors sa valeur FirstLSN correspondant au CheckPointLSN de la sauvegarde FULL manquante. Comment restaurer ensuite sans le fichier manquant?
Benjamin RAIBAUD
Une sauvegarde complète ne réinitialise pas LSN. Seule une sauvegarde du journal le fera. Je suppose que vous mélangez les choses.
Kin Shah
1
Oh oui, tu as raison. cela importerait si, au lieu des sauvegardes de journaux, vous effectuez des sauvegardes différentes. Alors s'éloigner complètement est risqué. Je mélange les choses, merci.
Benjamin RAIBAUD