Cassandra مصادقة JMX وتفويضها: إنشاء مستخدم
⚡ ملخص ذكي
Cassandra يعتمد الأمن على المصادقة الداخلية، وصلاحيات الأدوار، وقواعد جدار الحماية، والتحكم في الوصول عبر JMX. توضح هذه الصفحة كيفية تفعيل كل طبقة، وإنشاء المستخدمين، ومنح الصلاحيات، وتأمين الوصول عن بُعد إلى أداة nodetool.
هناك نوعان من الأمن في Apache Cassandra و DataStax Enterprise.
- المصادقة الداخلية
- ترخيص
ما هي المصادقة الداخلية والترخيص
تتمثل المصادقة الداخلية أساسًا في التحقق من اتصال المستخدم. تتم مصادقة المستخدم باستخدام اسم المستخدم وكلمة المرور. تُدار جميع حسابات المستخدمين في Cassandra داخليا.
تُعنى الصلاحيات الداخلية بصلاحيات المستخدم، وتحديد الإجراءات التي يُمكنه القيام بها. على سبيل المثال، يُمكننا منح صلاحيات مثل: أي مستخدم لديه صلاحية قراءة البيانات فقط، وأي مستخدم لديه صلاحية كتابة البيانات، وأي مستخدم لديه صلاحية حذف البيانات.
ومع ذلك، يمكن أيضًا التحكم في المصادقة خارجيًا باستخدام Kerberos (يتم استخدام Kerberos لإدارة بيانات الاعتماد بشكل آمن) و LDAP (يتم استخدام LDAP للاحتفاظ بالمعلومات الموثوقة حول الحسابات، مثل ما يُسمح لهم بالوصول إليه).
المصادقة الخارجية هي المصادقة المدعومة مع Kerberos وLDAP. Apache Cassandra لا يدعم المصادقة الخارجية.
يدعم DataStax Enterprise فقط المصادقة الخارجية باستخدام Kerberos وLDAP، بينما يتم دعم المصادقة الداخلية في كليهما. Apache Cassandra وكذلك DataStax Enterprise.
تكوين المصادقة والترخيص
In Cassandraتكون خيارات المصادقة والتفويض معطلة افتراضيًا. يجب عليك ضبط ملف cassandra.yaml لتفعيل المصادقة والتفويض.
افتح ملف cassandra.yaml وقم بإلغاء التعليق على الأسطر التي تتعامل مع المصادقة الداخلية والتفويض، كما هو موضح أدناه.
- في ملف 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 "اسم المستخدم و كلمة السر".
الآن، في لقطة الشاشة الثانية، يمكنك أن ترى بعد استخدام Cassandra بيانات اعتماد تسجيل الدخول الافتراضية، يمكنك تسجيل الدخول.
يمكنك أيضًا إنشاء مستخدم آخر باستخدام هذا الحساب. يُنصح بتغيير كلمة المرور الافتراضية. إليك مثال على تسجيل الدخول كـ Cassandra تغيير كلمة المرور الافتراضية للمستخدم.
alter user cassandra with password 'newpassword';
إنشاء مستخدم جديد
يمكن إنشاء حسابات جديدة باستخدام حساب "كاساندرا".
لإنشاء مستخدم جديد، يتم تحديد اسم المستخدم وكلمة المرور، بالإضافة إلى تحديد ما إذا كان المستخدم يتمتع بصلاحيات المستخدم المتميز أم لا. ولا يمكن إنشاء مستخدمين جدد إلا من قبل المستخدم المتميز.
create user robin with password 'manager' superuser; create user robin with password 'newhire';
بإمكانك الحصول على قائمة بجميع المستخدمين باستخدام بناء الجملة التالي.
list users;
يعرض الناتج قائمة بجميع الحسابات مع علامة المستخدم المتميز الخاصة بها.
من الممكن إسقاط المستخدمين باستخدام الصيغة التالية.
drop user laura;
ترخيص
التفويض هو منح الإذن للمستخدمين، وتحديد الإجراء الذي يمكن لمستخدم معين القيام به.
فيما يلي بناء الجملة العام لتعيين الإذن للمستخدمين.
GRANT permission ON resource TO user
هناك الأنواع التالية من الأذونات التي يمكن منحها للمستخدم.
- الكل
- ALTER
- تفويض
- خلق
- إسقاط
- تعديل
- اختر
فيما يلي أمثلة لتعيين الإذن للمستخدم.
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، ولهذا السبب ظهر خطأ.
select* form emp_bonus;
يمكنك الحصول على قائمة بجميع الصلاحيات الممنوحة للمستخدم. إليك مثال على كيفية الحصول على معلومات الصلاحيات.
list all permissions of laura;
يمكنك أيضًا عرض جميع الصلاحيات الممنوحة لمورد ما. إليك مثال على كيفية الحصول على إذن من جدول.
list all permissions on dev.emp;
تكوين جدار الحماية
إذا كان جدار الحماية قيد التشغيل، فيجب فتح المنافذ التالية للتواصل بين العقد بما في ذلك بعض Cassandra الموانئ. لو Cassandra لن يتم فتح المنافذ Cassandra ستعمل العقد كخوادم قواعد بيانات مستقلة بدلاً من الانضمام إلى مجموعة قواعد البيانات.
Cassandra منافذ العميل
| منفذ رقم | الوصف |
|---|---|
| 9042 | Cassandra منفذ العميل |
| 9160 | Cassandra توفير منفذ العميل |
Cassandra منافذ الرمز الداخلي
| منفذ رقم | الوصف |
|---|---|
| 7000 | Cassandra اتصالات بين العقد |
| 7001 | Cassandra اتصالات بين مجموعات العقد SSL |
| 7199 | Cassandra منفذ مراقبة JMX |
المنافذ العامة
| منفذ رقم | الوصف |
|---|---|
| 22 | ميناء SSH |
| 8888 | موقع أوبس سنتر. طلب http للمتصفح |
Cassandra منافذ OpsCenter
| منفذ رقم | الوصف |
|---|---|
| 61620 | منفذ مراقبة OpsCenter. |
| 61621 | منفذ وكيل Opcenter |
تستخدم برامج التشغيل الحالية المنفذ 9042 فقط؛ أما المنفذ 9160 فيخدم واجهة Thrift القديمة ويمكن أن يظل مغلقًا على المجموعات الجديدة.
تمكين مصادقة JMX
مع الإعدادات الافتراضية لـ Cassandraلا يمكن الوصول إلى JMX إلا من الجهاز المحلي. إذا كنت ترغب في الوصول إلى JMX عن بُعد، فغيّر إعداد LOCAL_JMX في ملف cassandra-env.sh وقم بتمكين المصادقة أو SSL.
بعد تمكين مصادقة JMX، تأكد مركز العمليات وتم تكوين أداة العقدة لاستخدام المصادقة.
العملية
هناك الخطوات التالية لتمكين مصادقة JMX.
- في ملف 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"
قم أيضًا بتغيير إعداد LOCAL_JMX في ملف cassandra-env.sh.
LOCAL_JMX=no
- انسخ ملف jmxremote.password.template من /jdk_install_location/lib/management/ إلى /etc/cassandra/ وأعد تسميته إلى jmxremote.password.
cp /jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password - قم بتغيير ملكية jmxremote.password إلى المستخدم الذي تقوم بتشغيله Cassandra مع تغيير الإذن إلى القراءة فقط.
chown cassandra:cassandra /etc/cassandra/jmxremote.password chmod 400 /etc/cassandra/jmxremote.password
- قم بتحرير jmxremote.password وأضف المستخدم وكلمة المرور للأدوات المساعدة المتوافقة مع JMX:
monitorRole QED controlRole R&D cassandra cassandrapassword
- إضافة Cassandra مستخدم لديه إذن القراءة والكتابة إلى /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly cassandra readwrite controlRole readwrite \ create javax.management.monitor.,javax.management.timer. \ unregister
- إعادة تشغيل Cassandra.
- قم بتشغيل أداة العقدة مع Cassandra المستخدم وكلمة المرور.
$ nodetool status -u cassandra -pw cassandra








