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

בדף הזה מוסבר איך להשבית ולהפעיל מפתחות של חשבון שירות באמצעותGoogle Cloud המסוף, Google Cloud CLI, ה-API לניהול זהויות והרשאות גישה או אחת מספריות הלקוח של Google Cloud.

לפני שמתחילים

  • מפעילים את IAM API.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    להפעלת ה-API

  • מגדירים אימות.

    צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    gcloud

    במסוף Google Cloud , מפעילים את Cloud Shell.

    הפעלת Cloud Shell

    בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

    Java

    כדי להשתמש בדוגמאות של Java שבדף הזה בסביבת פיתוח מקומית, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.

    1. התקינו את ה-CLI של Google Cloud.

    2. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    3. אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:

      gcloud auth application-default login

      אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.

      אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    למידע נוסף, ראו הגדרת ADC לסביבת פיתוח מקומית במאמרי העזרה בנושא אימות Google Cloud .

    REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

  • הסבר על פרטי הכניסה לחשבון שירות

התפקידים הנדרשים

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

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

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

השבתת מפתח של חשבון שירות

השבתת מפתח של חשבון שירות מונעת שימוש במפתח לצורך אימות באמצעות Google APIs. אפשר להפעיל מפתח מושבת מתי שרוצים.

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

אפשר לראות את המפתחות המושבתים במסוף Google Cloud , אבל אי אפשר להשתמש במסוףGoogle Cloud כדי להשבית מפתח. במקום זאת, אפשר להשתמש ב-CLI של gcloud או ב-API בארכיטקטורת REST.

gcloud

כדי להשבית מפתח של חשבון שירות מפעילים את הפקודה gcloud iam service-accounts keys disable.

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

  • KEY_ID: המזהה של המפתח שרוצים להשבית. כדי למצוא את המזהה של המפתח, מציגים את רשימת המפתחות של חשבון השירות , מזהים את המפתח שרוצים להשבית ומעתיקים את המזהה שלו.
  • SA_NAME: השם של חשבון השירות שהמפתח שייך לו.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
gcloud iam service-accounts keys disable KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --project=PROJECT_ID

פלט:

Disabled key [KEY_ID] for service account
[SA_NAME@PROJECT_ID.iam.gserviceaccount.com]

Java

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

כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.


import com.google.cloud.iam.admin.v1.IAMClient;
import java.io.IOException;


public class DisableServiceAccountKey {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Replace the below variables before running.
    String projectId = "gcloud-project-id";
    String serviceAccountName = "service-account-name";
    String serviceAccountKeyName = "service-account-key-name";

    disableServiceAccountKey(projectId, serviceAccountName, serviceAccountKeyName);
  }

  // Disables a service account key.
  public static void disableServiceAccountKey(String projectId,
                                              String accountName,
                                              String key) throws IOException {
    // Construct the service account email.
    // You can modify the ".iam.gserviceaccount.com" to match the service account name in which
    // you want to disable the key.
    // See, https://cloud.google.com/iam/docs/creating-managing-service-account-keys#disabling
    String email = String.format("%s@%s.iam.gserviceaccount.com", accountName, projectId);
    String name = String.format("projects/%s/serviceAccounts/%s/keys/%s", projectId, email, key);

    // Initialize client that will be used to send requests.
    // This client only needs to be created once, and can be reused for multiple requests.
    try (IAMClient iamClient = IAMClient.create()) {
      iamClient.disableServiceAccountKey(name);

      System.out.println("Disabled service account key: " + name);
    }
  }
}

REST

ה-method‏ projects.serviceAccounts.keys.disable משביתה מפתח של חשבון שירות.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project.
  • SA_NAME: השם של חשבון השירות שאת המפתח שלו רוצים להשבית.
  • KEY_ID: המזהה של המפתח שרוצים להשבית. כדי למצוא את המזהה של המפתח, מציגים את רשימת המפתחות של חשבון השירות, מזהים את המפתח שרוצים להשבית ומעתיקים את המזהה שלו מהסוף של השדה name. המזהה של המפתח הוא כל מה שמופיע אחרי keys/.

