ביצוע אימות בפעם הראשונה

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

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

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

יצירת חשבון שירות

המסוף

יוצרים חשבון שירות:

  1. נכנסים לדף Create service account במסוף Cloud.

    כניסה לדף Create service account
  2. בוחרים את הפרויקט הרצוי.
  3. כותבים שם בשדה Service account name. השדה Service account ID ימולא במסוף Cloud בהתאם לשם הזה.

    כותבים תיאור בשדה Service account description. לדוגמה: Service account for quickstart.

  4. לוחצים על Create and continue.
  5. כדי לתת גישה לפרויקט, נותנים לחשבון השירות את התפקידים הבאים: פרויקט > בעלים.

    בוחרים תפקיד מהרשימה Select a role.

    כדי להוסיף עוד תפקידים, לוחצים על Add another role ומוסיפים אותם אחד אחרי השני.

  6. לוחצים על Continue.
  7. לוחצים על Done כדי לסיים ליצור את חשבון השירות.

    חשוב לא לסגור את החלון של הדפדפן, כי תשתמשו בו גם בשלב הבא.

יוצרים מַפְתח לחשבון השירות:

  1. במסוף Cloud, לוחצים על כתובת האימייל של חשבון השירות שנוצר.
  2. לוחצים על Keys.
  3. לוחצים על Add key ואז על Create new key.
  4. לוחצים על Create. למחשב שלכם תתבצע הורדה של קובץ JSON עם המַפְתח.
  5. לוחצים על Close.

gcloud

מגדירים את האימות:

  1. יוצרים את חשבון השירות. מחליפים את NAME בשם שרוצים לתת לחשבון השירות:

    gcloud iam service-accounts create NAME
  2. נותנים לחשבון השירות תפקידים. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM: roles/owner:

    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

    מחליפים את מה שכתוב בשדות הבאים:

    • SERVICE_ACCOUNT_NAME: השם של חשבון השירות
    • PROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירות
    • ROLE: התפקיד שאתם רוצים לתת
  3. יוצרים את קובץ המַפְתח:

    gcloud iam service-accounts keys create FILE_NAME.json --iam-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

    מחליפים את מה שכתוב בשדות הבאים:

    • FILE_NAME: שם לקובץ המַפְתח
    • SERVICE_ACCOUNT_NAME: השם של חשבון השירות
    • PROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירות

הגדרת משתנה הסביבה

כדי להשתמש בחשבונות שירות ב-Google Cloud CLI, צריך להגדיר משתנה סביבה בַּמקום שבו מריצים את הקוד.

מגדירים את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS כדי לספק את פרטי הכניסה לקוד האפליקציה. המשתנה הזה חל רק על סשן המעטפת הנוכחי. אם רוצים שהמשתנה יחול על סשנים נוספים של המעטפת, מגדירים את המשתנה בקובץ ההפעלה של המעטפת – למשל בקובץ ~/.bashrc או בקובץ ~/.profile.

Linux או macOS

export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"

מחליפים את KEY_PATH בנתיב של קובץ ה-JSON שמכיל את המַפְתח של חשבון השירות.

למשל:

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

Windows

ל-PowerShell:

$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"

מחליפים את KEY_PATH בנתיב של קובץ ה-JSON שמכיל את המַפְתח של חשבון השירות.

למשל:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

בשורת הפקודה:

set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH

מחליפים את KEY_PATH בנתיב של קובץ ה-JSON שמכיל את המַפְתח של חשבון השירות.

כשאתם מגדירים את משתנה הסביבה, אתם יכולים לספק את פרטי הכניסה בנפרד מהאפליקציה בלי לבצע שינויים בקוד של האפליקציה בזמן הפריסה שלה. אתם יכולים גם לציין מפורשות את הנתיב לקובץ המַפְתח של חשבון השירות בקוד. למידע נוסף, קראו את המאמר בנושא אימות כחשבון שירות.

וידוא האימות

