Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Authentifizierung für Maven und Gradle einrichten

Auf dieser Seite wird beschrieben, wie Sie Maven oder Gradle für die Authentifizierung konfigurieren.

Sie müssen sich bei Artifact Registry authentifizieren, wenn Sie eine Drittanbieteranwendung für die Verbindung mit einem Repository verwenden.

Die Einbindung in Google Cloud-Dienste wie Cloud Build oder Google Kubernetes Engine erfordert keine Authentifizierung. Sie sollten jedoch prüfen, ob die Identitäten, die im Namen dieser Dienste agieren, über die erforderlichen Berechtigungen für den Zugriff auf Repositories verfügen.

Die Paketverwaltung befindet sich in der Alphaphase. Sie ist nur für Alphanutzer verfügbar und umfasst möglicherweise nicht alle Features der Containerverwaltung. Wenn Sie sich für die Alphaversion anmelden möchten, füllen Sie das Anmeldeformular aus. Weitere Informationen finden Sie unter Voraussetzungen für den Zugriff auf Alphafunktionen.

Hinweis

  1. Wenn das Ziel-Repository nicht vorhanden ist, erstellen Sie ein neues Repository.
  2. (Optional) Konfigurieren Sie die Standardeinstellungen für gcloud-Befehle.

Übersicht

Artifact Registry unterstützt die folgenden Authentifizierungsmethoden.

Authentifizierungshelfer verwenden
Diese Option bietet die größte Flexibilität. Wenn Sie den Helper in die Maven- oder Gradle-Konfiguration aufnehmen, sucht Artifact Registry nach Dienstkonto-Anmeldedaten in der Umgebung.
Dienstkontoschlüssel als Anmeldedaten angeben
Verwenden Sie diese Option, wenn eine Anwendung die Standardanmeldedaten für Anwendungen nicht unterstützt, jedoch die Authentifizierung mit einem Nutzernamen und Passwort unterstützt.

Dienstkontoschlüssel sind langlebige Anmeldedaten. Verwenden Sie die folgenden Richtlinien, um den Zugriff auf Ihre Repositories einzuschränken:

  • Verwenden Sie ein dediziertes Dienstkonto für die Interaktion mit Repositories.
  • Erteilen Sie die vom Dienstkonto erforderliche Artifact Registry-Mindestrolle. Weisen Sie z. B. Artifact Registry-Reader einem Dienstkonto zu, das nur Artefakte herunterlädt.
  • Wenn Gruppen in Ihrer Organisation verschiedene Zugriffsebenen für bestimmte Repositories benötigen, erteilen Sie den Zugriff auf Repository-Ebene und nicht auf Projektebene.
  • Folgen Sie den Best Practices für die Verwaltung von Anmeldedaten.

Mit Credential Helper authentifizieren

Artifact Registry bietet ein Maven-Wagon und ein Gradle-Plug-in als Credential Helper. Wenn Sie Credential Helper verwenden, werden Ihre Anmeldedaten nicht in Ihrem Java-Projekt gespeichert. Stattdessen sucht Artifact Registry in der folgenden Reihenfolge nach Anmeldedaten:

  1. Standardanmeldedaten für Anwendungen (ADC), eine Strategie, die in der folgenden Reihenfolge nach Anmeldedaten sucht:

    1. In der Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS definierte Anmeldedaten.

    2. Anmeldedaten, die das Standarddienstkonto für Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine oder Cloud Functions bietet.

  2. Vom Cloud SDK bereitgestellte Anmeldedaten, einschließlich Nutzeranmeldedaten aus dem Befehl gcloud auth application-default login.

Die Variable GOOGLE_APPLICATION_CREDENTIALS macht das Konto für die Authentifizierung explizit, was die Fehlerbehebung vereinfacht. Wenn Sie die Variable nicht verwenden, prüfen Sie, ob alle Konten, die von ADC verwendet werden, die erforderlichen Berechtigungen haben. Das Standarddienstkonto für Compute Engine-VMs, Google Kubernetes Engine-Knoten und Cloud Run-Überarbeitungen haben beispielsweise Lesezugriff auf Repositories. Wenn Sie Dateien aus diesen Umgebungen mit dem Standarddienstkonto hochladen möchten, müssen Sie die Berechtigungen ändern.

So erstellen Sie ein Dienstkonto und richten die Authentifizierung mithilfe der Umgebungsvariable ein:

  1. Erstellen Sie ein Dienstkonto, das im Namen Ihrer Anwendung agieren soll, oder wählen Sie ein vorhandenes Dienstkonto für die Automatisierung aus.

    Sie benötigen den Speicherort der Dienstkonto-Schlüsseldatei, um damit die Authentifizierung bei Artifact Registry einzurichten. Auf der Seite „Dienstkonten“ können Sie die Schlüssel vorhandener Konten aufrufen und neue Schlüssel erstellen.

    Zur Seite „Dienstkonten“

  2. Gewähren Sie dem Dienstkonto die entsprechende Artifact Registry-Rolle, um den Zugriff auf das Repository zu ermöglichen.

  3. Weisen Sie der Variablen GOOGLE_APPLICATION_CREDENTIALS den Speicherort des Dienstkontoschlüssels zu, damit die Artifact Registry-Credential Helper Ihren Schlüssel beim Herstellen einer Verbindung zu Repositories abrufen können.

    export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
    

    Dabei ist KEY-FILE der Pfad zur Schlüsseldatei des Dienstkontos.

  4. Führen Sie den folgenden Befehl aus, um die Repository-Konfiguration zu drucken und sie dem Java-Projekt hinzuzufügen.

    Maven

    gcloud artifacts print-settings mvn [--project=PROJECT] [--repository=REPOSITORY] \
    [--location=LOCATION]
    

    Wo

    Gradle

    gcloud artifacts print-settings gradle [--project=PROJECT] [--repository=REPOSITORY] \
    [--location=LOCATION]
    

    Dabei gilt:

    • PROJECT ist die Projekt-ID.
    • REPOSITORY ist die ID oder die vollständig qualifizierte Kennzeichnung für das Repository. Wenn Sie ein Standard-Artifact Registry-Repository konfiguriert haben, wird es verwendet, wenn dieses Flag im Befehl ausgelassen wird.
  5. Java-Projekt konfigurieren

    Maven

    1. Fügen Sie die zurückgegebenen Einstellungen in die entsprechenden Abschnitte der Datei pom.xml für Ihr Maven-Projekt ein. Weitere Informationen zur Struktur der Datei finden Sie in der POM-Referenz zu Maven.
    <distributionManagement>
      <snapshotRepository>
        <id>artifact-registry</id>
        <url>artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url>
      </snapshotRepository>
      <repository>
        <id>artifact-registry</id>
        <url>artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url>
      </repository>
    </distributionManagement>
    
    <repositories>
      <repository>
        <id>artifact-registry</id>
        <url>artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url>
        <releases>
          <enabled>true</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
      </repository>
    </repositories>
    
    <build>
      <extensions>
        <extension>
          <groupId>com.google.cloud.artifactregistry</groupId>
          <artifactId>artifactregistry-maven-wagon</artifactId>
          <version>2.1.1</version>
        </extension>
      </extensions>
    </build>
    

    Im Abschnitt <build> wird der Artifact Registry-Wagon als Erweiterung deklariert. Informationen zu Wagon finden Sie in der Dokumentation zu den Maven-Tools für Artifact Registry.

    1. Wenn in der Datei pom.xml auf das übergeordnete Projekt mit dem Element <parent> verwiesen wird, fügen Sie dem Projekt eine Kernerweiterungsdatei hinzu.

    Maven löst übergeordnete Beziehungen auf, bevor Wagon angewendet werden. Mit dem Core Extensions-Mechanismus können untergeordnete Projekte die übergeordnete Abhängigkeit lösen, bevor in der Datei pom.xml Wagon angewendet werden.

    Erstellen Sie in Ihrem Projekt die Datei ${maven.projectBasedir}/.mvn/extensions.xml mit folgendem Inhalt. Das <extension>-Element definiert das Wagon.

    <extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
      <extension>
        <groupId>com.google.cloud.artifactregistry</groupId>
        <artifactId>artifactregistry-maven-wagon</artifactId>
        <version>2.1.1</version>
      </extension>
    </extensions>
    

    Maven kann übergeordnete Abhängigkeiten jetzt von Artifact Registry auflösen.

    Gradle

    1. Fügen Sie die Repository-Einstellungen der Datei build.gradle hinzu. Das folgende Beispiel zeigt die relative Position der gedruckten Abschnitte.

      plugins {
        id "maven-publish"
        id "com.google.cloud.artifactregistry.gradle-plugin" version "2.1.1"
      }
      
      publishing {
        publications {
             mavenJava(MavenPublication) {
                groupId 'maven.example.id'
                from components.java
             }
        }
        repositories {
          maven {
            url "artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY"
          }
        }
      }
      
      • Im Abschnitt plugins wird das Artifact Registry-Plug-in deklariert. Informationen zum Plug-in finden Sie in der Dokumentation zu den Maven-Tools für Artifact Registry.

      • Im Abschnitt publishing werden die hochzuladenden Dateien und das Ziel-Artifact Registry-Repository deklariert. Sie können die Dateiliste im Abschnitt publications aktualisieren, wenn Sie die Datei hochladen können. Informationen zu den Veröffentlichungseinstellungen finden Sie in der Dokumentation zum Maven-Publish-Plug-in.

    2. Wenn Ihr Build Abhängigkeiten enthält, sollten Sie sie in Ihrem Build deklarieren.

    3. Wenn Sie Repositories in der Datei init.gradle oder settings.gradle verwenden möchten, können Sie die Plug-in-Konfiguration in diese Dateien einfügen.

      Fügen Sie für init.gradle die folgende Konfiguration hinzu:

      initscript {
        repositories {
          maven {
            url "https://plugins.gradle.org/m2/"
          }
        }
        dependencies {
          classpath "gradle.plugin.com.google.cloud.artifactregistry:artifactregistry-gradle-plugin:2.1.1"
        }
      }
      apply plugin: com.google.cloud.artifactregistry.gradle.plugin.ArtifactRegistryGradlePlugin
      

      Fügen Sie für „settings.gradle” die folgende Konfiguration hinzu:

      buildscript {
        repositories {
          maven {
            url "https://plugins.gradle.org/m2/"
          }
        }
        dependencies {
          classpath "gradle.plugin.com.google.cloud.artifactregistry:artifactregistry-gradle-plugin:2.1.1"
        }
      }
      apply plugin: "com.google.cloud.artifactregistry.gradle-plugin"
      

