> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# إدارة مستخدمي قاعدة البيانات

> تشرح هذه الصفحة كيف يمكن للمسؤولين إضافة مستخدمي قاعدة البيانات، وإدارة عمليات الإسناد، وإزالة مستخدمي قاعدة البيانات

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

يوضح هذا الدليل طريقتين لإدارة مستخدمي قاعدة البيانات: من خلال SQL Console أو مباشرةً داخل قاعدة البيانات.

<div id="sql-console-passwordless-authentication">
  ### المصادقة بدون كلمة مرور في SQL Console
</div>

يُنشأ مستخدمو SQL Console لكل جلسة، وتتم مصادقتهم باستخدام شهادات X.509 التي تُدوَّر تلقائيًا. ويُزال المستخدم عند إنهاء الجلسة. عند إنشاء قوائم الوصول لأغراض التدقيق، يُرجى الانتقال إلى علامة التبويب Settings الخاصة بالخدمة في Console، ومراعاة وصول SQL Console بالإضافة إلى مستخدمي قاعدة البيانات الموجودين في قاعدة البيانات. وإذا كانت الأدوار المخصصة مُهيأة، فسيُدرج وصول المستخدم ضمن الدور الذي ينتهي باسم المستخدم الخاص به.

<div id="sql-console-users-and-roles">
  ## مستخدمو SQL Console والأدوار
</div>

يمكن إسناد أدوار SQL Console الأساسية إلى المستخدمين الذين لديهم أذونات Service Read Only وService Admin. لمزيد من المعلومات، راجع [إدارة تعيينات أدوار SQL Console](/docs/ar/products/cloud/guides/security/cloud-access-management/manage-sql-console-role-assignments). يوضّح هذا الدليل كيفية إنشاء دور مخصّص لمستخدم في SQL Console.

لإنشاء دور مخصّص لمستخدم في SQL Console ومنحه دورًا عامًا، شغّل الأوامر التالية. يجب أن يتطابق عنوان البريد الإلكتروني مع عنوان البريد الإلكتروني للمستخدم في Console.

<Steps>
  <Step title={<>إنشاء <code>database_developer</code> ومنح الأذونات</>} id="create-role-grant-permissions">
    أنشئ الدور `database_developer` وامنحه أذونات `SHOW` و`CREATE` و`ALTER` و`DELETE`.

    ```sql theme={null}
    CREATE ROLE OR REPLACE database_developer;
    GRANT SHOW ON * TO database_developer;
    GRANT CREATE ON * TO database_developer;
    GRANT ALTER ON * TO database_developer;
    GRANT DELETE ON * TO database_developer;
    ```
  </Step>

  <Step title="إنشاء دور لمستخدم SQL Console" id="create-sql-console-user-role">
    أنشئ دورًا لمستخدم SQL Console وهو [my.user@domain.com](mailto:my.user@domain.com)، ثم أسند إليه الدور `database_developer`.

    ```sql theme={null}
    CREATE ROLE OR REPLACE `sql-console-role:my.user@domain.com`;
    GRANT database_developer TO `sql-console-role:my.user@domain.com`;
    ```
  </Step>

  <Step title="يُسنَد إلى المستخدم الدور الجديد عند استخدام SQL Console" id="use-assigned-new-role">
    سيُسنَد إلى المستخدم الدور المرتبط بعنوان بريده الإلكتروني كلما استخدم SQL Console.
  </Step>
</Steps>

<div id="database-authentication">
  ## مصادقة قاعدة البيانات
</div>

<div id="database-user-id--password">
  ### معرّف مستخدم قاعدة البيانات وكلمة المرور
</div>

استخدم أسلوب SHA256\_hash عند [إنشاء حسابات المستخدمين](/docs/ar/reference/statements/create/user) لتأمين كلمات المرور. يجب أن تتكوّن كلمات مرور مستخدمي قاعدة بيانات ClickHouse من 12 حرفًا على الأقل، وأن تستوفي متطلبات التعقيد: أحرف كبيرة، وأحرف صغيرة، وأرقام و/أو رموز خاصة.

