ניהול אימות מובנה באמצעות מדיניות סיסמאות

בחירת גרסת תיעוד:

בדף הזה מוסבר איך מגדירים ומנהלים מדיניות סיסמאות ב-AlloyDB Omni.

מידע על מדיניות בנושא סיסמאות

אם משתמשי מסד הנתונים של האפליקציה מאומתים באמצעות AlloyDB Omni בשיטה המובנית שמבוססת על סיסמה, אתם יכולים לחייב שימוש בסיסמאות חזקות כדי לשפר את אבטחת האימות. אפשר להגדיר ולאפשר אכיפה של סיסמאות על ידי הגדרת מדיניות סיסמאות ב-AlloyDB Omni.

מגבלות של מדיניות הסיסמאות

אלו המגבלות שחלות על מדיניות הסיסמאות ב-AlloyDB Omni:

  • מדיניות הסיסמאות חלה רק על סיסמאות שנוצרו אחרי שהגדרתם את המדיניות. שינוי במדיניות הסיסמאות לא משפיע על סיסמאות קיימות של משתמשים.

  • מדיניות הסיסמאות חלה רק על סיסמאות שמוזנות כטקסט רגיל. המדיניות בנושא סיסמאות לא חלה על סיסמאות שמוזנות כמחרוזות מוצפנות.

הגדרת מדיניות סיסמאות ב-AlloyDB Omni

כדי להגדיר מדיניות סיסמאות, מעדכנים את פרמטרי הסיסמה של Grand Unified Configuration ‏ (GUC) בקובץ התצורה postgresql.conf. כדי ללמוד איך להגדיר פרמטר GUC, אפשר לעיין במאמר הגדרת דגלים של מסד נתונים ב-AlloyDB Omni.

מדיניות סיסמאות ל-AlloyDB Omni יכולה לכלול את האפשרויות הבאות:

  • איסור שימוש בשם משתמש: מונע שימוש בשם המשתמש בסיסמה.

  • מורכבות הסיסמה: צריך לבדוק אם הסיסמה מכילה את מספר התווים המותר של אותיות קטנות, אותיות גדולות, ספרות ותווים לא אלפאנומריים. כדאי גם לבדוק אם אורך הסיסמה תקין.

  • תוקף הסיסמה: חשוב לוודא שהסיסמאות מתחלפות באופן תקופתי.

רשימה של סימוני מדיניות הסיסמאות שנתמכים ב-AlloyDB Omni מופיעה במאמר בנושא סימוני מדיניות הסיסמאות.

טעינה מראש של ספריית אימות הסיסמאות

כדי שמדיניות הסיסמאות תיכנס לתוקף ב-AlloyDB Omni, צריך לטעון את הספרייה alloydb_password_validation. כדי לטעון את הספרייה הזו: פועלים לפי השלבים הבאים:

  1. מאתרים את קובץ התצורה postgresql.conf של ההתקנה של AlloyDB Omni ופותחים אותו בכלי לעריכת טקסט.

  2. מאתרים את השורה shared_preload_libraries ובודקים אם היא כוללת את alloydb_password_validation. אם הוא לא מופיע, צריך להוסיף אותו. בסיום, השורה shared_preload_libraries אמורה להיראות כך:

    shared_preload_libraries='google_columnar_engine,google_job_scheduler,google_storage,alloydb_password_validation'
    

אכיפת סיסמאות מורכבות

כדי לאכוף מדיניות של סיסמאות מורכבות:

  1. מוודאים שקובץ postgresql.conf טוען מראש את ספריית אימות הסיסמה.

  2. מגדירים את הדגל password.enforce_complexity לערך ON.

  3. משתמשים בדגלים של מדיניות סיסמאות כדי להגדיר את מדיניות הסיסמאות.

לדוגמה, כדי לאכוף מדיניות סיסמאות שקובעת שסיסמה חייבת להכיל לפחות אות גדולה אחת, מספר אחד ולהיות באורך של 10 תווים לפחות, צריך להגדיר את הערכים הבאים בקובץ postgresql.conf:

  • password.enforce_complexity = ON
  • password.min_uppercase_letters = 1
  • password.min_numerical_chars = 1
  • password.min_pass_length = 10

אחרי שמגדירים את הדגלים האלה, ניסיון להגדיר סיסמה למשתמש במסד נתונים שלא עומדת בדרישות של מדיניות הסיסמאות הזו ייכשל. לדוגמה, אם המדיניות הזו מוגדרת, הפקודה הבאה של הלקוח psql נכשלת כי הסיסמה foo קצרה מ-10 תווים ולא מכילה מספר או אות גדולה.

CREATE USER USERNAME WITH PASSWORD foo;

אכיפת תפוגת תוקף של סיסמאות

כדי לאכוף את מדיניות תפוגת הסיסמאות:

  1. מוודאים שקובץ postgresql.conf טוען מראש את ספריית אימות הסיסמה.

  2. מגדירים את הדגל password.enforce_expiration לערך ON.

  3. מגדירים את הדגל password.expiration_in_days למספר הימים שאחרי הגדרת הסיסמה, שבהם היא תפוג.

  4. מגדירים את הדגל password.notify_expiration_in_days למספר הימים לפני פקיעת התוקף של הסיסמה שבהם המשתמש מתחיל לקבל התראות על פקיעת התוקף של הסיסמה.

לדוגמה, כדי לאכוף מדיניות סיסמאות שקובעת שתוקף הסיסמאות יפוג אחרי 30 ימים ושהמשתמשים יקבלו התראה 15 ימים לפני שתוקף הסיסמה יפוג, צריך להגדיר את הערכים הבאים בקובץ postgresql.conf:

  • password.enforce_expiration = ON
  • password.expiration_in_days = 30
  • password.notify_expiration_in_days = 15

אם תוקף הסיסמה של משתמש פג, המשתמש לא יכול להתחבר ל-AlloyDB Omni. כדי לאפס את הסיסמה של משתמש:

  1. מתחברים ל-AlloyDB Omni באמצעות psql. לדוגמה, אם התקנתם את AlloyDB Omni באמצעות Docker, מריצים את הפקודה הבאה:

    sh /usr/lib/postgresql/17/bin/psql -h localhost -U postgres

  2. בהנחיה postgres=#, מריצים את הפקודה הבאה:

    ALTER USER USERNAME WITH 'NEW-PASSWORD';
    

מידע נוסף על שינוי סיסמה של משתמש זמין במאמר בנושא ALTER ROLE במסמכי PostgreSQL.

הסיסמאות לא יכולות לכלול שמות משתמש

כדי לאכוף את המדיניות שמונעת מסיסמה להכיל שם משתמש, צריך:

  1. מוודאים שקובץ postgresql.conf טוען מראש את ספריית אימות הסיסמה.

  2. מגדירים את password.enforce_password_does_not_contain_username לערך ON.

לדוגמה, כדי לוודא שסיסמה לא מכילה שם משתמש כמחרוזת משנה, מגדירים את הערך הבא בקובץ postgresql.conf:

  • password.enforce_password_does_not_contain_username = ON

אם הדגל הזה מוגדר, הפעולה הבאה נכשלת כי הסיסמה alex-secret מכילה את שם המשתמש alex:

CREATE USER alex WITH PASSWORD 'alex-secret';