Ignorare il metodo di autenticazione predefinito

Questo documento descrive come sostituire l'autenticazione predefinita utilizzata da Rust. Rust autentica automaticamente le richieste ai Google Cloud servizi, ma a volte potrebbe essere necessario sostituire le credenziali predefinite.

Prerequisiti

Questa guida utilizza l'API Cloud Natural Language. Per installare questa API, segui la guida rapida del servizio, che mostra come abilitare un servizio.

Per istruzioni di configurazione complete per le librerie Rust, consulta la sezione Guida introduttiva a Rust.

Dipendenze

Devi dichiarare le dipendenze nel file Cargo.toml:

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

Credenziali predefinite

Il modo consigliato per autenticare le applicazioni in Google Cloud è utilizzare le Credenziali predefinite dell'applicazione. Senza alcuna configurazione, le librerie client utilizzano per impostazione predefinita questo tipo di credenziali. Consulta la sezione Come funzionano le Credenziali predefinite dell'applicazione per informazioni su come configurare questa impostazione predefinita senza apportare modifiche al codice dell' applicazione.

  1. Aggiungi alcune dichiarazioni di utilizzo per semplificare il resto dell'esempio:

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

  2. Inizializza il client utilizzando le impostazioni predefinite:

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

  3. Utilizza questo client come al solito:

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

Sostituisci le credenziali predefinite: chiavi API

Le chiavi API sono stringhe di testo che concedono l'accesso ad alcuni Google Cloud servizi. L'utilizzo delle chiavi API può semplificare lo sviluppo, in quanto richiede meno configurazione rispetto ad altri metodi di autenticazione. Esistono alcuni rischi associati alle chiavi API, ti consigliamo di leggere le best practice per la gestione delle chiavi API se prevedi di utilizzarle.

  1. Scrivi una funzione che riceve la stringa della chiave API come parametro di input:

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

  2. Aggiungi alcune dichiarazioni di utilizzo per semplificare il resto dell'esempio:

    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. Utilizza il generatore di chiavi API Builder per creare le credenziali:

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

  4. Inizializza il client utilizzando l'oggetto credentials:

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

  5. Utilizza questo client come al solito:

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

Sostituisci le credenziali predefinite: simulazione dell'identità del account di servizio

La simulazione dell'identità del service account consente di effettuare chiamate API per conto di un account di servizio. La sezione Utilizzare account di servizio account descrive in dettaglio questa forma di autenticazione.

Quando utilizzi la simulazione dell'identità del account di servizio, inizi con un'entità autenticata (il tuo account utente o un account di servizio) e richiedi credenziali di breve durata per un account di servizio che dispone dell'autorizzazione richiesta dal tuo caso d'uso.

È più sicuro del download di una chiave del account di servizio per il service account di destinazione, in quanto non è necessario conservare le credenziali nel file system o anche in memoria.

  1. Scrivi l'esempio in una funzione che riceve l'identificatore del account di servizio come parametro di input. Può trattarsi dell'indirizzo email del account di servizio o dell'identificatore numerico univoco assegnato da Google al account di servizio.

    /// # 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. Aggiungi alcune dichiarazioni di utilizzo per semplificare il resto dell'esempio:

    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. Utilizza il generatore di account di servizio con simulazione dell'identità Builder per creare le credenziali:

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

  4. Inizializza il client utilizzando l'oggetto credentials:

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

  5. Utilizza questo client come al solito:

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

Ulteriori informazioni

Scopri di più sugli altri metodi di autenticazione nelle librerie client Rust: