ניהול אימות IAM

בדף הזה מפורטות הוראות לביצוע משימות נפוצות שקשורות לתכונת האימות של IAM ב-Memorystore for Valkey. למידע נוסף על התכונה, קראו את המאמר מידע על אימות IAM.

יצירת מופע עם אימות IAM

כדי ליצור מכונה של Memorystore for Valkey שמשתמשת באימות IAM, מריצים את הפקודה create:

gcloud memorystore instances create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --authorization-mode=iam-auth

מחליפים את מה שכתוב בשדות הבאים:

  • ‫INSTANCE_ID הוא המזהה של מופע Memorystore for Valkey שאתם יוצרים. מזהה המכונה צריך להיות באורך של 1 עד 63 תווים, ולהכיל רק אותיות קטנות, מספרים או מקפים. הוא צריך להתחיל באות קטנה ולהסתיים באות קטנה או במספר.

  • ‫REGION_ID הוא האזור שבו רוצים למקם את המכונה.

  • ‫NETWORK היא הרשת שמשמשת ליצירת המופע. הפורמט צריך להיות: projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID. מזהה הרשת שמשמש כאן צריך להיות זהה למזהה הרשת שמשמש במדיניות של חיבור השירות. אחרת, הפעולה create תיכשל. פרטים נוספים זמינים במאמר בנושא רשתות.

  • ‫NODE_TYPE הוא סוג הצומת של המכונה.

  • ‫SHARD_COUNT קובע את מספר הרסיסים במופע. מספר השברים קובע את קיבולת הזיכרון הכוללת לאחסון נתוני המכונה. לפרטים נוספים על מפרט המכונה, ראו מפרט המכונה והצומת.

מתן הרשאות לאימות ב-IAM

כדי לתת גישה ל-IAM, צריך לתת לחשבון המשתמש את התפקיד roles/memorystore.dbConnectionUser באמצעות ההוראות להקצאת תפקיד ב-IAM.

כברירת מחדל, הקצאת התפקיד roles/memorystore.dbConnectionUser לחשבון משתמש מאפשרת לו לגשת לכל המופעים בפרויקט.

יצירת תפקיד אדמין מוגבל ב-IAM למופע

יכול להיות שתרצו ליצור תפקיד שיוכל לשנות את הרשאות ה-IAM של חיבור למופע בלי להעניק גישת אדמין מלאה ל-IAM. כדי לעשות את זה, אפשר ליצור אדמין IAM מוגבל לתפקיד roles/memorystore.dbConnectionUser. פרטים נוספים זמינים במאמר בנושא יצירת אדמינים מוגבלים ב-IAM.

התחברות למכונה שמשתמשת באימות ב-IAM

  1. אם עדיין אין לכם מכונה וירטואלית ב-Compute Engine שמשתמשת באותה רשת מורשית כמו מכונת Valkey, אתם צריכים ליצור מכונה כזו ולהתחבר אליה לפי ההוראות במאמר התחלה מהירה: שימוש במכונה וירטואלית של Linux.

  2. מפעילים את היקף ההרשאות של Cloud Platform API בפרויקט. מידע נוסף על הפעלת היקף הגישה הזה זמין במאמר צירוף חשבון השירות ועדכון היקף הגישה. למידע נוסף על שיטות מומלצות להיקף הזה, ראו שיטות מומלצות להיקפים.

  3. מפעילים את Memorystore for Valkey API בפרויקט.

    ‫Memorystore for Valkey API

  4. מתקינים את valkey-cli במכונה הווירטואלית של Compute Engine לפי ההוראות במאמר התקנת Valkey.

  5. מריצים את הפקודה הבאה כדי לאחזר אסימון גישה למשתמש IAM:

    gcloud auth print-access-token
    

    התוקף של טוקני הגישה פג אחרי שעה. מידע נוסף זמין במאמר משך הזמן של אסימון גישה ב-IAM.

  6. מתחברים לנקודת הקצה לזיהוי של המכונה:

    valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫NETWORK_ADDRESS: כתובת הרשת של המכונה. כדי לראות את כתובת הרשת, עיינו במאמר הצגת פרטי המכונה.

    • ‫PORT: מספר היציאה של המכונה. כדי לראות את מספר היציאה, עיינו במאמר הצגת פרטי המכונה.

    • ‫ACCESS_TOKEN: אסימון הגישה שאחזרתם בשלב הקודם.

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

    אם מפעילים הצפנה במעבר במכונה, צריך להוסיף את הדגלים של Transport Layer Security ‏ (TLS). לדוגמה:

    valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c --tls --cacert /tmp/server_ca.pem
    
  7. אופציונלי: אם יש לכם מופע עם Cluster Mode Enabled, מריצים את הפקודה CLUSTER SHARDS כדי לראות את טופולוגיית הצומת. שימו לב לאחת מכתובות ה-IP ומספרי היציאות של הצומת.

    אם יש לכם מכונה שבה מצב האשכול מושבת, אתם יכולים לדלג על השלב הזה.

  8. כדי להשתמש ב-valkey-cli לאימות ולחיבור לצומת, משתמשים בפקודה הבאה:

    valkey-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫NODE_IP_ADDRESS: כתובת ה-IP של הצומת שציינתם בשלב הקודם
    • ‫NODE_PORT: מספר היציאה של הצומת שרשמתם בשלב הקודם
    • ‫ACCESS_TOKEN: אסימון הגישה של IAM שאחזרתם קודם בהליך הזה
  9. כדי לוודא שיש לכם חיבור מאומת לצומת, מריצים פקודת Valkey SET ו-GET.

  10. מחיקת המכונה הווירטואלית של Compute Engine ששימשה לחיבור למופע. כך תוכלו להימנע מצבירת חיובים בחשבון לחיוב ב-Cloud.

אחזור אוטומטי של טוקן גישה

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

  1. (אופציונלי) אם עדיין לא עשיתם את זה, צרו חשבון שירות לאפליקציה (ראו יצירה וניהול של חשבון שירות).

    gcloud iam service-accounts create SA_NAME \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫SA_NAME הוא השם של חשבון השירות.
    • ‫DESCRIPTION הוא תיאור אופציונלי של חשבון השירות.
    • ‫DISPLAY_NAME הוא שם של חשבון שירות שיוצג במסוףGoogle Cloud .
  2. מקצים לחשבון השירות את התפקיד memorystore.dbConnectionUser בפרויקט.

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
    --role=roles/"ROLE_NAME"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט.
    • ‫SA_NAME: השם של חשבון השירות.
    • ‫ROLE_NAME: שם התפקיד. בדוגמה הזו: memorystore.dbConnectionUser.
  3. מאמתים את האפליקציה כחשבון השירות הנתון. מידע נוסף זמין במאמר חשבונות שירות.

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

דוגמת קוד להתחברות למכונה שמשתמשת באימות IAM

במאמר דוגמת קוד לאימות IAM ולהצפנה במעבר מוסבר איך להגדיר ספריית לקוח כדי להתחבר למכונה שמשתמשת באימות IAM, באמצעות דוגמת קוד שתואמת ל-Valkey.

פתרון בעיות שקשורות להודעות שגיאה באימות IAM

הודעת השגיאה הפעולה המומלצת תיאור

-WRONGPASS invalid username-password pair or user is disabled

מוודאים שטוקן הגישה שסופק לשרת Memorystore for Valkey מופעל, ושהמשתמש התואם ברשימת ה-ACL מופעל.

לחשבון המשתמש ב-IAM אין את ההרשאות הנדרשות, טוקן הגישה שסיפקתם לא תקין או שהמשתמש התואם ברשימת ה-ACL מושבת.

מוודאים שטוקן הגישה לא פג ושהטוקן אוחזר בהתאם להוראות במאמר התחברות למופע שמשתמש באימות IAM.

אם שיניתם לאחרונה את הרשאות ה-IAM, יכול להיות שיעברו כמה דקות עד שההרשאות יתעדכנו.

-NOAUTH Authentication required

מוודאים שהאפליקציה מוגדרת לספק טוקן גישה של IAM לשרת של Memorystore for Valkey.

האפליקציה לא מספקת אסימון גישה לשרת Memorystore for Valkey.

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

-ERR (ERR_IAM_EXHAUSTED) Memorystore IAM authentication backend quota exceeded.

נסו שוב עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff).

הקצה העורפי של IAM עמוס מדי והחזיר שגיאה של חריגה ממכסה לשרת Memorystore for Valkey.

כדי למנוע כשלים נוספים בחיבור, מומלץ שאפליקציות ינסו שוב לבצע את הפעולה שגרמה לשגיאה באמצעות השהיה מעריכית לפני ניסיון חוזר (exponential backoff).

-ERR (ERR_IAM_OTHER) Memorystore IAM authentication backend error.

צריך לאמת את שם המשתמש או לנסות שוב עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff).

השגיאה הזו מתרחשת מהסיבות הבאות:

  • שם המשתמש שציינת לא תקין. אפשר להשתמש בשם המשתמש default, להשמיט את שם המשתמש או להשתמש בכתובת האימייל של חשבון המשתמש ב-IAM.
  • ה-backend של IAM החזיר שגיאה זמנית לשרת של Memorystore for Valkey.

אם שם המשתמש תקין, מומלץ שהאפליקציה תנסה שוב את השגיאה הזו עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff) כדי למנוע כשלים נוספים בחיבור.