केवल बैकअप लेने के लिए उपयोगकर्ताओं को प्रतिबंधित करना


13

मैं अपने उत्पादन वातावरण में लॉग शिपिंग तैनात करना चाहता हूं। इसका मतलब है कि मुझे बैकअप चेन का प्रबंधन करना होगा, जो विकास के वातावरण को ताज़ा करने के लिए बैकअप लेने वाले लोगों द्वारा बाधित हो सकता है। अगर मुझे कोई विफलता है और एक समय में एक बिंदु को पुनर्स्थापित करने के लिए लॉग बैकअप का उपयोग करना चाहते हैं, तो मुझे डेवलपर द्वारा उठाए गए बैकअप की भी आवश्यकता होगी।

यदि डेवलपर्स केवल कॉपी बैकअप का उपयोग करते हैं तो ऐसा नहीं होगा। तो मेरा सवाल यह है: क्या उपयोगकर्ताओं को केवल COPY केवल बैकअप करने में सक्षम होने के लिए प्रतिबंधित करने का एक तरीका है?

जवाबों:


12

आपको उनका उपयोग करने की आवश्यकता नहीं है COPY_ONLY। केवल एक इंटरमीडिएट LOG BACKUPSटूट जाएगा LSN। आप जो कर सकते हैं वह स्पष्ट रूप DENY BACKUP LOG to [user|group]से डेवलपर्स या डेवलपर समूह के लिए विशेषाधिकार है। वैकल्पिक रूप से, बस एक रोल बनाएं और उस भूमिका के लिए बैकअप लॉग को अस्वीकार करें। तो उस भूमिका के सभी उपयोगकर्ता अनुमतियाँ प्राप्त करेंगे।

जैसे

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) उन्हें एक नौकरी शुरू करने की अनुमति देते हैं जो एक विशिष्ट डेटाबेस का केवल-प्रतिलिपि बैकअप करते हैं (एक खाते के तहत चल रहा है जो दी गई है बैकअप अनुमति)। मेरे पास जांच के प्रयोजनों के लिए डेटाबेस के पूर्व-पीआरडी स्वचालित स्वचालित पुनर्स्थापनों के लिए एक पीआरडी को स्वचालित करने के लिए ऐसा समाधान है; विशिष्ट उपयोगकर्ताओं के पास एक नौकरी है (PRE-PROD में) जो केवल PROD में एक प्रति-बैकअप करता है, PROD से PRE-PROD तक फ़ाइल ले जाता है और फिर PRE-PROD सर्वर पर स्थानांतरित बैकअप को पुनर्स्थापित करता है। इस प्रकार यह सुनिश्चित करना कि ऐसे उपयोगकर्ताओं के पास PROD पर बैकअप लॉजिक को तोड़ने का कोई तरीका नहीं है।

(जब मुद्दों की जांच करते हैं, तो डेवलपर्स को परीक्षण सर्वर पर इसे पुनर्स्थापित करने के लिए पूर्ण बैकअप लेने का प्रलोभन दिया जा सकता है, वास्तव में फ़ाइल को स्रोत से परीक्षण सर्वर में ले जाए बिना यह जाने कि वे बैकअप तर्क को तोड़ रहे हैं ... इसलिए मैं सहमत हूं कि प्रतिलिपि लेने के लिए मजबूर करना -पूरी तरह से बैकअप महत्वपूर्ण है।)


आप copy_only के साथ पूर्ण बैकअप के लिए क्यों चिंतित हैं क्योंकि OP केवल LSNs को तोड़ने से संबंधित है?
परिजन शाह

ठीक है, एक पूर्ण बैकअप लेने और फिर फ़ाइल को दूर ले जाना तर्क को तोड़ देगा, है ना? यदि कोई डेवलपर ऐसा करता है, तो फ़ाइल को एक देव सर्वर पर ले जाता है, तो अगले लॉग बैकअप में उसका फर्स्टएलएलएसएन मान लापता फुल बैकअप के चेकपॉवेल्सएनएन से मेल खाएगा। फिर आप कैसे लापता फ़ाइल के बिना पुनर्स्थापित कर सकते हैं?
बेंजामिन रायबाड

एक पूर्ण बैकअप एलएसएन को रीसेट नहीं करता है। केवल एक लॉग बैकअप यह करेगा। मुझे लगता है कि आप चीजों को मिला रहे हैं।
परिजन शाह

1
ओह हाँ, आप सही हो। अगर आप बैकअप के बजाय लॉग बैकअप करते हैं तो इससे कोई फर्क नहीं पड़ेगा। फिर पूर्ण दूर जाना जोखिम भरा है। मैं चीजों को मिला रहा हूं, धन्यवाद।
बेंजामिन रायबाड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.