בדף הזה מוסבר איך לבצע משימות נפוצות שקשורות לתכונת האימות של 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 קובע את מספר הרסיסים במופע. מספר השברים (shards) קובע את קיבולת הזיכרון הכוללת לאחסון נתוני האשכול. פרטים נוספים על מפרט האשכול זמינים במאמר מפרט האשכול והצומת.
מתן הרשאות לאימות ב-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.
בפרויקט, משתמשים בפקודה
gcloud compute instances set-service-accountכדי להגדיר חשבון שירות ולהפעיל את היקף ההרשאות של Cloud Platform API למכונה הווירטואלית של Compute Engine.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במכונה וירטואלית ב-Compute Engine על ידי הרצת הפקודה הבאה מטרמינל ה-SSH של Compute Engine:sudo apt-get install redis-tools
מריצים את הפקודה הבאה כדי לאחזר אסימון גישה למשתמש IAM:
gcloud auth print-access-token
התוקף של טוקני הגישה פג אחרי שעה. מידע נוסף מופיע במאמר מסגרת הזמן של אסימון הגישה של IAM.
מתחברים לנקודת הקצה לזיהוי של המכונה:
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
מחליפים את מה שכתוב בשדות הבאים:
NETWORK_ADDRESS: כתובת הרשת של המכונה. כדי לראות את כתובת הרשת, אפשר לעיין במאמר בנושא הצגת פרטי האשכול.
PORT: מספר היציאה של המכונה. כדי לראות את מספר היציאה, עיינו במאמר הצגת פרטי האשכול.
ACCESS_TOKEN: אסימון הגישה שאחזרתם בשלב הקודם.
אם מציינים שם משתמש, צריך להשתמש בשם המשתמש של
defaultאו בכתובת האימייל של חשבון המשתמש ב-IAM. בנוסף, החיבורים המאומתים נשארים בתוקף גם אחרי שהאסימון פג. מידע נוסף זמין במאמר מסגרת הזמן של טוקן הגישה של IAM.אם מפעילים הצפנה במעבר באשכול, צריך להוסיף את הדגלים של Transport Layer Security (TLS). לדוגמה:
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c --tls --cacert /tmp/server_ca.pem
מריצים את הפקודה
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 ששימשה להתחברות לאשכול. כך תוכלו להימנע מצבירת חיובים בחשבון לחיוב ב-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 ומוודאים שמשתמש ה-ACL התואם מופעל. | לחשבון המשתמש ב-IAM אין את ההרשאות הנדרשות, טוקן הגישה שסיפקתם לא תקין או שהמשתמש התואם ברשימת ה-ACL מושבת. מוודאים שתוקף טוקן הגישה לא פג ושאחזרתם את הטוקן לפי ההוראות במאמר התחברות למכונה שמשתמשת באימות IAM. אם שיניתם לאחרונה את הרשאות ה-IAM, יכול להיות שיעברו כמה דקות עד שההרשאות יתעדכנו. |
|
מוודאים שהאפליקציה מוגדרת לספק אסימון גישה של IAM לשרת Memorystore for Redis Cluster. | האפליקציה לא מספקת טוקן גישה לשרת Memorystore for Redis Cluster. מוודאים שהאפליקציה מוגדרת לספק אסימון גישה ושקיבלתם את אסימון הגישה על ידי ביצוע ההוראות במאמר התחברות למופע שמשתמש באימות IAM. |
|
צריך לנסות שוב עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff). | הקצה העורפי של IAM עמוס מדי והחזיר שגיאה על חריגה ממכסה לשרת Memorystore for Redis Cluster. כדי למנוע כשלים נוספים בחיבור, מומלץ שאפליקציות ינסו שוב לבצע את הפעולה שגרמה לשגיאה באמצעות השהיה מעריכית לפני ניסיון חוזר (exponential backoff). |
|
צריך לאמת את שם המשתמש או לנסות שוב עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff). | השגיאה הזו מתרחשת מהסיבות הבאות:
אם שם המשתמש תקין, מומלץ שהאפליקציה תנסה שוב את השגיאה הזו עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff) כדי למנוע כשלים נוספים בחיבור. |