Cassandra JMX प्रमाणीकरण और प्राधिकरण: उपयोगकर्ता बनाएँ

⚡ स्मार्ट सारांश

Cassandra सुरक्षा आंतरिक प्रमाणीकरण, भूमिका अनुमतियों, फ़ायरवॉल नियमों और JMX एक्सेस कंट्रोल पर आधारित है। यह पृष्ठ दिखाता है कि प्रत्येक स्तर को कैसे सक्षम किया जाए, उपयोगकर्ता कैसे बनाए जाएं, अनुमतियां कैसे प्रदान की जाएं और रिमोट नोडटूल एक्सेस को कैसे सुरक्षित किया जाए।

  • 🔐 दो परतें: प्रमाणीकरण यह साबित करता है कि उपयोगकर्ता कौन है; प्राधिकरण यह तय करता है कि वह उपयोगकर्ता क्या कर सकता है।
  • ⚙️ इसे सक्षम करें: ये दोनों डिफ़ॉल्ट रूप से बंद होते हैं और ऑथेंटिकेटर और ऑथराइज़र सेटिंग्स के माध्यम से चालू होते हैं।
  • 👤 डिफ़ॉल्ट खाता: कैसेंड्रा का अंतर्निर्मित सुपरयूजर हर दूसरे खाते को बनाता है, इसलिए इसका पासवर्ड तुरंत बदल दें।
  • 🔑 अनुदान मॉडल: GRANT कमांड के साथ SELECT, MODIFY और ALTER जैसी अनुमतियाँ प्रति संसाधन प्रदान की जाती हैं।
  • 📡 पोर्ट नियंत्रण: नोड्स के बीच 7000, 7001, 7199 और 9042 पोर्ट खोलें, और JMX प्रमाणीकरण बनाए रखें।

Cassandra जेएमएक्स प्रमाणीकरण और प्राधिकरण

इसमें दो प्रकार की सुरक्षा होती है Apache Cassandra और डेटास्टैक्स एंटरप्राइज।

  • आंतरिक प्रमाणीकरण
  • प्राधिकरण

आंतरिक प्रमाणीकरण और प्राधिकरण क्या है

आंतरिक प्रमाणीकरण मूल रूप से उपयोगकर्ता कनेक्शन को मान्य करना है। उपयोगकर्ता को लॉगिन और पासवर्ड के साथ प्रमाणित किया जाता है। सभी उपयोगकर्ता खाते प्रबंधित किए जाते हैं। Cassandra आंतरिक रूप से।

आंतरिक प्राधिकरण उपयोगकर्ता की अनुमतियों से संबंधित है। यह निर्धारित करता है कि उपयोगकर्ता कौन-कौन से कार्य कर सकता है। उदाहरण के लिए, हम यह अनुमतियाँ दे सकते हैं कि किस उपयोगकर्ता के पास केवल डेटा पढ़ने की अनुमति है, किस उपयोगकर्ता के पास डेटा लिखने की अनुमति है और किस उपयोगकर्ता के पास डेटा हटाने की अनुमति है।

हालांकि, केर्बेरोस (क्रेडेंशियल्स को सुरक्षित रूप से प्रबंधित करने के लिए केर्बेरोस का उपयोग किया जाता है) और एलडीएपी (खातों के बारे में आधिकारिक जानकारी रखने के लिए एलडीएपी का उपयोग किया जाता है, जैसे कि उन्हें किन चीजों तक पहुंचने की अनुमति है) के साथ बाहरी रूप से प्रमाणीकरण को भी नियंत्रित किया जा सकता है।

बाह्य प्रमाणीकरण वह प्रमाणीकरण है जो केर्बेरोस और LDAP के साथ समर्थित है। Apache Cassandra बाह्य प्रमाणीकरण का समर्थन नहीं करता.

केवल DataStax Enterprise ही Kerberos और LDAP के साथ बाहरी प्रमाणीकरण का समर्थन करता है, जबकि आंतरिक प्रमाणीकरण दोनों में समर्थित है। Apache Cassandra साथ ही साथ डेटास्टैक्स एंटरप्राइज भी।

प्रमाणीकरण और प्राधिकरण कॉन्फ़िगर करें

In Cassandraडिफ़ॉल्ट रूप से, प्रमाणीकरण और प्राधिकरण विकल्प अक्षम हैं। प्रमाणीकरण और प्राधिकरण को सक्षम करने के लिए आपको cassandra.yaml फ़ाइल को कॉन्फ़िगर करना होगा।

