users في ملف التهيئة users.xml على إعدادات المستخدمين.
يدعم ClickHouse أيضًا سير عمل قائم على SQL لإدارة المستخدمين. نوصي باستخدامه.
users:
user_name/password
-
لتعيين كلمة مرور بصيغة نص صريح (غير مستحسن)، ضعها داخل العنصر
password. على سبيل المثال:<password>qwerty</password>. ويمكن ترك كلمة المرور فارغة.
-
لتعيين كلمة مرور باستخدام تجزئة SHA256 الخاصة بها، ضعها داخل العنصر
password_sha256_hex. على سبيل المثال:<password_sha256_hex>65e84be33532fb784c48129675f9eff3a682b27168c0ea744b2cf58ee02337c5</password_sha256_hex>. مثال على كيفية إنشاء كلمة مرور من shell:السطر الأول من الناتج هو كلمة المرور. والسطر الثاني هو تجزئة SHA256 المقابلة لها.
-
للتوافق مع عملاء MySQL، يمكن تحديد كلمة المرور باستخدام تجزئة double SHA1. ضعها داخل العنصر
password_double_sha1_hex. على سبيل المثال:<password_double_sha1_hex>08b4a0f1de6ad37da17359e592c8d74788a83eb0</password_double_sha1_hex>. مثال على كيفية إنشاء كلمة مرور من shell:السطر الأول من الناتج هو كلمة المرور. والسطر الثاني هو تجزئة double SHA1 المقابلة لها.
تهيئة مصادقة TOTP
users.xml بالإضافة إلى المصادقة المستندة إلى كلمة المرور.
وهي غير مدعومة بعد في التحكم في الوصول المعتمد على SQL.
للمصادقة باستخدام TOTP، يجب على المستخدمين تقديم كلمة المرور الأساسية إلى جانب كلمة مرور لمرة واحدة يُنشئها تطبيق TOTP الخاص بهم، وذلك إما عبر خيار سطر الأوامر --one-time-password أو بإلحاقها بكلمة المرور الأساسية باستخدام المحرف ’+’.
على سبيل المثال، إذا كانت كلمة المرور الأساسية هي some_password وكان رمز TOTP المُنشأ هو 345123، فيمكن للمستخدم تحديد --password some_password+345123 أو --password some_password --one-time-password 345123 عند الاتصال بـ ClickHouse. وإذا لم تُحدَّد كلمة مرور، فسيطلب clickhouse-client إدخالها تفاعليًا.
لتمكين مصادقة TOTP لمستخدم، اضبط القسم time_based_one_time_password في users.xml. يحدد هذا القسم إعدادات TOTP، مثل السرّ، وفترة الصلاحية، وعدد الخانات، وخوارزمية التجزئة.
مثال
secret في users.xml.
لتمكين TOTP لمستخدم معيّن، أضِف قسم time_based_one_time_password آخر إلى أي حقل موجود يعتمد على password (مثل password أو password_sha256_hex).
يمكن استخدام أداة qrencode لإنشاء رمز QR لسرّ TOTP.
اسم المستخدم/مفتاح SSH
يتيح هذا الإعداد المصادقة باستخدام مفاتيح SSH. إذا كان لديك مفتاح SSH (كما يُنشأ بواسطةssh-keygen) مثل
ssh_key
ssh-ed25519 بـ ssh-rsa أو ecdsa-sha2-nistp256 عند استخدام الخوارزميات الأخرى المدعومة.
طرق مصادقة متعددة
يمكن تهيئة مستخدم واحد بعدة طرق مصادقة باستخدام العنصر<auth_methods>. ويتيح ذلك للمستخدم المصادقة باستخدام أي طريقة من الطرق المُدرجة — فعلى سبيل المثال، يمكن أن تكون لدى المستخدم كلمة مرور وبيانات اعتماد LDAP معًا، ويُقبل تسجيل الدخول بأيٍّ منهما.
كل عنصر فرعي ضمن <auth_methods> هو غلاف يحمل اسمًا اعتباطيًا ويحتوي على نوع مصادقة واحد فقط. ولا يهم اسم الغلاف (مثل <method1> أو <primary> أو <a1>)، إذ لا يُستخدم إلا عنصر المصادقة الداخلي.
مثال: كلمات مرور متعددة
<auth_methods>:
password— كلمة مرور بنص صريحpassword_sha256_hex— تجزئة كلمة مرور SHA256password_scram_sha256_hex— تجزئة كلمة مرور SCRAM-SHA-256password_double_sha1_hex— تجزئة كلمة مرور double SHA1ldap— مصادقة خادم LDAPkerberos— مصادقة Kerberosssl_certificates— مصادقة شهادات SSLssh_keys— مصادقة مفاتيح SSHhttp_authentication— مصادقة HTTP
- لا يمكن استخدام
<auth_methods>مع طرق المصادقة المحددة على مستوى المستخدم في الوقت نفسه. استخدم أحد الأسلوبين فقط، وليس كليهما. - يجب أن يحتوي
<auth_methods>على طريقة مصادقة واحدة على الأقل. - يجب أن يحتوي كل عنصر غلاف داخل
<auth_methods>على نوع مصادقة واحد فقط (باستثناء<ssh_keys>، إذ يمكن أن يحتوي على عدة أنواع حفاظًا على التوافق مع الإصدارات السابقة). - يُحدَّد TOTP (
<time_based_one_time_password>) على مستوى المستخدم (خارج<auth_methods>) ويُطبَّق على جميع الطرق المستندة إلى كلمة المرور في القائمة. ويَلزم وجود طريقة واحدة على الأقل مستندة إلى كلمة المرور عند تمكين TOTP.
auth_methods مع TOTP
<password>)، بينما تُجري طريقة LDAP المصادقة بشكل مستقل على الخادم الخارجي.
access_management
يؤدي هذا الإعداد إلى تمكين أو تعطيل استخدام التحكم في الوصول وإدارة الحسابات القائمَين على SQL لهذا المستخدم. القيم الممكنة:- 0 — معطّل.
- 1 — مفعّل.
grants
يتيح هذا الإعداد منح أي امتيازات للمستخدم المحدد. يجب أن يكون كل عنصر في القائمة عبارة عن استعلامGRANT من دون تحديد أي جهات ممنوح لها.
مثال:
dictionaries وaccess_management وnamed_collection_control وshow_named_collections_secrets
وallow_databases.
user_name/networks
قائمة الشبكات التي يمكن للمستخدم الاتصال منها بخادم ClickHouse. يمكن أن يتخذ كل عنصر في القائمة أحد الأشكال التالية:-
<ip>— عنوان IP أو قناع شبكة. أمثلة:213.180.204.3,10.0.0.1/8,10.0.0.1/255.255.255.0,2a02:6b8::3,2a02:6b8::3/64,2a02:6b8::3/ffff:ffff:ffff:ffff::. -
<host>— اسم المضيف. مثال:example01.host.ru. للتحقق من الوصول، يُجرى استعلام DNS، ثم تُقارَن جميع عناوين IP المُعادة بعنوان النظير. -
<host_regexp>— تعبير نمطي لأسماء المضيفين. مثال:^example\d\d-\d\d-\d\.host\.ru$للتحقق من الوصول، يُجرى استعلام DNS PTR لعنوان النظير، ثم يُطبَّق التعبير النمطي المحدد. بعد ذلك، يُجرى استعلام DNS آخر لنتائج استعلام PTR، وتُقارَن جميع العناوين المستلمة بعنوان النظير. نوصي بشدة بأن ينتهي التعبير النمطي بالرمز $.
من غير الآمن إتاحة الوصول من أي شبكة، ما لم يكن لديك جدار حماية مُعَدّ بشكل صحيح أو لم يكن الخادم متصلًا مباشرةً بالإنترنت.
user_name/profile
يمكنك إسناد ملف تعريف للإعدادات إلى المستخدم. تُضبط ملفات تعريف الإعدادات في قسم منفصل ضمن ملفusers.xml. لمزيد من المعلومات، راجع ملفات تعريف الإعدادات.
user_name/quota
تتيح لك الحصص تتبّع استخدام الموارد أو الحدّ منه خلال فترة زمنية. تُضبط الحصص في قسمquotas
ضمن ملف الإعداد users.xml.
يمكنك تعيين مجموعة حصص للمستخدم. للاطلاع على وصف مفصل لإعداد الحصص، راجع الحصص.
user_name/databases
في هذا القسم، يمكنك تقييد الصفوف التي يعرضها ClickHouse في استعلاماتSELECT التي ينفّذها المستخدم الحالي، وبذلك تطبّق أمانًا أساسيًا على مستوى الصفوف.
مثال
يفرض هذا الإعداد أن المستخدم user1 لا يمكنه رؤية سوى صفوف table1 في نتائج استعلامات SELECT التي تكون فيها قيمة الحقل id مساوية لـ 1000.
filter أي تعبير يُنتج قيمة من النوع UInt8. وعادةً ما يتضمن مقارنات وعوامل منطقية. لا تُعاد للمستخدم الصفوف من database_name.table1 التي تكون نتيجة filter فيها 0. ولا تتوافق هذه التصفية مع عمليات PREWHERE وتُعطِّل تحسين WHERE→PREWHERE.
الأدوار
يمكنك إنشاء أيٍّ من الأدوار المعرَّفة مسبقًا باستخدام قسمroles في ملف الإعدادات user.xml.
بنية قسم roles:
users: