כדי לשפר את האבטחה של אימות מובנה במסד הנתונים, אתם יכולים להגדיר ולנהל כללי מדיניות בנושא סיסמאות למשתמשים במסד הנתונים במכונות של AlloyDB ל-PostgreSQL.
במאמר אימות מפורטות שיטות האימות שזמינות ב-AlloyDB.
מידע על כללי מדיניות בנושא סיסמאות
אם משתמשי מסד הנתונים של האפליקציה מאמתים את הזהות שלהם במכונות AlloyDB באמצעות השיטה המובנית שמבוססת על סיסמה, אתם יכולים לאכוף שימוש בסיסמאות חזקות כדי לשפר את אבטחת האימות. אתם יכולים להגדיר ולהפעיל אכיפת סיסמאות על ידי הגדרת מדיניות סיסמאות במכונות שלכם.
מגבלות של מדיניות סיסמאות
לכללי מדיניות הסיסמאות של AlloyDB יש את המגבלות הבאות:
כללי מדיניות הסיסמאות חלים רק על משתמשים במסד נתונים מובנה (
BUILT_IN). משתמשי מסד נתונים שמבוססים על IAM (IAM_BASED) לא נכללים בכללי המדיניות של סיסמאות למכונות.המדיניות בנושא סיסמאות חלה רק על סיסמאות שנוצרו אחרי שהגדרתם את המדיניות. שינוי במדיניות הסיסמאות לא משפיע על סיסמאות קיימות של משתמשים.
כללי מדיניות הסיסמאות חלים על סיסמאות שהוזנו כטקסט פשוט בלבד. המדיניות בנושא סיסמאות לא חלה על סיסמאות שהוזנו כמחרוזות מוצפנות.
הגדרת מדיניות סיסמאות למכונה
כדי להגדיר מדיניות סיסמאות במכונה, צריך להגדיר דגלי סיסמאות במכונה.
לא לאפשר שם משתמש: מונע את השימוש בשם המשתמש בסיסמה.
מורכבות הסיסמה: בודקים אם הסיסמה מכילה את המספר המותר של אותיות קטנות, אותיות רישיות, מספרים ותווים שאינם אלפאנומריים. כדאי גם לבדוק אם אורך הסיסמה תקין.
תפוגת סיסמה: דרישה להחלפת סיסמה מדי פעם.
כאן מופיעה רשימה של דגלי מדיניות הסיסמאות שנתמכים ב-AlloyDB.
כדי לעמוד בתקני האבטחה ולפעול בהתאם להנחיות של המלצות האבטחה, צריך להפעיל את שלוש האפשרויות יחד על ידי הגדרת דגלי האכיפה הראשיים שלהן לערך ON:
password.enforce_password_does_not_contain_usernamepassword.enforce_complexitypassword.enforce_expiration
אם מגדירים את אחד משלושת הדגלים האלה לערך OFF או משמיטים אותם, המלצות האבטחה מסמנות את המכונה ככזו שלא מופעלת בה מדיניות סיסמאות.
אכיפת סיסמאות מורכבות
כדי לאכוף מדיניות של מורכבות סיסמאות, מבצעים את הפעולות הבאות:
- מגדירים את הדגל
password.enforce_complexityלערךON. - משתמשים בדגלי מדיניות סיסמאות כדי להגדיר את מדיניות הסיסמאות.
לדוגמה, כדי לאכוף מדיניות סיסמאות שקובעת שסיסמה חייבת להכיל לפחות אות רישית אחת, מספר אחד ולהיות באורך של 10 תווים לפחות, צריך להגדיר את הדגלים הבאים:
הדגל
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';
אכיפת תפוגת תוקף של סיסמה
כדי לאכוף את מדיניות תפוגת התוקף של הסיסמה, מבצעים את הפעולות הבאות:
מגדירים את הדגל
password.enforce_expirationלערךON.מגדירים את הדגל
password.expiration_in_daysלמספר הימים שאחריהם פג התוקף של הסיסמה.מגדירים בדגל
password.notify_expiration_in_daysאת מספר הימים לפני שתוקף הסיסמה פג שבהם המשתמש יתחיל לקבל התראות על כך.
לדוגמה, כדי לאכוף מדיניות סיסמאות שקובעת שהתוקף של הסיסמאות יפוג אחרי 30 ימים, ושהמשתמשים יקבלו התראה 15 ימים לפני שהתוקף של הסיסמה שלהם יפוג, צריך להגדיר את הפרטים הבאים:
הדגל
password.enforce_expirationלערךONהדגל
password.expiration_in_daysלערך30הדגל
password.notify_expiration_in_daysלערך15
אם משתמש מתחבר במהלך תקופת ההתראה לפני שהסיסמה שלו פגה, AlloyDB מציג את ההודעה הבאה בחיבור של הלקוח וכותב אותה ב-postgres.log:
Caution: Password is set to expire soon. Be sure to update the password before the expiration time.
אם תוקף הסיסמה של משתמש פג, הוא לא יכול להתחבר למכונה של AlloyDB. כדי לאפס את הסיסמה של משתמש, קראו את המאמר שינוי הסיסמה של משתמש במסד נתונים.
אי אפשר להשתמש בשמות משתמשים בסיסמאות
כדי לאכוף את המדיניות שמונעת מסיסמה להכיל שם משתמש, מבצעים את הפעולות הבאות:
- מגדירים את הדגל
password.enforce_password_does_not_contain_usernameלערךON.
לדוגמה, כדי למנוע מצב שבו הסיסמה מכילה את שם המשתמש כמחרוזת משנה, מגדירים את הערכים הבאים:
- הדגל
password.enforce_password_does_not_contain_usernameלערךON
אם הדגל הזה מוגדר, הפעולה הבאה נכשלת כי הסיסמה alex-secret מכילה את שם המשתמש alex:
CREATE USER alex WITH PASSWORD 'alex-secret';