Erste Schritte bei der Authentifizierung

In diesem Thema erfahren Sie, wie Sie sich zu Testzwecken schnell bei einer Google Cloud API authentifizieren können. Es wird nicht gezeigt, wie man sich bei Nicht-Google Cloud APIs wie den Google Maps Platform APIs authentifiziert. Informationen zu API-Schlüsseln für Google Maps Platform APIs und SDKs finden Sie in der Google Maps-Dokumentation.

Dienstkonto erstellen

Cloud Console

  1. Wechseln Sie in der Cloud Console zur Seite Dienstkontoschlüssel erstellen.

    Zur Seite "Dienstkontoschlüssel erstellen"
  2. Wählen Sie aus der Liste Dienstkonto die Option Neues Dienstkonto aus.
  3. Geben Sie im Feld Dienstkontoname einen Namen ein.
  4. Wählen Sie in der Liste Rolle die Option Projekt > Inhaber aus.

    Hinweis: Über das Feld Rolle wird Ihr Dienstkonto für den Zugriff auf Ressourcen autorisiert. Sie können dieses Feld später in der Cloud Console aufrufen und ändern. Wenn Sie eine Produktionsanwendung entwickeln, müssen Sie detailliertere Berechtigungen als Projekt > Inhaber angeben. Weitere Informationen finden Sie unter Dienstkonten Rollen zuweisen.
  5. Klicken Sie auf Erstellen. Eine JSON-Datei mit Ihrem Schlüssel wird auf Ihren Computer heruntergeladen.

Befehlszeile

Sie können die folgenden Befehle mithilfe des Cloud SDK auf Ihrem lokalen Computer oder in Cloud Shell ausführen.

  1. Erstellen Sie das Dienstkonto. Ersetzen Sie [NAME] mit einem Namen für das Dienstkonto.

    gcloud iam service-accounts create [NAME]
  2. Gewähren Sie dem Dienstkonto Berechtigungen. Geben Sie für [PROJECT_ID] Ihre Projekt-ID an.

    gcloud projects add-iam-policy-binding [PROJECT_ID] --member "serviceAccount:[NAME]@[PROJECT_ID].iam.gserviceaccount.com" --role "roles/owner"
    Hinweis: Über das Feld Rolle wird Ihr Dienstkonto für den Zugriff auf Ressourcen autorisiert. Sie können dieses Feld später in der Cloud Console ansehen und ändern. Wenn Sie eine Produktionsanwendung entwickeln, müssen Sie detailliertere Berechtigungen als Projekt > Inhaber festlegen. Weitere Informationen finden Sie unter Dienstkonten Rollen zuweisen.
  3. Erstellen Sie die Schlüsseldatei. Geben Sie für [FILE_NAME] einen Namen für die Schlüsseldatei an.

    gcloud iam service-accounts keys create [FILE_NAME].json --iam-account [NAME]@[PROJECT_ID].iam.gserviceaccount.com

Umgebungsvariable festlegen

Wenn Sie ein Dienstkonto verwenden möchten, müssen Sie eine Umgebungsvariable festlegen.

Die Anmeldedaten zur Authentifizierung für Ihren Anwendungscode geben Sie durch Festlegung der Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS an. Geben Sie für [PATH] den Dateipfad der JSON-Datei an, die Ihren Dienstkontoschlüssel enthält. Diese Variable gilt nur für Ihre aktuelle Shell-Sitzung. Wenn Sie eine neue Sitzung öffnen, müssen Sie die Variable neu festlegen.

Linux oder macOS

export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

Beispiel:

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"

Windows

Mit PowerShell:

$env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

Beispiel:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\my-key.json"

Mit Eingabeaufforderung:

set GOOGLE_APPLICATION_CREDENTIALS=[PATH]

Durch das Festlegen der Umgebungsvariable können Sie Anmeldedaten getrennt von Ihrer Anwendung zur Verfügung stellen, ohne den Anwendungscode für die Bereitstellung ändern zu müssen. Alternativ können Sie den Pfad zur Dienstkonto-Schlüsseldatei in Ihrem Code explizit angeben. Weitere Informationen finden Sie unter Authentifizierung als Dienstkonto.

Authentifizierung überprüfen

Nachdem Sie die Umgebungsvariable festgelegt haben, müssen Sie Ihre Anmeldedaten bei der Verwendung einer Google Cloud-Clientbibliothek nicht explizit im Code angeben. Die Clientbibliothek kann Ihre Anmeldedaten implizit bestimmen. Aus diesem Grund können Sie prüfen, ob die Authentifizierung funktioniert, indem Sie die Umgebungsvariable festlegen und anschließend wie im folgenden Beispiel gezeigt Clientbibliothekscode ausführen. Wenn die Anfrage erfolgreich ist, funktioniert die Authentifizierung.

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)
	}

	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;

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

Weitere Informationen