cassandra.yaml फ़ाइल खोलें और आंतरिक प्रमाणीकरण और प्राधिकरण से संबंधित पंक्तियों को अनकमेंट करें, जैसा कि नीचे दिखाया गया है।

cassandra.yaml में authenticator और authorizer लाइनें अनकमेंट की गई हैं

  • cassandra.yaml में, डिफ़ॉल्ट रूप से, ऑथेंटिकेटर का मान 'AllowAllAuthenticator' होता है। इस ऑथेंटिकेटर मान को 'AllowAllAuthenticator' से बदलकर 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator' कर दें।
  • इसी प्रकार, cassandra.yaml में, डिफ़ॉल्ट रूप से, ऑथराइज़र का मान 'AllowAllAuthorizer' होगा। इस ऑथराइज़र मान को 'AllowAllAuthorizer' से बदलकर 'com.datastax.bdp.cassandra.auth' कर दें।Cassandra'प्राधिकृतकर्ता'.

वे दोनों क्लास नाम DataStax Enterprise के मान हैं। ओपन-सोर्स पर Apache Cassandra वही सेटिंग्स लेती हैं PasswordAuthenticator और CassandraAuthorizerऔर फिर क्रेडेंशियल्स उसमें रहते हैं system_auth कीस्पेस, जिसका प्रतिकृति कारक एक से ऊपर बढ़ाया जाना चाहिए।

प्रवेश किया

अब प्रमाणीकरण सक्षम है, यदि आप किसी भी कुंजीस्थान तक पहुँचने का प्रयास करते हैं, Cassandra एक त्रुटि लौटाएगा।

डिफ़ॉल्ट रूप से, Cassandra यह सुपर अकाउंट 'cassandra' यूजरनेम और 'cassandra' पासवर्ड के साथ उपलब्ध है। 'cassandra' अकाउंट में लॉग इन करके आप जो चाहें कर सकते हैं।

आइए इसके लिए नीचे स्क्रीनशॉट देखें, जहां यह आपको लॉगिन करने की अनुमति नहीं देगा यदि आप डिफ़ॉल्ट का उपयोग नहीं कर रहे हैं Cassandra “उपयोगकर्ता नाम” और “पासवर्ड”।

cqlsh में लॉगिन तब अस्वीकृत हो जाता है जब डिफ़ॉल्ट क्रेडेंशियल का उपयोग नहीं किया जाता है।

अब, दूसरे स्क्रीनशॉट में, आप उपयोग करने के बाद देख सकते हैं Cassandra डिफ़ॉल्ट लॉगिन क्रेडेंशियल के साथ, आप लॉगिन करने में सक्षम हैं।

डिफ़ॉल्ट कैसेंड्रा क्रेडेंशियल्स का उपयोग करके cqlsh लॉगिन सफलतापूर्वक संपन्न हुआ।

आप इस खाते से एक और उपयोगकर्ता भी बना सकते हैं। डिफ़ॉल्ट पासवर्ड को बदलने की सलाह दी जाती है। यहाँ लॉग इन करने का उदाहरण दिया गया है। Cassandra उपयोगकर्ता और डिफ़ॉल्ट पासवर्ड बदलना।

alter user cassandra with password 'newpassword';

नया उपयोगकर्ता बनाएँ

'cassandra' खाते से नए खाते बनाए जा सकते हैं।

नया उपयोगकर्ता बनाने के लिए, लॉगिन और पासवर्ड के साथ-साथ यह भी निर्दिष्ट किया जाता है कि उपयोगकर्ता सुपरयूज़र है या नहीं। केवल सुपरयूज़र ही नए उपयोगकर्ता बना सकते हैं।

create user robin with password 'manager' superuser;
create user robin with password 'newhire';

आप निम्नलिखित सिंटैक्स द्वारा सभी उपयोगकर्ताओं की सूची प्राप्त कर सकते हैं।

list users;

आउटपुट में प्रत्येक खाते को उसके सुपरयूजर फ्लैग के साथ सूचीबद्ध किया गया है।

list users कमांड का आउटपुट खातों और सुपरयूज़र फ़्लैग को दर्शाता है।

उपयोगकर्ताओं को निम्नलिखित सिंटैक्स द्वारा हटाया जा सकता है।

drop user laura;

प्राधिकरण

प्राधिकरण का अर्थ है उपयोगकर्ताओं को अनुमति देना, यह तय करना कि कोई विशेष उपयोगकर्ता कौन सी कार्रवाई कर सकता है।

