ב-Google Cloud יש ממשק לניהול זהויות והרשאות גישה (IAM), שמאפשר לתת גישה למשאבים ספציפיים ב- Google Cloud ולמנוע גישה לא רצויה למשאבים אחרים. בדף הזה מוסבר איך Cloud SQL משולב עם IAM, ואיך אפשר להשתמש ב-IAM כדי לנהל את הגישה למשאבים של Cloud SQL ולאימות של מסד הנתונים. למידע מפורט על Google Cloud IAM, תוכלו לעיין במסמכי העזרה של IAM.
ב-Cloud SQL יש קבוצה של תפקידים מוגדרים מראש שנועדו לעזור לכם לשלוט בגישה למשאבים של Cloud SQL. אם התפקידים המוגדרים מראש לא מספקים את קבוצות ההרשאות שאתם צריכים, אתם יכולים גם ליצור תפקידים בהתאמה אישית. בנוסף, התפקידים הבסיסיים הקודמים (עריכה, צפייה ובעלים) עדיין זמינים, אבל הם לא מספקים את אותה בקרת גישה פרטנית כמו התפקידים של Cloud SQL. באופן ספציפי, התפקידים הבסיסיים נותנים גישה למשאבים בכל Google Cloud, ולא רק ל-Cloud SQL. למידע נוסף על תפקידים בסיסיים ב- Google Cloud , קראו את המאמר תפקידים בסיסיים.
אפשר להגדיר מדיניות IAM בכל רמה בהיררכיית המשאבים: ברמת הארגון, ברמת התיקייה או ברמת הפרויקט. משאבים יורשים את כללי המדיניות מכל ההורים שלהם בהיררכיה.
מאמרי עזרה של IAM ל-Cloud SQL
- הרשאות שנדרשות למשימות נפוצות במסוף Google Cloud
- הרשאות נדרשות לפקודות
gcloud sql - ההרשאות הנדרשות לשיטות של Cloud SQL Admin API
- תפקידי IAM מוגדרים מראש ב-Cloud SQL
- הרשאות והתפקידים שלהן
- תפקידים בהתאמה אישית
מושגים שקשורים לאימות ב-IAM
כשמשתמשים באימות IAM, הרשאת הגישה למשאב (מכונה של Cloud SQL) לא ניתנת ישירות למשתמש הקצה. במקום זאת, ההרשאות מקובצות לתפקידים, והתפקידים מוקצים לחשבונות. למידע נוסף, קראו את הסקירה הכללית על IAM.
אדמינים שמאפשרים למשתמשים להתחבר באמצעות אימות של מסד נתונים ב-IAM יכולים להשתמש באימות של IAM כדי לנהל באופן מרכזי את בקרת הגישה למכונות שלהם באמצעות כללי מדיניות של IAM.
מדיניות IAM כוללת את הישויות הבאות:
- חשבונות משתמשים. ב-Cloud SQL אפשר להשתמש בכמה סוגים של חשבונות משתמשים: חשבון משתמש, חשבון שירות (לאפליקציות) או קבוצה. מידע נוסף מופיע במאמר מושגים שקשורים לזהות.
- תפקידים. תפקיד הוא אוסף של הרשאות. אתם יכולים להקצות תפקידים לחשבונות משתמשים כדי לתת להם את ההרשאות הנדרשות לביצוע משימות ספציפיות.
לדוגמה, באימות של מסד נתונים ב-IAM, חשבון משתמש צריך את ההרשאה
cloudsql.instances.loginכדי להתחבר למכונה, שנכללת בתפקיד משתמש במכונה של Cloud SQL. כדי לקבל את ההרשאה, צריך לקשר את המשתמש, חשבון השירות או הקבוצה לתפקיד Cloud SQL מוגדר מראש או לתפקיד בהתאמה אישית שכולל את ההרשאה. מידע נוסף על תפקידי IAM מופיע במאמר תפקידים. - משאב. המשאבים שחשבונות המשתמשים ניגשים אליהם הם מכונות של Cloud SQL. כברירת מחדל, קישורי מדיניות IAM חלים ברמת הפרויקט, כך שחשבונות משתמשים מקבלים הרשאות תפקיד לכל המכונות של Cloud SQL בפרויקט.
אימות מסד נתונים ב-IAM
אימות מסד נתונים הוא תהליך שבו מאמתים את הזהות של משתמש שמנסה לגשת למסדי נתונים. ב-Cloud SQL, אתם יכולים להשתמש בסוגים הבאים של אימות מסד נתונים למשתמשים במסד הנתונים:
- האימות המובנה של מסד הנתונים משתמש בשם משתמש ובסיסמה כדי לאמת משתמש במסד הנתונים.
- באימות מסד נתונים באמצעות IAM, המשתמש מאומת באמצעות טוקן גישה.
השוואה בין אפשרויות האימות של מסד הנתונים
בטבלה הבאה מוצגת השוואה בין שיטות שונות לאימות מסדי נתונים ב-Cloud SQL.
התכונה אימות מובנה של מסד נתונים אימות מסד נתונים של IAM (פרטני) אימות קבוצת IAM שיטת אימות סיסמה טוקן אימות זמני טוקן אימות זמני הצפנת תנועה ברשת לא נדרש SSL נדרש SSL נדרש SSL ניהול משתמשים גלילה ידנית מרוכזת באמצעות IAM מרוכזת באמצעות קבוצות IAM ו-Cloud Identity אימות קבוצות ב-IAM
אימות קבוצות ב-IAM מאפשר לנהל משתמשי Cloud SQL ברמת הקבוצה. דוגמה לקבוצה היא קבוצת Cloud Identity. התכונה הזו מפשטת את ניהול המשתמשים במסד הנתונים. אתם יכולים לנהל את תפקידי ה-IAM או ההרשאות של Cloud SQL לכמה חשבונות בבת אחת, במקום לעדכן כל משתמש או חשבון שירות בנפרד. אתם יכולים גם להעניק ולבטל את הרשאות מסד הנתונים לקבוצת Cloud Identity. כל חשבון חדש שתוסיפו לקבוצת Cloud Identity יקבל את ההרשאות של הקבוצה הזו.
עם אימות קבוצות ב-IAM, אתם יכולים:
- להוסיף משתמש לקבוצה, כך שהוא יקבל בירושה את תפקידי ה-IAM והרשאות מסד הנתונים באופן אוטומטי.
- כדי להסיר את הרשאות הגישה וההרשאות למסדי הנתונים של Cloud SQL, צריך להסיר את המשתמש מהקבוצה.
- להעניק הרשאות התחברות או הרשאות למסד נתונים לקבוצה פעם אחת, במקום להעניק את אותן הרשאות כמה פעמים למשתמשים שונים.
- להסיר בבת אחת את הרשאות ההתחברות או הגישה לאובייקט במסד הנתונים של קבוצה.
למרות שהתפקידים וההרשאות ב-IAM מוקצים ברמת הקבוצה, המשתמשים וחשבונות השירות משתמשים בחשבונות ובפרטי הכניסה האישיים שלהם ב-IAM כדי להתחבר, ולא בחשבון קבוצתי משותף. אחרי ההתחברות הראשונה של המשתמש או של חשבון השירות, Cloud SQL יוצר חשבון מסד נתונים במכונה בשביל אותו משתמש או חשבון שירות.
פעילות ההתחברות ומסד הנתונים של כל משתמש או חשבון שירות מופיעה ביומני הביקורת. למטרות ביקורת, אתם יכולים לראות איזה חשבון ביצע איזו פעולה במסד הנתונים.
למידע נוסף על עבודה עם קבוצות ב-Cloud Identity, קראו את הסקירה הכללית על Cloud Identity.
כשמוסיפים משתמש או חשבון שירות לקבוצה, מתרחשים השינויים הבאים ב-Cloud SQL:
- אם כבר נתתם לקבוצה הרשאות התחברות ב-IAM, המשתמש או חשבון השירות יכולים להתחבר למכונה של Cloud SQL כי הם שייכים לקבוצה.
- המשתמש מקבל באופן אוטומטי את כל הרשאות מסד הנתונים שניתנו לקבוצה.
כשמסירים משתמש או חשבון שירות מהקבוצה, מתרחשים השינויים הבאים ב-Cloud SQL:
- המשתמש מאבד את כל הרשאות מסד הנתונים שקיבל בירושה כשהיה חבר בקבוצה.
- יכול להיות שהמשתמש עדיין יוכל להתחבר אם הוא יקבל הרשאות התחברות של IAM למכונה של Cloud SQL דרך חברויות בקבוצות אחרות. עם זאת, כשהמשתמש יתחבר, לא יהיו לו הרשאות למסד הנתונים מהקבוצה הקודמת שהוא היה חבר בה.
שיטות מומלצות לאימות קבוצות ב-IAM
- כשמבטלים את הרשאת ההתחברות (
cloudsql.instances.login) לקבוצת IAM ב-Cloud Identity, חשוב לוודא שמוחקים את הקבוצה גם ממכונת Cloud SQL. - כשמוחקים קבוצה מ-Cloud Identity, חשוב לוודא שמוחקים אותה גם מהמכונה של Cloud SQL.
- אתם יכולים להשתמש בקבוצות כדי להגדיר בקרת גישה המבוססת על תפקידים (RBAC) במסד הנתונים. תמיד צריך לתת לקבוצה את ההרשאות המינימליות הנדרשות.
- אל תקצו תפקידי אימות של קבוצות IAM למשתמשים מובנים. לדוגמה, אם יש לכם משתמש מובנה,
user-a, ואתם יוצרים משתמש לאימות קבוצה ב-IAM,user-b@example.com, אל תקצו את התפקידuser-b@example.comל-user-a.
הגבלות על אימות קבוצות ב-IAM
- כשמשתמשים באימות של קבוצת IAM, אם יש לכם מכונה של Cloud SQL עם רפליקות לקריאה בלבד, אתם צריכים להתחבר קודם למכונה הראשית ורק אחר כך למכונה של הרפליקה לקריאה בלבד. אחרי ההתחברות הראשונה למכונה הראשית, פרטי המשתמשים בקבוצה משוכפלים לרפליקות לקריאה בלבד. בכניסות הבאות, אתם יכולים להתחבר ישירות לרפליקה לקריאה בלבד.
- אפשר להוסיף עד 200 קבוצות IAM למכונה.
- אי אפשר להוסיף חשבונות שירות או משתמשים פרטיים ב-IAM ששייכים לקבוצה באותו מכונה. במילים אחרות, אי אפשר להוסיף חשבון מסוג
CLOUD_IAM_USERאוCLOUD_IAM_SERVICE_ACCOUNTאם כבר קיים חשבון זהה מסוגCLOUD_IAM_GROUP_USERאוCLOUD_IAM_GROUP_SERVICE_ACCOUNT. - אם כבר קיים חשבון פרטי במופע מסוג
CLOUD_IAM_USERאוCLOUD_IAM_SERVICE_ACCOUNT, אי אפשר להשתמש בחשבון לאימות קבוצת IAM. סוגי המשתמשים האלה לא יורשים תפקידי IAM והרשאות למסד הנתונים מקבוצה.כדי לפתור את הבעיה ולהשתמש בחשבון עם אימות של קבוצת IAM, צריך להסיר את המשתמש או את חשבון השירות הספציפיים ב-IAM.
מידע נוסף מופיע במאמר משתמש או חשבון שירות קיימים ב-IAM לא יורשים את הרשאות מסד הנתונים שניתנו לקבוצה שלהם. - שינויים בחברות בקבוצה ב-Cloud Identity, כמו הוספת חשבון, מתעדכנים תוך כ-15 דקות. הזמן הזה הוא בנוסף לזמן שנדרש לשינויים ב-IAM.
אימות אוטומטי לעומת אימות ידני של מסד נתונים ב-IAM
ב-Cloud SQL ל-PostgreSQL יש שתי אפשרויות לאימות של מסד נתונים ב-IAM: אוטומטית וידנית.
אימות אוטומטי של מסד נתונים ב-IAM
אימות אוטומטי של מסד נתונים ב-IAM מאפשר לכם להעביר את הבקשה והניהול של טוקני הגישה למחבר Cloud SQL מתווך, כמו Cloud SQL Auth Proxy או אחד ממחברי השפה של Cloud SQL. באימות אוטומטי של מסד נתונים ב-IAM, המשתמשים צריכים להעביר רק את שם המשתמש של מסד הנתונים ב-IAM בבקשת חיבור מהלקוח. המחבר שולח את פרטי אסימון הגישה למאפיין הסיסמה בשם הלקוח.
כדי להשתמש באימות אוטומטי של מסדי נתונים ב-IAM, צריך להשתמש במחבר של Cloud SQL. האימות נתמך ב-Cloud SQL Auth Proxy, במחבר של Go, במחבר של Java ובמחבר של Python.
כדי ליהנות מחוויית השימוש הכי מאובטחת ואמינה, מומלץ להשתמש באימות אוטומטי של מסד נתונים באמצעות IAM. אימות מסד נתונים של IAM משתמש באסימוני גישה של OAuth 2.0, שהם קצרי-טווח ותקפים לשעה אחת בלבד. מחברי Cloud SQL יכולים לבקש ולרענן את האסימונים האלה, כדי להבטיח חיבורים יציבים לתהליכים או לאפליקציות לטווח ארוך שמסתמכים על מאגר חיבורים. מומלץ מאוד להשתמש באימות אוטומטי של מסד נתונים ב-IAM במקום באימות ידני.
מידע נוסף זמין במאמר התחברות באמצעות אימות אוטומטי של מסד נתונים ב-IAM.
אימות ידני של מסד נתונים ב-IAM
באימות ידני של מסד נתונים באמצעות IAM, חשבון המשתמש ב-IAM צריך להעביר באופן מפורש את אסימון הגישה למאפיין הסיסמה בבקשת החיבור של הלקוח. חשבונות המשתמשים צריכים קודם להתחבר אל Google Cloud ולבקש במפורש את טוקן הגישה מ-IAM.
באמצעות ה-CLI של gcloud, אתם יכולים לבקש באופן מפורש אסימון OAuth 2.0 עם היקף ההרשאות של Cloud SQL Admin API שמשמש להתחברות למסד הנתונים. כשאתם מתחברים כמשתמשים במסד נתונים עם אימות IAM, אתם משתמשים בכתובת האימייל שלכם כשם המשתמש ובטוקן הגישה כסיסמה. אתם יכולים להשתמש בשיטה הזו עם חיבור ישיר למסד הנתונים או עם מחבר של Cloud SQL.
אפשר להתחבר באמצעות אימות מסד נתונים של IAM רק דרך חיבור SSL.
מידע נוסף זמין במאמר התחברות באמצעות אימות ידני של מסד נתונים ב-IAM.
בקרת גישה מבוססת-הקשר ואימות מסד נתונים ב-IAM
אם אתם משתמשים בבקרת גישה מבוססת-הקשר בהגדרות של IAM, אתם לא יכולים להשתמש במחבר של Cloud SQL כמו Cloud SQL Auth Proxy או אחד ממחברי השפה של Cloud SQL עם אימות של מסד נתונים ב-IAM. ניסיונות להתחבר באופן ידני או אוטומטי באמצעות אימות IAM ייכשלו. במקום זאת, מתחברים ישירות למכונה.
ניהול משתמשים וחשבונות שירות
כדי לתת למשתמשים ולחשבונות שירות גישה למסדי נתונים במכונה באמצעות אימות של מסד נתונים ב-IAM, צריך להוסיף אותם למכונה או לקבוצה שיש לה גישה למכונה. למידע נוסף, קראו את המאמר הוספת משתמש או חשבון שירות שמשתמשים ב-IAM.
אם אתם משתמשים במסוף Google Cloud כדי להוסיף משתמשים או חשבונות שירות, Cloud SQL מבקש מכם להוסיף למשתמש את התפקיד "משתמש ב-Cloud SQL". התפקיד הזה נדרש כדי שהמשתמשים יוכלו להתחבר למכונה.
אם מוסיפים משתמשים באמצעותgcloudאו ה-API, צריך להעניק הרשאות התחברות באופן ידני. משתמשים בפקודה GRANT של PostgreSQL כדי להעניק הרשאות למסד הנתונים.הגדרת מכונה לאימות של מסד נתונים ב-Cloud SQL IAM
אפשר להפעיל אימות של מסד נתונים ב-IAM במכונה באמצעות הדגל
cloudsql.iam_authentication. אחרי שמפעילים את הדגל הזה, המכונה מאפשרת התחברות מחשבונות שמוגדרים לאימות מסד נתונים של IAM. הדגל הזה מופעל כברירת מחדל אם יוצרים את המכונות באמצעות מסוף Google Cloud .הדגל הזה נדרש לאימות קבוצות ב-IAM ולאימות מסדי נתונים ב-IAM.
הגדרת הדגל לא מונעת ממשתמשים קיימים שאינם משתמשי IAM להשתמש בשמות המשתמשים ובסיסמאות שלהם כדי להתחבר. עם זאת, אם משביתים את הדגל הזה במכונה, כל משתמש שהוספתם בעבר באמצעות אימות מסד נתונים של IAM מאבד את הגישה למכונה. מידע נוסף זמין במאמר הגדרת מכונות לאימות מסד נתונים של IAM.
אימות של מסד נתונים ב-Cloud SQL IAM בתרחישים שונים של מכונות
עותקים לקריאה בלבד אימות מסד נתונים של IAM לא מופעל באופן אוטומטי ברפליקה לקריאה בלבד, גם אם הוא מופעל במכונה הראשית. אחרי שיוצרים עותק לקריאה בלבד, צריך להוסיף אימות של מסד הנתונים באמצעות IAM. מידע נוסף זמין במאמר הגדרת פרטי כניסה של עותק לקריאה בלבד לאימות של מסד נתונים ב-IAM. מכונות ששוחזרו אם המכונה גובתה בעבר ואחר כך שוחזרה לאותה מכונה או למכונה אחרת באותו פרויקט, חלות הרשאות ההתחברות הנוכחיות של המשתמש. אם משחזרים גיבוי למכונה חדשה בפרויקט אחר, צריך להגדיר את הרשאות המשתמשים למכונה החדשה. מידע נוסף זמין במאמר הוספת משתמש או חשבון שירות שמשתמשים באימות של מסד נתונים באמצעות IAM. מכונות ששוחזרו לנקודת זמן ספציפית אם מבצעים שחזור לנקודת זמן מסוימת באותו פרויקט, הרשאות ההתחברות הנוכחיות של המשתמש חלות על מכונת היעד. אם משחזרים מכונה לנקודת זמן מסוימת בפרויקט אחר, צריך להגדיר את הרשאות המשתמשים למכונה החדשה. מידע נוסף זמין במאמר הוספת משתמש או חשבון שירות שמשתמשים באימות מסד נתונים של IAM. מידע על תנאי IAM
תנאי IAM מאפשרים לכם להקצות תפקידים על סמך מגוון מאפיינים. לדוגמה, אתם יכולים לאפשר גישה רק בתאריכים ובשעות מסוימים, או לתת גישה רק למשאבי Cloud SQL עם שמות מסוימים.
למידע נוסף על תנאי IAM, קראו את המאמר סקירה כללית של תנאי IAM. במאמר שימוש בתנאי IAM תוכלו לקרוא מידע נוסף על השימוש בתנאי IAM עם Cloud SQL, כולל דוגמאות.
עבודה עם יומני ביקורת של Cloud
כדי לתעד את הגישה לנתונים, כולל התחברויות, אתם יכולים להשתמש ביומני ביקורת. כברירת מחדל, יומני הביקורת של Cloud מושבתים. כדי לעקוב אחרי ההתחברות, צריך להפעיל את יומני בקרת הרשאות הגישה לנתונים. שימוש ביומני ביקורת למטרה הזו כרוך בעלויות של רישום נתונים ביומן. מידע נוסף זמין במאמרים יומני ביקורת, הגדרת בקרת הרשאות גישה לנתונים ותמחור של נתוני רישום ביומן.
ביצועים במכונות עם ליבת מעבד משותפת
סוגי מכונות עם ליבה משותפת (כמו
db-f1-microו-db-g1-small) מסתמכים על פרצי מעבד (CPU) כדי לטפל בעליות חדות קצרות בפעילות. אימות מסד נתונים ב-IAM דורש יותר משאבי מחשוב מאשר אימות מובנה באמצעות סיסמה. לכן, כשמכונה עם ליבת מעבד משותפת לא נמצאת יותר במצב של פרץ או כשהיא חווה ניצול גבוה של המעבד, יכול להיות שחיבורים שמשתמשים באימות של מסד נתונים ב-IAM יחוו זמן אחזור גבוה או זמן קצוב לתפוגה.כדי להבטיח ביצועים אופטימליים וחיבור אמין:
- הטמעה של מאגר חיבורים קבוע: מגדירים מאגרי חיבורים בצד הלקוח (כמו HikariCP ל-Java, מאגרי חיבורים של SQLAlchemy ל-Python או מאגרי
database/sqlל-Go), מפעילים מאגר חיבורים מנוהל או משתמשים ב-Cloud SQL Auth Proxy. - הגדלת זמן הקצוב לתפוגה של חיבור הלקוח: אם האפליקציה צריכה ליצור חיבורים חדשים בתקופות של פעילות גבוהה של המעבד (CPU), צריך להגדיר זמן קצוב לתפוגה ארוך יותר (לדוגמה, 10 עד 15 שניות) במנהל ההתקן של מסד הנתונים או בהגדרות הלקוח.
- שדרוג למכונות עם ליבה ייעודית: עורכים את המכונה כדי להשתמש בסוג מכונה עם ליבה ייעודית. מכונות עם ליבה ייעודית מספקות הקצאות של מעבד (CPU) ללא הגבלה, שמבטיחות זמני חיבור מהירים ועקביים יותר.
הגבלות
- ההתחברות לחשבון משתמש לאימות מסד נתונים של IAM חייבת להיות באותיות קטנות בלבד. לדוגמה,
example-user@example.com.Example-User@example.comאסור. - מטעמי אבטחה, אפשר להתחבר באמצעות אימות IAM של מסד נתונים רק בחיבור SSL. חיבורים לא מוצפנים נדחים.
- לכל מכונה יש מכסת התחברות לדקה, שכוללת גם התחברויות שהצליחו וגם התחברויות שנכשלו. אם חורגים מהמכסה, אי אפשר להתחבר באופן זמני. מומלץ להימנע מהתחברויות תכופות ולהגביל את ההתחברויות באמצעות רשתות מורשות. מכסת ההרשאות להתחברות היא 12,000 לדקה, לכל מכונה.
- שמות המשתמשים במסד הנתונים מוגבלים ל-63 תווים. בחשבונות שירות, גם אחרי ש-Cloud SQL מקצר את הסיומת
.gserviceaccount.comל-sa-name@project-id.iam, שם המשתמש שנוצר לא יכול להיות ארוך מ-63 תווים. אחרת, לא תוכלו להוסיף את חשבון השירות כמשתמש לאימות מסד נתונים ב-IAM.
המאמרים הבאים