Passwortauthentifizierung konfigurieren

Verwenden Sie diesen Ansatz, wenn Ihre Java-Anwendung eine Authentifizierung mit einem angegebenen Nutzernamen und Passwort erfordert.

So erstellen Sie ein Dienstkonto und konfigurieren die Authentifizierung:

  1. Erstellen Sie ein Dienstkonto, das im Namen Ihrer Anwendung agieren soll, oder wählen Sie ein vorhandenes Dienstkonto für die CI/CD-Automatisierung aus.

  2. Gewähren Sie dem Dienstkonto die entsprechende Artifact Registry-Rolle, um den Zugriff auf das Repository zu ermöglichen.

  3. Wenn Sie das Dienstkonto in der aktuellen Cloud SDK-Sitzung aktivieren möchten, führen Sie den folgenden Befehl aus:

    gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
    

    Dabei gilt:

    • ACCOUNT ist das Nutzer- oder Dienstkonto.
    • KEY-FILE ist der Pfad zur JSON-Schlüsseldatei des Dienstkontos.
  4. Führen Sie den folgenden Befehl aus, um die Repository-Konfiguration zu drucken und sie dem Java-Projekt hinzuzufügen.

    Maven

    gcloud artifacts print-settings mvn [--project=PROJECT] [--repository=REPOSITORY] \
    [--location=LOCATION] --json-key=KEY-FILE
    

    Wo

    Gradle

    gcloud artifacts print-settings gradle [--project=PROJECT] [--repository=REPOSITORY] \
    [--location=LOCATION] --json-key=KEY-FILE
    

    Dabei gilt:

    • PROJECT ist die Projekt-ID.
    • REPOSITORY ist die ID oder die vollständig qualifizierte Kennzeichnung für das Repository. Wenn Sie ein Standard-Artifact Registry-Repository konfiguriert haben, wird es verwendet, wenn dieses Flag im Befehl ausgelassen wird.
    • KEY-FILE ist der Pfad zur JSON-Schlüsseldatei des Dienstkontos. Wenn Sie den Befehl zur Aktivierung Ihres Dienstkontos ausgeführt haben, können Sie dieses Flag weglassen.
  5. Konfigurieren Sie Ihr Java-Projekt mit den vom Befehl zurückgegebenen Einstellungen.

    Maven

    1. Fügen Sie die zurückgegebenen Repository-Einstellungen im Element <project> den entsprechenden Abschnitten der Datei pom.xml für Ihr Maven-Projekt hinzu. Weitere Informationen zur Struktur der Datei finden Sie in der POM-Referenz zu Maven.
    <project>
      <distributionManagement>
        <snapshotRepository>
          <id>artifact-registry</id>
          <url>https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url>
        </snapshotRepository>
        <repository>
          <id>artifact-registry</id>
          <url>https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url>
        </repository>
      </distributionManagement>
    
      <repositories>
        <repository>
          <id>artifact-registry</id>
          <url>https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </project>
    
    1. Fügen Sie die zurückgegebenen Authentifizierungseinstellungen im Element <settings> zum Abschnitt <servers> der Datei ~/.m2/settings.xml hinzu. Im folgenden Beispiel ist KEY der private Schlüssel in Ihrer Dienstkonto-Schlüsseldatei.

    Weitere Informationen finden Sie in der Referenz zu Maven-Einstellungen.

    <settings>
      <servers>
        <server>
          <id>artifact-registry</id>
          <configuration>
            <httpConfiguration>
              <get>
                <usePreemptive>true</usePreemptive>
              </get>
              <head>
                <usePreemptive>true</usePreemptive>
              </head>
              <put>
                <params>
                  <property>
                    <name>http.protocol.expect-continue</name>
                    <value>false</value>
                  </property>
                </params>
              </put>
            </httpConfiguration>
          </configuration>
          <username>_json_key_base64</username>
          <password>KEY</password>
        </server>
      </servers>
    </settings>
    

    Gradle

    1. Die folgende Zeile aus der zurückgegebenen Konfiguration definiert eine Variable mit dem Namen artifactRegistryMavenSecret für Ihren Dienstkontoschlüssel. Fügen Sie diese Zeile der Datei ~/.gradle/gradle.properties hinzu, damit der Schlüssel in den Builds oder Ihrem Quellkontroll-Repository nicht sichtbar ist.

      artifactRegistryMavenSecret = KEY
      

      In dieser Zeile ist KEY der private Schlüssel in Ihrer Dienstkonto-Schlüsseldatei.

    2. Geben Sie in build.gradle die Repository-Einstellungen an:

      plugins {
        id "maven-publish"
      }
      
      publishing {
        repositories {
          maven {
            url "https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY"
          }
        }
      }
      repositories {
        maven {
          url "https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY"
          credentials {
            username = "_json_key_base64"
            password = "$artifactRegistryMavenSecret"
          }
          authentication {
            basic(BasicAuthentication)
          }
        }
      }
      

    Die Authentifizierungskonfiguration ist abgeschlossen. Prüfen Sie vor dem Veröffentlichen von Dateien, ob die hochzuladenden Dateien in einem publications-Abschnitt unter publishing definiert sind. Beispiel:

    publishing {
    publications {
         mavenJava(MavenPublication) {
            groupId 'maven.example.id'
            from components.java
         }
    }
    repositories {
    ...
    }
    }
    

    Informationen zu den Veröffentlichungseinstellungen finden Sie in der Dokumentation zum Maven-Publish-Plug-in.

Nächste Schritte