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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

כדי לעמוד בתקני האבטחה ולפעול בהתאם להנחיות של המלצות האבטחה, צריך להפעיל את כל שלוש האפשרויות יחד על ידי הגדרת דגלי האכיפה הראשיים שלהן לערך ON:

  • password.enforce_password_does_not_contain_username
  • password.enforce_complexity
  • password.enforce_expiration

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

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

כדי שמדיניות הסיסמאות תיכנס לתוקף ב-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 docker exec -it CONTAINER-NAME 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';

המאמרים הבאים