<Tip>
  **أنشئ كلمات المرور بأمان**

  نظرًا إلى أن المستخدمين ذوي الامتيازات الأقل من الامتيازات الإدارية لا يمكنهم تعيين كلمات المرور الخاصة بهم بأنفسهم، فاطلب من المستخدم إجراء تجزئة لكلمة مروره باستخدام مُولِّد
  مثل [هذا](https://tools.keycdn.com/sha256-online-generator) قبل تزويد المسؤول بها لإعداد الحساب.
</Tip>

```sql theme={null}
CREATE USER userName IDENTIFIED WITH sha256_hash BY 'hash';
```

<div id="database-ssh">
  ### مستخدم قاعدة بيانات مع مصادقة SSH
</div>

لإعداد مصادقة SSH لمستخدم قاعدة بيانات في ClickHouse Cloud.

1. استخدم ssh-keygen لإنشاء زوج من المفاتيح.
2. استخدم المفتاح العام لإنشاء المستخدم.
3. عيّن الأدوار و/أو الأذونات للمستخدم.
4. استخدم المفتاح الخاص للمصادقة مع الخدمة.

للاطّلاع على شرح تفصيلي مع أمثلة، راجع [How to connect to ClickHouse Cloud using SSH keys](/docs/ar/resources/support-center/knowledge-base/cloud-services/how-to-connect-to-ch-cloud-using-ssh-keys) في قاعدة المعرفة الخاصة بنا.

<div id="database-permissions">
  ## أذونات قاعدة البيانات
</div>

اضبط ما يلي ضمن الخدمات وقواعد البيانات باستخدام عبارة SQL ‏[GRANT](/docs/ar/reference/statements/grant).

| Role    | Description                                                        |
| :------ | :----------------------------------------------------------------- |
| Default | وصول إداري كامل إلى الخدمات                                        |
| Custom  | اضبطه باستخدام عبارة SQL [`GRANT`](/docs/ar/reference/statements/grant) |

* أدوار قاعدة البيانات تراكمية. وهذا يعني أنه إذا كان المستخدم عضوًا في دورين، فسيحصل على أوسع نطاق وصول يمنحه أيٌّ من هذين الدورين. ولا يفقد أي صلاحيات عند إضافة أدوار.
* يمكن منح أدوار قاعدة البيانات لأدوار أخرى، مما يؤدي إلى بنية هرمية. وترث الأدوار جميع أذونات الأدوار التي تكون عضوًا فيها.
* أدوار قاعدة البيانات خاصة بكل خدمة، ويمكن تطبيقها على عدة قواعد بيانات ضمن الخدمة نفسها.

يوضح الشكل أدناه الطرق المختلفة التي يمكن بها منح المستخدم أذونات.

<Image img="https://mintcdn.com/private-7c7dfe99/Ph2XgLY43sq6v4yO/images/cloud/security/cloud-access-management/user_grant_permissions_options.webp?fit=max&auto=format&n=Ph2XgLY43sq6v4yO&q=85&s=c229977398eefb5167731dd4a49b690c" alt="رسم توضيحي يبيّن الطرق المختلفة التي يمكن بها منح المستخدم أذونات" size="md" background="black" width="626" height="501" data-path="images/cloud/security/cloud-access-management/user_grant_permissions_options.webp" />

<div id="initial-settings">
  ### الإعدادات الأولية
</div>

تتضمن قواعد البيانات حسابًا باسم `default` يُضاف تلقائيًا ويُمنَح الدور `default_role` عند إنشاء الخدمة. ويُعرَض للمستخدم الذي ينشئ الخدمة كلمة المرور العشوائية المُولَّدة تلقائيًا والمُعيَّنة لحساب `default` عند إنشاء الخدمة. ولا تظهر كلمة المرور بعد الإعداد الأولي، لكن يمكن لأي مستخدم لديه أذونات Service Admin في Console تغييرها لاحقًا. ويمكن لهذا الحساب، أو لأي حساب لديه امتيازات Service Admin ضمن Console، إعداد مستخدمي قاعدة بيانات إضافيين وأدوار في أي وقت.

<Note>
  لتغيير كلمة المرور المُعيَّنة لحساب `default` في Console، انتقل إلى قائمة Services على اليسار، وافتح الخدمة، ثم انتقل إلى علامة التبويب Settings وانقر على زر Reset password.
</Note>

نوصي بإنشاء حساب مستخدم جديد مرتبط بشخص، ومنح هذا المستخدم الدور `default_role`. وذلك لكي تُنسَب الأنشطة التي ينفذها المستخدمون إلى معرّفات المستخدم الخاصة بهم، وليبقى حساب `default` مخصصًا لإجراءات الطوارئ.

```sql theme={null}
  CREATE USER userID IDENTIFIED WITH sha256_hash by 'hashed_password';
  GRANT default_role to userID;
```

يمكنك استخدام مولّد تجزئة SHA256 أو دالة برمجية مثل `hashlib` في بايثون لتحويل كلمة مرور مكوّنة من 12 حرفًا أو أكثر وبدرجة تعقيد مناسبة إلى سلسلة SHA256 لتقديمها إلى مسؤول النظام لاستخدامها ككلمة مرور. ويضمن ذلك ألّا يرى المسؤول كلمات المرور غير المشفّرة أو يتعامل معها.

<div id="database-access-listings-with-sql-console-users">
  ### قوائم الوصول إلى قاعدة البيانات باستخدام مستخدمي SQL console
</div>

يمكن استخدام العملية التالية لإنشاء قائمة وصول كاملة عبر SQL console وقواعد البيانات في مؤسستك.

<Steps>
  <Step title="الحصول على قائمة بجميع الأذونات الممنوحة في قاعدة البيانات" id="get-a-list-of-all-database-grants">
    شغّل الاستعلامات التالية للحصول على قائمة بجميع الأذونات الممنوحة في قاعدة البيانات.

    ```sql theme={null}
    SELECT grants.user_name,
    grants.role_name,
    users.name AS role_member,
    grants.access_type,
    grants.database,
    grants.table
    FROM system.grants LEFT OUTER JOIN system.role_grants ON grants.role_name = role_grants.granted_role_name
    LEFT OUTER JOIN system.users ON role_grants.user_name = users.name

    UNION ALL

    SELECT grants.user_name,
    grants.role_name,
    role_grants.role_name AS role_member,
    grants.access_type,
    grants.database,
    grants.table
    FROM system.role_grants LEFT OUTER JOIN system.grants ON role_grants.granted_role_name = grants.role_name
    WHERE role_grants.user_name is null;
    ```
  </Step>

  <Step title="ربط قائمة الأذونات الممنوحة بمستخدمي Console الذين لديهم وصول إلى SQL console" id="associate-grant-list-to-console-users-with-access-to-sql-console">
    اربط هذه القائمة بمستخدمي Console الذين لديهم وصول إلى SQL console.

    a. انتقل إلى Console.

    b. حدِّد الخدمة ذات الصلة.

    c. حدِّد Settings من القائمة اليسرى.

    d. مرّر إلى قسم الوصول إلى SQL console.

    e. انقر على رابط عدد المستخدمين الذين لديهم إمكانية الوصول إلى قاعدة البيانات `There are # users with access to this service.` لعرض قائمة المستخدمين.
  </Step>
</Steps>

<div id="warehouse-users">
  ## مستخدمو المستودع
</div>

يكون مستخدمو المستودع مشتركين بين الخدمات ضمن المستودع نفسه. لمزيد من المعلومات، راجع [ضوابط الوصول إلى المستودع](/docs/ar/products/cloud/features/infrastructure/warehouses#access-controls).