שיטת ה-HTTP וכתובת ה-URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/KEY_ID:disable

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

צריכה להתקבל תגובת JSON שדומה לזו:

{
}

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

אחרי שמשביתים מפתח של חשבון שירות, אפשר להפעיל אותו מתי שרוצים, ואז להשתמש במפתח כדי לבצע אימות באמצעות Google APIs.

אי אפשר להשתמש במסוף Google Cloud כדי להפעיל מפתחות של חשבונות שירות. במקום זאת, אפשר להשתמש ב-CLI של gcloud או ב-API בארכיטקטורת REST.

gcloud

כדי להפעיל מפתח של חשבון שירות מפעילים את הפקודה gcloud iam service-accounts keys enable.

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

  • KEY_ID: המזהה של המפתח שרוצים להפעיל. כדי למצוא את המזהה של המפתח, מציגים את רשימת המפתחות של חשבון השירות, מזהים את המפתח שרוצים להפעיל ומעתיקים את המזהה שלו.
  • SA_NAME: השם של חשבון השירות שהמפתח שייך לו.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
gcloud iam service-accounts keys enable KEY_ID \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com\
    --project=PROJECT_ID

פלט:

Enabled key [KEY_ID] for service account
[SA_NAME@PROJECT_ID.iam.gserviceaccount.com]

Java

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

כדי לבצע אימות ב-IAM, צריך להגדיר את Application Default Credentials. מידע נוסף מופיע במאמר לפני שמתחילים.


import com.google.cloud.iam.admin.v1.IAMClient;
import java.io.IOException;


public class EnableServiceAccountKey {

  public static void main(String[] args) throws IOException {
    // TODO(Developer): Replace the below variables before running.
    String projectId = "gcloud-project-id";
    String serviceAccountName = "service-account-name";
    String serviceAccountKeyName = "service-account-key-name";

    enableServiceAccountKey(projectId, serviceAccountName, serviceAccountKeyName);
  }

  // Enables a service account key.
  public static void enableServiceAccountKey(String projectId,
                                             String accountName,
                                             String key) throws IOException {
    // Construct the service account email.
    // You can modify the ".iam.gserviceaccount.com" to match the service account name in which
    // you want to enable the key.
    // See, https://cloud.google.com/iam/docs/creating-managing-service-account-keys#enabling
    String email = String.format("%s@%s.iam.gserviceaccount.com", accountName, projectId);
    String name = String.format("projects/%s/serviceAccounts/%s/keys/%s", projectId, email, key);

    // Initialize client that will be used to send requests.
    // This client only needs to be created once, and can be reused for multiple requests.
    try (IAMClient iamClient = IAMClient.create()) {
      iamClient.enableServiceAccountKey(name);

      System.out.println("Enabled service account key: " + name);
    }
  }
}

REST

ה-method‏ projects.serviceAccounts.keys.enable מאפשרת להפעיל מפתח של חשבון שירות.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project.
  • SA_NAME: השם של חשבון השירות שאת המפתח שלו רוצים להפעיל.
  • KEY_ID: המזהה של המפתח שרוצים להפעיל. כדי למצוא את המזהה של המפתח, מציגים את רשימת המפתחות של חשבון השירות, מזהים את המפתח שרוצים להפעיל ומעתיקים את המזהה מהסוף של השדה name. המזהה של המפתח הוא כל מה שמופיע אחרי keys/.

שיטת ה-HTTP וכתובת ה-URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/KEY_ID:enable

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
}

המאמרים הבאים

נסו בעצמכם

אתם משתמשים חדשים ב- Google Cloud? אנחנו ממליצים לכם ליצור חשבון, להתנסות בעצמכם במוצרים שלנו ולבחון אותם באמצעות תרחישים ממשיים. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.

מתחילים לעבוד בלי לשלם