डिफ़ॉल्ट Apache HBase कॉन्फ़िगरेशन के साथ, सभी को सिस्टम में उपलब्ध सभी तालिकाओं से पढ़ने और लिखने की अनुमति है। कई एंटरप्राइज़ सेटअप के लिए, इस प्रकार की नीति अस्वीकार्य है।
व्यवस्थापक फ़ायरवॉल सेट कर सकते हैं जो यह तय करते हैं कि किन मशीनों को HBase के साथ संचार करने की अनुमति है। हालांकि, जो मशीनें फ़ायरवॉल को पास कर सकती हैं, उन्हें अभी भी सभी तालिकाओं से पढ़ने और लिखने की अनुमति है। इस तरह का तंत्र प्रभावी है लेकिन अपर्याप्त है क्योंकि HBase अभी भी एक ही क्लाइंट मशीन का उपयोग करने वाले कई उपयोगकर्ताओं के बीच अंतर नहीं कर सकता है, और HBase तालिका, स्तंभ परिवार, या स्तंभ क्वालीफायर पहुंच के संबंध में अभी भी कोई विवरण नहीं है।
इस पोस्ट में, हम चर्चा करेंगे कि कैसे केर्बरोस का उपयोग हडूप और एचबेस के साथ उपयोगकर्ता प्रमाणीकरण प्रदान करने के लिए किया जाता है। , और HBase कैसे लागू करता है उपयोगकर्ता प्राधिकरण डेटा के एक निर्दिष्ट सेट पर विशेष कार्रवाइयों के लिए उपयोगकर्ताओं को अनुमति देने के लिए।
सुरक्षित HBase:प्रमाणीकरण और प्राधिकरण
एक सुरक्षित HBase का उद्देश्य खोजी लोगों, अनधिकृत/अनधिकृत उपयोगकर्ताओं और नेटवर्क-आधारित हमलों से बचाव करना है। यह उन अधिकृत उपयोगकर्ताओं से सुरक्षा नहीं करता है जो गलती से सभी डेटा हटा देते हैं।
HBase को उपयोगकर्ता प्रमाणीकरण . प्रदान करने के लिए कॉन्फ़िगर किया जा सकता है , जो सुनिश्चित करता है कि केवल अधिकृत उपयोगकर्ता ही HBase के साथ संचार कर सकते हैं। प्राधिकरण प्रणाली को आरपीसी स्तर पर लागू किया गया है, और यह सरल प्रमाणीकरण और सुरक्षा परत (एसएएसएल) पर आधारित है, जो (अन्य प्रमाणीकरण तंत्रों के बीच) केर्बरोस का समर्थन करता है। SASL प्रति कनेक्शन आधार ("hbase.rpc.protection" कॉन्फ़िगरेशन प्रॉपर्टी) के आधार पर प्रमाणीकरण, एन्क्रिप्शन बातचीत और/या संदेश अखंडता सत्यापन की अनुमति देता है।
उपयोगकर्ता प्रमाणीकरण . को सक्षम करने के बाद अगला चरण एक व्यवस्थापक को उपयोगकर्ता प्राधिकरण नियमों की एक श्रृंखला को परिभाषित करने की क्षमता प्रदान करना है जो विशेष कार्यों की अनुमति देता है या अस्वीकार करता है। प्राधिकरण प्रणाली, जिसे एक्सेस कंट्रोलर कोप्रोसेसर या एक्सेस कंट्रोल लिस्ट (ACL) के रूप में भी जाना जाता है, HBase 0.92 (CDH4) से उपलब्ध है और तालिका/परिवार के साथ प्राधिकरण नीति (पढ़ें/लिखें/बनाएं/व्यवस्थापन) को परिभाषित करने की क्षमता देती है। /क्वालिफायर ग्रैन्युलैरिटी, एक निर्दिष्ट उपयोगकर्ता के लिए।
केर्बरोस
Kerberos एक नेटवर्क प्रमाणीकरण प्रोटोकॉल है। इसे गुप्त-कुंजी क्रिप्टोग्राफ़ी का उपयोग करके क्लाइंट/सर्वर अनुप्रयोगों के लिए मजबूत प्रमाणीकरण प्रदान करने के लिए डिज़ाइन किया गया है। Kerberos प्रोटोकॉल मजबूत क्रिप्टोग्राफी (AES, 3DES,…) का उपयोग करता है ताकि एक क्लाइंट एक असुरक्षित नेटवर्क कनेक्शन में सर्वर (और इसके विपरीत) को अपनी पहचान साबित कर सके। क्लाइंट और सर्वर द्वारा अपनी पहचान साबित करने के लिए Kerberos का उपयोग करने के बाद, वे अपने व्यवसाय के बारे में जाने के दौरान गोपनीयता और डेटा अखंडता को सुनिश्चित करने के लिए अपने सभी संचार एन्क्रिप्ट भी कर सकते हैं।
टिकट विनिमय प्रोटोकॉल
उच्च स्तर पर, Kerberos का उपयोग करके किसी सेवा तक पहुँचने के लिए, प्रत्येक क्लाइंट को तीन चरणों का पालन करना चाहिए:
- Kerberos प्रमाणीकरण:क्लाइंट Kerberos प्रमाणीकरण सर्वर के लिए स्वयं को प्रमाणित करता है और एक टिकट अनुदान टिकट (TGT) प्राप्त करता है।
- केर्बेरोस प्राधिकरण:ग्राहक टिकट देने वाले सर्वर से एक सेवा टिकट का अनुरोध करता है, जो अनुरोध के साथ भेजा गया ग्राहक टीजीटी मान्य होने पर टिकट और सत्र कुंजी जारी करता है।
- सेवा अनुरोध:क्लाइंट सेवा टिकट का उपयोग उस सर्वर को प्रमाणित करने के लिए करता है जो क्लाइंट द्वारा उपयोग की जा रही सेवा प्रदान कर रहा है (उदा. HDFS, HBase, …)
HBase, HDFS, ZooKeeper SASL
चूंकि HBase HDFS और ZooKeeper पर निर्भर करता है, इसलिए सुरक्षित HBase सुरक्षित HDFS और सुरक्षित ZooKeeper पर निर्भर करता है। इसका मतलब है कि HBase सर्वर को HDFS और ZooKeeper के साथ संचार करने के लिए, जैसा कि ऊपर बताया गया है, एक सुरक्षित सेवा सत्र बनाने की आवश्यकता है।
HBase द्वारा लिखी गई सभी फाइलें HDFS में संग्रहित होती हैं। यूनिक्स फाइल सिस्टम की तरह, एचडीएफएस द्वारा प्रदान किया गया अभिगम नियंत्रण उपयोगकर्ताओं, समूहों और अनुमतियों पर आधारित है। HBase द्वारा बनाई गई सभी फाइलों में उपयोगकर्ता के रूप में "hbase" है, लेकिन यह एक्सेस कंट्रोल सिस्टम द्वारा प्रदान किए गए उपयोगकर्ता नाम पर आधारित है, और हर कोई जो मशीन तक पहुंच सकता है वह संभावित रूप से उपयोगकर्ता "hbase" के रूप में "sudo" करने में सक्षम है। सुरक्षित एचडीएफएस प्रमाणीकरण चरण जोड़ता है जो गारंटी देता है कि "एचबेस" उपयोगकर्ता विश्वसनीय है।
ज़ूकीपर के पास प्रत्येक ज़नोड पर एक एक्सेस कंट्रोल लिस्ट (एसीएल) है जो उपयोगकर्ताओं को एचडीएफएस के समान तरीके से उपयोगकर्ता की जानकारी के आधार पर पढ़ने/लिखने की अनुमति देता है।
HBase ACL
अब जबकि हमारे उपयोगकर्ता Kerberos के माध्यम से प्रमाणित हैं, हमें यकीन है कि जो उपयोगकर्ता नाम हमें प्राप्त हुआ है वह हमारे विश्वसनीय उपयोगकर्ताओं में से एक है। कभी-कभी यह पर्याप्त विवरण नहीं होता है - हम यह नियंत्रित करना चाहते हैं कि एक निर्दिष्ट उपयोगकर्ता तालिका को पढ़ने या लिखने में सक्षम है। ऐसा करने के लिए, HBase एक प्राधिकरण तंत्र प्रदान करता है जो निर्दिष्ट उपयोगकर्ताओं के लिए प्रतिबंधित पहुंच की अनुमति देता है।
इस सुविधा को सक्षम करने के लिए, आपको एक्सेस कंट्रोलर कोप्रोसेसर को मास्टर और रीजन सर्वर कोप्रोसेसर कक्षाओं के तहत hbase-site.xml में जोड़कर सक्षम करना होगा। (यहां देखें कि HBase सुरक्षा कॉन्फ़िगरेशन कैसे सेटअप करें।)
एक कोप्रोसेसर कोड है जो प्रत्येक HBase क्षेत्र सर्वर और/या मास्टर के अंदर चलता है। यह अधिकांश ऑपरेशनों को इंटरसेप्ट करने (डालने, पाने, हटाने,…) को रोकने में सक्षम है, और ऑपरेशन के पहले और/या बाद में मनमाना कोड चला सकता है।
प्रत्येक ऑपरेशन से पहले कुछ कोड निष्पादित करने की इस क्षमता का उपयोग करते हुए, एक्सेस कंट्रोलर कोप्रोसेसर उपयोगकर्ता के अधिकारों की जांच कर सकता है और तय कर सकता है कि उपयोगकर्ता ऑपरेशन को निष्पादित कर सकता है या नहीं।
HBase शेल में कुछ कमांड होते हैं जो एक व्यवस्थापक को उपयोगकर्ता अधिकारों को प्रबंधित करने की अनुमति देता है:
अनुदान [टेबल] [परिवार] [क्वालीफायर]
निरस्त [टेबल] [परिवार] [क्वालीफायर]
जैसा कि आप देख सकते हैं, एक व्यवस्थापक के पास तालिका स्कीमा के आधार पर उपयोगकर्ता पहुंच को प्रतिबंधित करने की क्षमता होती है:
- टेबल-एक्स/फ़ैमिली-वाई के लिए उपयोगकर्ता-डब्ल्यू को केवल पढ़ने के अधिकार दें (
'उपयोगकर्ता-डब्ल्यू', 'आर', 'टेबल-एक्स', 'फ़ैमिली-वाई' प्रदान करें
) - यूजर-डब्ल्यू को क्वालिफायर-जेड को पूरा पढ़ने/लिखने का अधिकार दें (
'यूजर-डब्ल्यू', 'आरडब्ल्यू', 'टेबल-एक्स', 'फैमिली-वाई', 'क्वालिफायर-जेड' प्रदान करें। /कोड> )
एक व्यवस्थापक के पास वैश्विक अधिकार प्रदान करने की क्षमता भी होती है, जो क्लस्टर स्तर पर काम करते हैं, जैसे टेबल बनाना, क्षेत्रों को संतुलित करना, क्लस्टर को बंद करना आदि:
- User-W को टेबल बनाने की क्षमता दें (
'User-W', 'C'
दें) ) - उपयोगकर्ता-डब्ल्यू को क्लस्टर प्रबंधित करने की क्षमता दें (
'उपयोगकर्ता-डब्ल्यू', 'ए' प्रदान करें
)
सभी अनुमतियां एक्सेस कंट्रोलर कोप्रोसेसर द्वारा बनाई गई तालिका में संग्रहीत की जाती हैं, जिसे _acl_ कहा जाता है। इस तालिका की प्राथमिक कुंजी तालिका का नाम है जिसे आप ग्रांट कमांड में निर्दिष्ट करते हैं। _acl_ तालिका में केवल एक कॉलम परिवार होता है और प्रत्येक क्वालीफायर किसी विशेष तालिका/उपयोगकर्ता के अधिकारों की ग्रैन्युलैरिटी का वर्णन करता है। मान में दिए गए वास्तविक अधिकार शामिल हैं।
जैसा कि आप देख सकते हैं, HBase शेल कमांड डेटा को स्टोर करने के तरीके से कड़ाई से संबंधित हैं। ग्रांट कमांड एक पंक्ति को जोड़ता या अपडेट करता है, और रिवोक कमांड _acl_ तालिका से एक पंक्ति को हटा देता है।
हुड के नीचे एक्सेस नियंत्रक
जैसा कि पहले उल्लेख किया गया है, एक्सेस कंट्रोलर कोप्रोसेसर प्रत्येक उपयोगकर्ता अनुरोध को इंटरसेप्ट करने की क्षमता का उपयोग करता है, और जांचता है कि उपयोगकर्ता के पास संचालन निष्पादित करने के अधिकार हैं या नहीं।
प्रत्येक ऑपरेशन के लिए, एक्सेस कंट्रोलर को यह देखने के लिए _acl_ तालिका से पूछताछ करने की आवश्यकता होती है कि उपयोगकर्ता के पास ऑपरेशन को निष्पादित करने के अधिकार हैं या नहीं।
हालांकि, इस ऑपरेशन का प्रदर्शन पर नकारात्मक प्रभाव पड़ सकता है। इस समस्या का समाधान हठ के लिए _acl_ तालिका और अधिकारों की खोज में तेजी लाने के लिए ZooKeeper का उपयोग करना है। प्रत्येक क्षेत्र सर्वर _acl_ तालिका को मेमोरी में लोड करता है और ZkPermissionWatcher द्वारा परिवर्तनों की सूचना प्राप्त करता है। इस तरह, हर क्षेत्र के सर्वर का हर बार अद्यतन मूल्य होता है और प्रत्येक अनुमति जाँच एक इन-मेमोरी मैप का उपयोग करके की जाती है।
रोडमैप
जबकि Kerberos एक स्थिर, अच्छी तरह से परीक्षण और प्रमाणित प्रमाणीकरण प्रणाली है, HBase ACL सुविधा अभी भी बहुत बुनियादी है और इसके शब्दार्थ अभी भी विकसित हो रहे हैं। HBASE-6096 ACL सुविधा के v2 में शिप करने के लिए सभी सुधारों के संदर्भ के रूप में अम्ब्रेला JIRA है।
प्राधिकरण और अभिगम नियंत्रण पर एक अन्य खुला विषय प्रति-की-वैल्यू सुरक्षा प्रणाली लागू कर रहा है (HBASE-6222 ) जो एक सुरक्षा टैग से जुड़े एक ही सेल पर अलग-अलग मान रखने की क्षमता देगा। यह उपयोगकर्ता की अनुमति के आधार पर किसी विशेष जानकारी को दिखाने की अनुमति देगा।
निष्कर्ष
HBase Security दो अतिरिक्त सुविधाएं जोड़ता है जो आपको अपने डेटा को स्निफ़र्स या अन्य नेटवर्क हमलों (उपयोगकर्ताओं को प्रमाणित करने और सेवाओं के बीच संचार एन्क्रिप्ट करने के लिए Kerberos का उपयोग करके) से बचाने की अनुमति देता है, और आपको उपयोगकर्ता प्राधिकरण नीतियों को परिभाषित करने, संचालन को प्रतिबंधित करने और डेटा दृश्यता को सीमित करने की अनुमति देता है। विशेष उपयोगकर्ता।
Matteo Bertozzi Spotify में एक सॉफ्टवेयर इंजीनियर और Cloudera में HBase सलाहकार हैं।