ניהול אימות IAM

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

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

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

gcloud redis clusters create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --auth-mode=iam-auth

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

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

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

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

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

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

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

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

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

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

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

התחברות למופע שמשתמש באימות IAM

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

  2. כדי להגדיר חשבון שירות ולהפעיל את היקף Cloud Platform API למכונה וירטואלית ב-Compute Engine, משתמשים בפקודה gcloud compute instances set-service-account בפרויקט.

    gcloud compute instances set-service-account VM_NAME \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --scopes=SCOPE
    

    מחליפים את הפרטים הבאים:

    • VM_NAME: השם של המכונה הווירטואלית של Compute Engine
    • SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות
    • SCOPE: היקף Cloud Platform API של המכונה הווירטואלית (cloud-platform)

    לדוגמה, הפקודה הבאה מקצה את חשבון השירות my-sa-123@my-project-123.iam.gserviceaccount.com למכונה וירטואלית בשם example-VM ומגדירה את היקף הגישה במכונה הווירטואלית הזו ל-Cloud Platform API:

    gcloud compute instances set-service-account example-VM \
    --service-account=my-sa-123@my-project-123.iam.gserviceaccount.com \
    --scopes=cloud-platform
    

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

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

    Memorystore for Redis API

  4. כדי להתקין את redis-cli במכונת ה-VM ב-Compute Engine, מריצים את הפקודה הבאה מטרמינל ה-SSH של Compute Engine:

    sudo apt-get install redis-tools
    
  5. מריצים את הפקודה הבאה כדי לקבל אסימון גישה למשתמש IAM:

    gcloud auth print-access-token
    
  6. מתחברים לנקודת הקצה של הגילוי של המכונה:

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

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

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

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

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

  7. מריצים את הפקודה CLUSTER SHARDS כדי לראות את טופולוגיית האשכול. רושמים את אחת מכתובות ה-IP ומספרי היציאות של הצומת.

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

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

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

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

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

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

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

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

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

    • SA_NAME הוא השם של חשבון השירות.
    • DESCRIPTION הוא תיאור אופציונלי של חשבון השירות.
    • DISPLAY_NAME הוא שם של חשבון שירות שיוצג במסוףGoogle Cloud .
  2. מקצים לחשבון השירות את התפקיד redis.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: שם התפקיד. בדוגמה הזו: redis.dbConnectionUser.
  3. מאמתים את האפליקציה כחשבון השירות שצוין. מידע נוסף זמין במאמר חשבונות שירות.

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

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

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

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

-WRONGPASS invalid username-password pair or user is disabled

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

-NOAUTH Authentication required

בודקים שהאפליקציה מוגדרת לספק אסימון גישה של IAM לשרת Memorystore for Redis Cluster האפליקציה לא מספקת אסימון גישה לשרת Memorystore for Redis Cluster. מוודאים שהאפליקציה מוגדרת לספק אסימון גישה, לפי ההוראות במאמר חיבור למופע שמשתמש באימות IAM.

-ERR (ERR_IAM_EXHAUSTED) Memorystore IAM authentication backend quota exceeded. See https://cloud.google.com/memorystore/docs/cluster/manage-iam-auth#error_messages.

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

-ERR (ERR_IAM_OTHER) Memorystore IAM authentication backend error. See https://cloud.google.com/memorystore/docs/cluster/manage-iam-auth#error_messages.

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