यहां उपयोगकर्ताओं को अनुमति प्रदान करने के लिए सामान्य सिंटैक्स दिया गया है।

GRANT permission ON resource TO user

उपयोगकर्ता को निम्नलिखित प्रकार की अनुमति दी जा सकती है।

  1. सब
  2. बदलने
  3. प्राधिकृत
  4. बनाएँ
  5. ड्रॉप
  6. संशोधित
  7. चुनते हैं

यहां उपयोगकर्ता को अनुमति प्रदान करने के उदाहरण दिए गए हैं।

Create user laura with password 'newhire'; 
grant all on dev.emp to laura;
revoke all on dev.emp to laura;
grant select on dev.emp to laura;

एक नया उपयोगकर्ता 'laura' बनाया गया है जिसका पासवर्ड 'newhire' है।

यहां एक उदाहरण दिया गया है जहां उपयोगकर्ता 'लौरा' emp_bonus टेबल को एक्सेस करने का प्रयास करती है। लौरा के पास केवल dev.emp टेबल को एक्सेस करने की अनुमति है और dev.emp_bonus टेबल पर कोई अनुमति नहीं है, इसलिए एक त्रुटि प्राप्त हुई।

बिना अनुमति के लौरा द्वारा emp_bonus टेबल से क्वेरी करने पर त्रुटि प्राप्त हुई।

select* form emp_bonus;

आप उपयोगकर्ता को दी गई सभी अनुमतियों की सूची प्राप्त कर सकते हैं। अनुमति संबंधी जानकारी प्राप्त करने का उदाहरण यहाँ दिया गया है।

लौरा की सभी अनुमतियों की सूची का आउटपुट

list all permissions of laura;

आप किसी संसाधन पर सभी अनुमतियों की सूची भी बना सकते हैं। यहां एक टेबल से अनुमति प्राप्त करने का उदाहरण दिया गया है।

dev.emp पर सभी अनुमतियों की सूची का आउटपुट

list all permissions on dev.emp;

फ़ायरवॉल कॉन्फ़िगर करना

यदि फ़ायरवॉल चल रहा है, तो कुछ सहित नोड्स के बीच संचार के लिए निम्नलिखित पोर्ट खोले जाने चाहिए Cassandra बंदरगाहों. अगर Cassandra बंदरगाह नहीं खोले जाएंगे, Cassandra नोड्स डेटाबेस क्लस्टर में शामिल होने के बजाय स्टैंडअलोन डेटाबेस सर्वर के रूप में कार्य करेंगे।

Cassandra क्लाइंट पोर्ट

पोर्ट नंबर विवरण
9042 Cassandra क्लाइंट पोर्ट
9160 Cassandra क्लाइंट पोर्ट थ्रिफ्ट

Cassandra इंटरनोड पोर्ट

पोर्ट नंबर विवरण
7000 Cassandra इंटरनोड क्लस्टर संचार
7001 Cassandra SSL इंटरनोड क्लस्टर संचार
7199 Cassandra JMX मॉनिटरिंग पोर्ट

सार्वजनिक बंदरगाह

पोर्ट नंबर विवरण
22 एसएसएच पोर्ट
8888 ऑप्ससेंटर वेबसाइट. ब्राउज़र http अनुरोध.

Cassandra ऑप्ससेंटर पोर्ट

पोर्ट नंबर विवरण
61620 ऑप्ससेंटर मॉनिटरिंग पोर्ट.
61621 ऑप्ससेंटर एजेंट पोर्ट

वर्तमान ड्राइवर केवल 9042 पोर्ट का उपयोग करते हैं; पोर्ट 9160 पुराने थ्रिफ्ट इंटरफेस के लिए है और नए क्लस्टर पर बंद रह सकता है।

JMX प्रमाणीकरण सक्षम करना

डिफ़ॉल्ट सेटिंग्स के साथ CassandraJMX को केवल लोकलहोस्ट से ही एक्सेस किया जा सकता है। यदि आप JMX को दूरस्थ रूप से एक्सेस करना चाहते हैं, तो cassandra-env.sh में LOCAL_JMX सेटिंग बदलें और प्रमाणीकरण या SSL को सक्षम करें।

JMX प्रमाणीकरण सक्षम करने के बाद, सुनिश्चित करें ऑप्ससेंटर और nodetool प्रमाणीकरण का उपयोग करने के लिए कॉन्फ़िगर किए गए हैं।

प्रक्रिया