אחרי הגדרת משתנה הסביבה, לא תצטרכו לציין מפורשות את פרטי הכניסה בקוד כשאתם משתמשים בספריית לקוח של Google Cloud. פרטי הכניסה ייקבעו דרך ספריית הלקוח באופן לא מפורש. לכן, כדי לוודא שהאימות פועל תוכלו להגדיר את משתנה הסביבה ואז להריץ את הקוד של ספריית הלקוח, כמו בדוגמה הבאה. אם הבקשה תצליח, סימן שהאימות פועל.

C#‎

public object AuthImplicit(string projectId)
{
    // If you don't specify credentials when constructing the client, the
    // client library will look for credentials in the environment.
    var credential = GoogleCredential.GetApplicationDefault();
    var storage = StorageClient.Create(credential);
    // Make an authenticated API request.
    var buckets = storage.ListBuckets(projectId);
    foreach (var bucket in buckets)
    {
        Console.WriteLine(bucket.Name);
    }
    return null;
}

Go


// implicit uses Application Default Credentials to authenticate.
func implicit() {
	ctx := context.Background()

	// For API packages whose import path is starting with "cloud.google.com/go",
	// such as cloud.google.com/go/storage in this case, if there are no credentials
	// provided, the client library will look for credentials in the environment.
	storageClient, err := storage.NewClient(ctx)
	if err != nil {
		log.Fatal(err)
	}
	defer storageClient.Close()

	it := storageClient.Buckets(ctx, "project-id")
	for {
		bucketAttrs, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println(bucketAttrs.Name)
	}

	// For packages whose import path is starting with "google.golang.org/api",
	// such as google.golang.org/api/cloudkms/v1, use NewService to create the client.
	kmsService, err := cloudkms.NewService(ctx)
	if err != nil {
		log.Fatal(err)
	}

	_ = kmsService
}

Java

static void authImplicit() {
  // If you don't specify credentials when constructing the client, the client library will
  // look for credentials via the environment variable GOOGLE_APPLICATION_CREDENTIALS.
  Storage storage = StorageOptions.getDefaultInstance().getService();

  System.out.println("Buckets:");
  Page<Bucket> buckets = storage.list();
  for (Bucket bucket : buckets.iterateAll()) {
    System.out.println(bucket.toString());
  }
}

Node.js

// Imports the Google Cloud client library.
const {Storage} = require('@google-cloud/storage');

// Instantiates a client. If you don't specify credentials when constructing
// the client, the client library will look for credentials in the
// environment.
const storage = new Storage();
// Makes an authenticated API request.
async function listBuckets() {
  try {
    const results = await storage.getBuckets();

    const [buckets] = results;

    console.log('Buckets:');
    buckets.forEach(bucket => {
      console.log(bucket.name);
    });
  } catch (err) {
    console.error('ERROR:', err);
  }
}
listBuckets();

PHP

// Imports the Cloud Storage client library.
use Google\Cloud\Storage\StorageClient;

/**
 * Authenticate to a cloud client library using a service account implicitly.
 *
 * @param string $projectId The Google project ID.
 */
function auth_cloud_implicit($projectId)
{
    $config = [
        'projectId' => $projectId,
    ];

    # If you don't specify credentials when constructing the client, the
    # client library will look for credentials in the environment.
    $storage = new StorageClient($config);

    # Make an authenticated API request (listing storage buckets)
    foreach ($storage->buckets() as $bucket) {
        printf('Bucket: %s' . PHP_EOL, $bucket->name());
    }
}

Python

def implicit():
    from google.cloud import storage

    # If you don't specify credentials when constructing the client, the
    # client library will look for credentials in the environment.
    storage_client = storage.Client()

    # Make an authenticated API request
    buckets = list(storage_client.list_buckets())
    print(buckets)

Ruby

# project_id = "Your Google Cloud project ID"

require "google/cloud/storage"

# If you don't specify credentials when constructing the client, the client
# library will look for credentials in the environment.
storage = Google::Cloud::Storage.new project: project_id

# Make an authenticated API request
storage.buckets.each do |bucket|
  puts bucket.name
end

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

נסו זאת בעצמכם

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

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