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

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

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

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

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

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

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

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

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

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

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

gcloud

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

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

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

פלט:

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

Java

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

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

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.


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: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project.
  • SA_NAME: השם של חשבון השירות שאת המפתח שלו רוצים להשבית.
  • KEY_ID: המזהה של המפתח שרוצים להשבית. כדי למצוא את המזהה של המפתח, מציגים את רשימת המפתחות של חשבון השירות, מזהים את המפתח שרוצים להשבית ומעתיקים את המזהה שלו מהסוף של השדה name. המזהה של המפתח הוא כל מה שמופיע אחרי keys/.

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

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

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

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

{
}

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

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

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

gcloud

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

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

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

פלט:

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

Java

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

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

לפני שמריצים דוגמאות קוד, צריך להגדיר את משתנה הסביבה GOOGLE_CLOUD_UNIVERSE_DOMAIN לערך s3nsapis.fr.


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: מזהה הפרויקט ב- Cloud de Confiance . מזהי פרויקטים הם מחרוזות אלפאנומריות, כמו my-project.
  • SA_NAME: השם של חשבון השירות שאת המפתח שלו רוצים להפעיל.
  • KEY_ID: המזהה של המפתח שרוצים להפעיל. כדי למצוא את המזהה של המפתח, מציגים את רשימת המפתחות של חשבון השירות, מזהים את המפתח שרוצים להפעיל ומעתיקים את המזהה מהסוף של השדה name. המזהה של המפתח הוא כל מה שמופיע אחרי keys/.

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

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

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

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

{
}

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