JMX प्रमाणीकरण सक्षम करने के लिए निम्नलिखित चरण हैं।

  1. Cassandra-env.sh फ़ाइल में, निम्नलिखित पंक्तियाँ जोड़ें या अपडेट करें।
    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

    साथ ही, cassandra-env.sh में LOCAL_JMX सेटिंग को भी बदलें।

    LOCAL_JMX=no
  2. /jdk_install_location/lib/management/ से jmxremote.password.template फ़ाइल को /etc/cassandra/ में कॉपी करें और इसका नाम बदलकर jmxremote.password कर दें।
    cp /jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  3. jmxremote.password का स्वामित्व उस उपयोगकर्ता में बदलें जिसे आप चलाते हैं Cassandra और अनुमति को केवल पढ़ने के लिए बदलें।
    chown cassandra:cassandra /etc/cassandra/jmxremote.password 
    chmod 400 /etc/cassandra/jmxremote.password
  4. jmxremote.password संपादित करें और JMX-अनुरूप उपयोगिताओं के लिए उपयोगकर्ता और पासवर्ड जोड़ें:
    monitorRole QED 
    controlRole R&D 
    cassandra cassandrapassword
  5. जोड़ें Cassandra /jdk_install_location/lib/management/jmxremote.access पर पढ़ने और लिखने की अनुमति वाला उपयोगकर्ता
    monitorRole readonly
    cassandra readwrite
    controlRole readwrite \
    create javax.management.monitor.,javax.management.timer. \ 
    unregister
  6. पुनः प्रारंभ Cassandra.
  7. nodetool को चलाएँ Cassandra उपयोगकर्ता और पासवर्ड.
    $ nodetool status -u cassandra -pw cassandra

अक्सर पूछे जाने वाले प्रश्न

ये दोनों ही system_auth कीस्पेस में, roles और role_permissions टेबल में मौजूद होते हैं। क्योंकि system_auth की खोई हुई प्रतिकृति सभी को लॉक कर सकती है, इसलिए उत्पादन में प्रमाणीकरण सक्षम करने से पहले इसके प्रतिकृति कारक को बढ़ा दें।

CQL भूमिकाओं ने पुराने उपयोगकर्ता सिंटैक्स का स्थान ले लिया है। एक भूमिका में अनुमतियाँ होती हैं और इसे अन्य भूमिकाओं को प्रदान किया जा सकता है, इसलिए वर्तमान संस्करणों में CREATE ROLE, CREATE USER की जगह लेता है, जिसमें उपयोगकर्ता कमांड को उपनाम के रूप में रखा जाता है।

नहीं। प्रमाणीकरण केवल पहचान साबित करता है; पासवर्ड नेटवर्क पर बिना एन्क्रिप्शन के ही भेजे जाते हैं, जब तक कि client_encryption_options सक्षम न हो। क्लाइंट-टू-नोड और नोड-टू-नोड ट्रैफ़िक के लिए TLS को अलग-अलग चालू करें।

एक समर्पित सुपरयूज़र बनाएं, फिर बिल्ट-इन कैसेंड्रा पासवर्ड बदलें या खाता हटा दें। प्रलेखित कैसेंड्रा/कैसेंड्रा पेयर को सक्रिय रखना सबसे आम तरीका है। Cassandra गलत विन्यास

अनुमतियाँ कैश में सहेजी जाती हैं। कोई भी परिवर्तन अनुमतियों की वैधता अवधि समाप्त होने के बाद ही प्रभावी होता है, इसलिए अनुमति देने या रद्द करने का परीक्षण करते समय cassandra.yaml में उस सेटिंग को छोटा करें या नोड को पुनरारंभ करें।

पोर्ट 7199 पर अनधिकृत JMX डीकमीशनिंग सहित पूर्ण नोड नियंत्रण की अनुमति देता है। Cassandra इसलिए इसे स्थानीय रूप से बांध दिया जाता है, और दूरस्थ पहुंच केवल पासवर्ड फ़ाइल या एसएसएल की मौजूदगी में ही खोली जानी चाहिए।

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

कोपायलट किसी टिप्पणी से CREATE ROLE और GRANT स्टेटमेंट को तुरंत तैयार कर लेता है, लेकिन यह व्यापक अनुमतियों का सुझाव देता है। Revलाइव सिस्टम पर चलाने से पहले प्रत्येक जनरेटेड ग्रांट की न्यूनतम विशेषाधिकार के विरुद्ध समीक्षा करें। समूह.

इस पोस्ट को संक्षेप में इस प्रकार लिखें: