Standardauthentifizierungsmethode überschreiben

In diesem Dokument wird beschrieben, wie Sie die von Rust verwendete Standardauthentifizierung überschreiben. Die Rust-Clientbibliotheken authentifizieren Ihre Anfragen automatisch bei den Google Cloud Diensten von, aber gelegentlich müssen Sie möglicherweise Ihre Standardanmeldedaten überschreiben.

Vorbereitung

In dieser Anleitung wird die Cloud Natural Language API verwendet. Folgen Sie der Kurzanleitung für den Dienst , um diese API zu installieren. Dort wird beschrieben, wie Sie einen Dienst aktivieren.

Eine vollständige Einrichtungsanleitung für die Rust-Clientbibliotheken finden Sie unter Erste Schritte mit Rust.

Abhängigkeiten

Sie müssen die Abhängigkeiten in der Datei Cargo.toml deklarieren:

cargo add google-cloud-language-v2 google-cloud-auth

Standardanmeldedaten

Die empfohlene Methode zum Authentifizieren von Anwendungen in Google Cloud ist die Verwendung von Standardanmeldedaten für Anwendungen. Ohne Konfiguration verwenden die Clientbibliotheken standardmäßig diesen Anmeldedatentyp. Unter Funktionsweise von Standardanmeldedaten für Anwendungen finden Sie Informationen dazu, wie Sie diese Standardeinstellung ohne Codeänderungen in Ihrer Anwendung konfigurieren können.

  1. Fügen Sie einige „use“-Deklarationen hinzu, um den Rest des Beispiels zu vereinfachen:

    use google_cloud_language_v2::client::LanguageService;
    use google_cloud_language_v2::model::{Document, document::Type};

  2. Initialisieren Sie den Client mit den Standardeinstellungen:

    let client = LanguageService::builder().build().await?;

  3. Verwenden Sie diesen Client wie gewohnt:

    let response = client
        .analyze_sentiment()
        .set_document(
            Document::new()
                .set_content("Hello World!")
                .set_type(Type::PlainText),
        )
        .send()
        .await?;
    println!("response={response:?}");

Standardanmeldedaten überschreiben: API-Schlüssel

API-Schlüssel sind Textstrings, die Zugriff auf einige Google Cloud Dienste gewähren. Die Verwendung von API-Schlüsseln kann die Entwicklung vereinfachen, da sie weniger Konfiguration erfordern als andere Authentifizierungsmethoden. Mit API-Schlüsseln sind einige Risiken verbunden. Wir empfehlen Ihnen, den Artikel Best Practices für die Verwaltung von API-Schlüsseln zu lesen, wenn Sie sie verwenden möchten.

  1. Schreiben Sie eine Funktion, die den API-Schlüsselstring als Eingabeparameter empfängt:

    pub async fn sample(key: &str) -> anyhow::Result<()> {

  2. Fügen Sie einige „use“-Deklarationen hinzu, um den Rest des Beispiels zu vereinfachen:

    use google_cloud_auth::credentials::api_key_credentials::Builder as ApiKeyCredentialsBuilder;
    use google_cloud_language_v2::client::LanguageService;
    use google_cloud_language_v2::model::{Document, document::Type};

  3. Erstellen Sie die Anmeldedaten mit dem API-Schlüssel-Builder:

    let credentials = ApiKeyCredentialsBuilder::new(key).build();

  4. Initialisieren Sie den Client mit dem Objekt credentials:

    let client = LanguageService::builder()
        .with_credentials(credentials)
        .build()
        .await?;

  5. Verwenden Sie diesen Client wie gewohnt:

    let response = client
        .analyze_sentiment()
        .set_document(
            Document::new()
                .set_content("Hello World!")
                .set_type(Type::PlainText),
        )
        .send()
        .await?;
    println!("response={response:?}");

Standardanmeldedaten überschreiben: Identitätsübernahme des Dienstkontos

Mit der Identitätsübernahme des Dienstkontos können Sie API-Aufrufe im Namen eines Dienstkontos ausführen. Unter Identitätsübernahme des Dienstkontos verwenden wird diese Form der Authentifizierung ausführlich beschrieben.

Wenn Sie die Identitätsübernahme eines Dienstkontos verwenden, beginnen Sie mit einem authentifizierten Hauptkonto (Ihrem Nutzer- oder Dienstkonto) und fordern kurzlebige Anmeldedaten für ein Dienstkonto an, für das die erforderliche Autorisierung vorliegt.

Diese Methode ist sicherer als das Herunterladen eines Dienstkontoschlüssels für das Zieldienstkonto, da Sie die Anmeldedaten nicht im Dateisystem oder sogar im Arbeitsspeicher speichern müssen.

  1. Schreiben Sie das Beispiel in einer Funktion, die die Dienstkonto-ID als Eingabeparameter empfängt. Dies kann die E-Mail-Adresse des Dienstkontos oder die eindeutige numerische ID des Dienstkontos sein, die von Google zugewiesen wurde.

    /// # Parameters
    /// * `target_principal`: the email or unique id of the target service account.
    ///   For example: `my-service-account@my-project.iam.gserviceaccount.com`.
    pub async fn sample(target_principal: &str) -> anyhow::Result<()> {

  2. Fügen Sie einige „use“-Deklarationen hinzu, um den Rest des Beispiels zu vereinfachen:

    use google_cloud_auth::credentials::Builder as AdcCredentialsBuilder;
    use google_cloud_auth::credentials::impersonated::Builder as ImpersonatedCredentialsBuilder;
    use google_cloud_language_v2::client::LanguageService;
    use google_cloud_language_v2::model::{Document, document::Type};

  3. Erstellen Sie die Anmeldedaten mit dem Builder für das übernommene Dienstkonto: Builder

    let credentials = ImpersonatedCredentialsBuilder::from_source_credentials(
        AdcCredentialsBuilder::default().build()?,
    )
    .with_target_principal(target_principal)
    .build()?;

  4. Initialisieren Sie den Client mit dem Objekt credentials:

    let client = LanguageService::builder()
        .with_credentials(credentials)
        .build()
        .await?;

  5. Verwenden Sie diesen Client wie gewohnt:

    let response = client
        .analyze_sentiment()
        .set_document(
            Document::new()
                .set_content("Hello World!")
                .set_type(Type::PlainText),
        )
        .send()
        .await?;
    println!("response={response:?}");

Weitere Informationen

Weitere Informationen zu anderen Authentifizierungsmethoden in den Rust-Clientbibliotheken: