בדף הזה מוסבר איך להעלות מפתח ציבורי לחשבון שירות. אחרי העלאת המפתח הציבורי, אפשר להשתמש במפתח הפרטי מזוג המפתחות כדי לבצע אימות כחשבון השירות.
לפני שמתחילים
Enable the IAM API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.הסבר על פרטי הכניסה לחשבון שירות
התפקידים הנדרשים
כדי לקבל את ההרשאות הדרושות להעלאת מפתחות של חשבונות שירות, צריך לבקש מהאדמין את תפקיד ה-IAM אדמין של מפתח חשבון שירות (roles/iam.serviceAccountKeyAdmin) בפרויקט, או בחשבון השירות שאת המפתחות שלו רוצים לנהל.
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
בהתאם להגדרות של מדיניות הארגון, יכול להיות שתצטרכו גם לאפשר העלאה של מפתחות של חשבונות שירות בפרויקט לפני שתעלו מפתח.
כדי לקבל את ההרשאות שדרושות בשביל לאפשר העלאה של מפתחות של חשבונות שירות בפרויקט, אתם צריכים לבקש מהאדמין לתת לכם את תפקידי ה-IAM הבאים בארגון:
-
אדמין של מדיניות הארגון (
roles/orgpolicy.policyAdmin) -
צפייה בארגון (
roles/resourcemanager.organizationViewer) -
אדמין לניהול תגים (
roles/resourcemanager.tagAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות כדי לאפשר העלאה של מפתחות חשבון שירות בפרויקט. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לאפשר העלאה של מפתחות של חשבונות שירות בפרויקט, נדרשות ההרשאות הבאות:
-
orgpolicy.constraints.list -
orgpolicy.customConstraints.create -
orgpolicy.customConstraints.delete -
orgpolicy.customConstraints.get -
orgpolicy.customConstraints.list -
orgpolicy.customConstraints.update -
orgpolicy.policies.create -
orgpolicy.policies.delete -
orgpolicy.policies.list -
orgpolicy.policies.update -
orgpolicy.policy.get -
orgpolicy.policy.set -
resourcemanager.organizations.get -
resourcemanager.projects.listTagBindings -
resourcemanager.projects.listEffectiveTags -
resourcemanager.tagKeys.get -
resourcemanager.tagKeys.list -
resourcemanager.tagValues.list -
resourcemanager.tagValues.get
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מתן הרשאה להעלאת מפתחות של חשבונות שירות
לפני שיוצרים מפתח של חשבון שירות, צריך לוודא שהאילוץ iam.disableServiceAccountKeyUpload של מדיניות הארגון לא נאכף בפרויקט. אם האילוץ הזה נאכף בפרויקט, אי אפשר להעלות מפתחות של חשבונות שירות בפרויקט הזה.
מומלץ לאכוף את האילוץ הזה ברוב הפרויקטים, ולפטור ממנו רק פרויקטים שבאמת נדרשים להשתמש במפתחות של חשבונות שירות. מידע נוסף על שיטות אימות חלופיות זמין במאמר בחירת שיטת האימות שמתאימה לתרחיש שלכם לדוגמה.
כדי להחריג פרויקט מאילוץ מדיניות הארגון iam.disableServiceAccountKeyUpload, צריך לבקש מאדמין של מדיניות הארגון לבצע את הפעולות הבאות:
-
ברמת הארגון, יוצרים מפתח תג וערך תג שישמשו להגדרה אם משאב צריך להיות פטור ממדיניות הארגון. מומלץ ליצור תג עם המפתח
disableServiceAccountKeyUploadוהערכיםenforcedו-not_enforced.במאמר איך יוצרים ומגדירים תגים חדשים מוסבר איך ליצור מפתחות וערכים של תגים.
-
מצרפים את התג
disableServiceAccountKeyUploadלארגון ומגדירים את הערך שלו ל-enforced. כל המשאבים בארגון יורשים את ערך התג הזה, אלא אם הוא נכתב מחדש עם ערך תג אחר.במאמר צירוף תגים למשאבים מוסבר איך לצרף תגים למשאבים.
-
לכל פרויקט או תיקייה שרוצים להחריג ממדיניות הארגון, מצרפים את התג
disableServiceAccountKeyUploadומגדירים את הערך שלו ל-not_enforced. הגדרה של ערך תג לפרויקט או לתיקייה בדרך הזו מבטלת את ערך התג שהתקבל בירושה מהארגון. -
יוצרים או מעדכנים את מדיניות הארגון שמונעת העלאה של מפתחות של חשבונות שירות, כך שהיא לא תאכוף את האילוץ על משאבים שפטורים ממנו. המדיניות הזו צריכה לכלול את הכללים הבאים:
-
מגדירים את האילוץ
iam.disableServiceAccountKeyUploadכך שלא ייאכף על משאבים עם התגdisableServiceAccountKeyUpload: not_enforced. התנאי בכלל הזה צריך להיראות כך:"resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyUpload', 'not_enforced')" -
מגדירים את האילוץ
iam.disableServiceAccountKeyUploadכך שהוא ייאכף על כל המשאבים האחרים.
-
העלאה של מפתח ציבורי לחשבון שירות
אפשר להעלות את החלק של המפתח הציבורי מזוג מפתחות המנוהל על-ידי משתמש כדי לשייך אותו לחשבון שירות. אחרי העלאה של המפתח הציבורי, אפשר להשתמש במפתח הפרטי מזוג המפתחות כמפתח של חשבון שירות.
המפתח שמעלים חייב להיות מפתח ציבורי של RSA שמוקף באישור X.509 v3 ובקידוד ב-base64. אפשר להשתמש בכלים כמו OpenSSL כדי ליצור מפתח ואישור בפורמט הזה.
אסור לכלול שום מידע פרטי באישור X.509. צריך להשתמש בנושא כללי, ולא להוסיף אף מאפיין אופציונלי. האישורים גלויים לכולם. כל מידע פרטי באישור גלוי לכל מי שמאחזר את האישור. למידע נוסף, ראו הימנעות מחשיפת מידע סודי באישורי X.509 שהועלו.
אם האילוץ של מדיניות הארגון iam.serviceAccountKeyExpiryHours נאכף בפרויקט, תוקף המפתח שמעלים צריך לפוג בתוך פרק הזמן שצוין באילוץ.
כדי להגדיר את מועד התפוגה של המפתח, משתמשים בערך -days בפקודה שבה משתמשים כדי ליצור את אישור X.509. אם הערך של -days גדול מתקופת הזמן שצוינה במגבלה, הפקודה תיכשל.
לדוגמה, הפקודה הבאה יוצרת זוג מפתחות RSA של 2048 ביטים ועוטפת את המפתח הציבורי באישור עם חתימה עצמית שתקף ל-365 ימים:
openssl req -x509 -nodes -newkey rsa:2048 -days 365 \
-keyout /path/to/private_key.pem \
-out /path/to/public_key.pem \
-subj "/CN=unused"
לאחר מכן אפשר להעלות את הקובץ public_key.pem כמפתח ציבורי לחשבון שירות.
המסוף
- נכנסים לדף Service accounts במסוף Google Cloud .
שאר השלבים יופיעו במסוף. Google Cloud
- בוחרים פרויקט.
- בדף Service accounts, לוחצים על כתובת האימייל של חשבון השירות שרוצים להעלות מפתח בשבילו.
- לוחצים על הכרטיסייה Keys.
- לוחצים על Add key בתפריט הנפתח, ולאחר מכן בוחרים Upload existing key.
- לוחצים על Browse, ולאחר מכן מוצאים את קובץ המפתח הציבורי ובוחרים אותו. לחלופין, אפשר להעתיק את התוכן של קובץ המפתח הציבורי ולהדביק בתיבה Paste existing key.
- לוחצים על Upload.
gcloud
מפעילים את הפקודה gcloud iam service-accounts keys upload כדי להעלות מפתח ציבורי לחתימה על מפתחות של חשבון שירות.
מחליפים את הערכים הבאים:
KEY_FILE: הנתיב לקובץ שמכיל את נתוני המפתח להעלאה, לדוגמה./public_key.pem.SA_NAME: השם של חשבון השירות שעבורו רוצים להעלות מפתח.-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
gcloud iam service-accounts keys upload KEY_FILE \
--iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
הפלט מכיל מזהה ייחודי מובהק למפתח שהועלה:
Name: projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0
כדי לבדוק אם הפקודה הצליחה, מפעילים את הפקודה gcloud iam service-accounts keys list:
gcloud iam service-accounts keys list \
--iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
הפלט יכיל את אותו מזהה ייחודי מובהק שהתקבל אחרי שהמפתח נוצר:
| KEY_ID | CREATED_AT | EXPIRES_AT | DISABLED |
| c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0 | 2019-06-26T21:01:42Z | 9999-12-31T23:59:59Z |
REST
רכיב ה-method projects.serviceAccounts.keys.upload מאפשר להעלות מפתח ציבורי מזוג מפתחות שמנוהל על-ידי משתמש, ומוסיפה את המפתח הזה לחשבון השירות.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמוmy-project. SA_NAME: השם של חשבון השירות שאליו רוצים לשייך את המפתח.PUBLIC_KEY_DATA: הנתונים של המפתח הציבורי מזוג המפתחות. חייב להיות מפתח RSA ציבורי שמוקף באישור X.509 v3. מקודדים את נתוני המפתח הציבורי ב-base64, כולל השורה הראשונה,-----BEGIN CERTIFICATE-----והשורה האחרונה,-----END CERTIFICATE-----.
שיטת ה-HTTP וכתובת ה-URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys:upload
תוכן בקשת JSON:
{
"publicKeyData": "PUBLIC_KEY_DATA"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אמורה להתקבל תגובת JSON שדומה לזו:
{
"name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0",
"validAfterTime": "2020-05-17T19:31:19Z",
"validBeforeTime": "2021-05-17T19:31:19Z",
"keyAlgorithm": "KEY_ALG_RSA_2048",
"keyOrigin": "USER_PROVIDED",
"keyType": "USER_MANAGED"
}
השבתת האפשרות להעלות מפתחות ציבוריים
כדי להשבית את היכולת להעלות מפתחות לפרויקט, ראו הגבלת העלאת מפתחות של חשבונות שירות.
המאמרים הבאים
- איך יוצרים ומוחקים ולמחוק מפתחות של חשבונות שירות
- איך מקבלים מפתחות של חשבונות שירות ואיפה מוצאים רשימה שלהם
- חלופות למפתחות של חשבונות שירות לצורך אימות
- איך משתמשים במפתחות של חשבון שירות לצורך אימות כחשבון שירות
- שיטות מומלצות לניהול מפתחות של חשבונות שירות
נסו בעצמכם
אתם משתמשים חדשים ב- Google Cloud? אנחנו ממליצים לכם ליצור חשבון, להתנסות בעצמכם במוצרים שלנו ולבחון אותם באמצעות תרחישים ממשיים. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
מתחילים לעבוד בלי לשלם