अनुमति देने से इनकार करना


9

भूमिका के लिए db_denycustomer, मैं केवल ग्राहक तालिका का स्तंभ कोड चयन योग्य होना चाहता हूं, और दूसरों में से कोई भी नहीं। तो मैंने ऐसा किया:

DENY SELECT ON dbo.customer TO db_denycustomer
GRANT SELECT ON dbo.customer (code) TO db_denycustomer

... और यह ठीक काम करता है। ठंडा! लेकिन, क्यों ?

मैंने संबंधित लेखों में जो पढ़ा है वह अनुमतियाँ स्टैक है, लेकिन DENYपूर्वता लेता है। इसके विपरीत, मेरे मामले में, ऐसा लगता है कि अंतिम अनुमति "क्वेरी" ने पूर्वता ले ली। निश्चित रूप से पर्याप्त है, अगर मैं उन्हें रिवर्स ऑर्डर में निष्पादित करता हूं, तो बाद DENYवाला कोड कॉलम भी छुपाता है।

क्या आप इस बारे में विस्तार से बता सकते हैं?

मैंने उस उपयोगकर्ता को डिफ़ॉल्ट db_datawriterऔर db_datareaderभूमिकाएं भी शामिल की हैं जिनके साथ मैंने परीक्षण किया था।

जवाबों:


10

यह पश्चगामी अनुकूलता के लिए प्रदान किया गया व्यवहार है । प्रलेखन अंश:

सावधानी एक तालिका-स्तर DENY स्तंभ-स्तर GRANT पर पूर्वता नहीं लेता है। अनुमति पदानुक्रम में इस असंगतता को पिछड़े संगतता के लिए संरक्षित किया गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.