בדף הזה מפורטות הוראות לביצוע משימות נפוצות שקשורות לתכונת האימות של 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
אם עדיין אין לכם מכונה וירטואלית ב-Compute Engine שמשתמשת באותה רשת מורשית כמו אשכול Redis, אתם יכולים ליצור אחת ולהתחבר אליה באמצעות המדריך להתחלה מהירה בנושא שימוש במכונה וירטואלית עם Linux.
כדי להגדיר חשבון שירות ולהפעיל את היקף 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
מידע נוסף על הפעלת היקף הגישה הזה זמין במאמר צירוף חשבון השירות ועדכון היקף הגישה. מידע נוסף על שיטות מומלצות בנושא היקף ההרשאות זמין במאמר שיטות מומלצות בנושא היקף ההרשאות.
מפעילים את Memorystore for Redis API בפרויקט.
כדי להתקין את redis-cli במכונת ה-VM ב-Compute Engine, מריצים את הפקודה הבאה מטרמינל ה-SSH של Compute Engine:
sudo apt-get install redis-tools
מריצים את הפקודה הבאה כדי לקבל אסימון גישה למשתמש IAM:
gcloud auth print-access-token
מתחברים לנקודת הקצה של הגילוי של המכונה:
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
מחליפים את מה שכתוב בשדות הבאים:
NETWORK_ADDRESS היא כתובת הרשת של המופע. כדי לראות את כתובת הרשת, אפשר לעיין במאמר בנושא הצגת פרטי מופע.
PORT הוא מספר היציאה של המופעים. כדי לראות את מספר היציאה, אפשר לעיין במאמר בנושא הצגת פרטי מופע.
ACCESS_TOKEN הוא אסימון הגישה של IAM שאוחזר בשלבים הקודמים.
מריצים את הפקודה
CLUSTER SHARDSכדי לראות את טופולוגיית האשכול. רושמים את אחת מכתובות ה-IP ומספרי היציאות של הצומת.כדי להשתמש ב-
redis-cliלאימות ולחיבור לצומת, משתמשים בפקודה הבאה:redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
מחליפים את מה שכתוב בשדות הבאים:
- NODE_IP_ADDRESS: כתובת ה-IP של הצומת שמצאתם בשלב הקודם
- NODE_PORT: מספר היציאה של הצומת שמצאתם בשלב הקודם
- ACCESS_TOKEN: אסימון הגישה ל-IAM שאחזרתם בשלבים הקודמים
כדי לוודא שיש לכם חיבור מאומת לצומת, מריצים פקודה של Redis
SETו-GET.מוחקים את המכונה הווירטואלית של Compute Engine שבה השתמשתם כדי להתחבר לאשכול Redis. כך תוכלו להימנע מחיובים בחשבון לחיוב ב-Cloud.
אחזור אוטומטי של טוקן גישה
(אופציונלי) אם עדיין לא עשיתם זאת, צרו חשבון שירות לאפליקציה (ראו יצירה וניהול של חשבון שירות).
gcloud iam service-accounts create SA_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"מחליפים את מה שכתוב בשדות הבאים:
- SA_NAME הוא השם של חשבון השירות.
- DESCRIPTION הוא תיאור אופציונלי של חשבון השירות.
- DISPLAY_NAME הוא שם של חשבון שירות שיוצג במסוףGoogle Cloud .
מקצים לחשבון השירות את התפקיד
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.
מאמתים את האפליקציה כחשבון השירות שצוין. מידע נוסף זמין במאמר חשבונות שירות.
דוגמת קוד לחיבור למופע שמשתמש באימות IAM
תוכלו לעיין בדוגמת קוד שמראה איך לאמת את האפליקציה באמצעות ספריות לקוח פופולריות. בנוסף, אפשר לראות איך להשתמש בדוגמת הקוד הזו כדי להתחבר למופע שמשתמש באימות IAM.
פתרון בעיות בהודעות שגיאה שקשורות לאימות IAM
| הודעת השגיאה | הפעולה המומלצת | תיאור |
|---|---|---|
|
אימות של שם המשתמש ושל אסימון הגישה שסופקו לשרת Memorystore for Redis Cluster | שם המשתמש או טוקן הגישה שסופקו לא תקינים. הערך הנתמך היחיד לשם המשתמש הוא 'default'. אם האפליקציה כבר משתמשת בשם המשתמש 'ברירת מחדל', צריך לוודא שאסימון הגישה לא פג ושהוא מאוחזר בהתאם להוראות שבמאמר התחברות למופע שמשתמש באימות IAM. אם בוצעו שינויים בהרשאות ב-IAM לאחרונה, יכול להיות שיעברו כמה דקות עד שהן יתעדכנו. |
|
בודקים שהאפליקציה מוגדרת לספק אסימון גישה של IAM לשרת Memorystore for Redis Cluster | האפליקציה לא מספקת אסימון גישה לשרת Memorystore for Redis Cluster. מוודאים שהאפליקציה מוגדרת לספק אסימון גישה, לפי ההוראות במאמר חיבור למופע שמשתמש באימות IAM. |
|
ניסיון חוזר עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff) | עומס יתר על הקצה העורפי של IAM, והוא החזיר שגיאה על חריגה ממכסה לשרת Memorystore for Redis Cluster. אפליקציות צריכות לנסות לשלוח שוב את הבקשה עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff) כדי למנוע כשלים נוספים בחיבור. |
|
ניסיון חוזר עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff) | הקצה העורפי של IAM החזיר שגיאה זמנית לשרת Memorystore for Redis Cluster. האפליקציות צריכות לנסות שוב את השגיאה הזו עם השהיה מעריכית לפני ניסיון חוזר כדי למנוע כשלים נוספים בחיבור. |