ביטול שיטת האימות שמוגדרת כברירת מחדל

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

דרישות מוקדמות

במדריך הזה משתמשים ב-Cloud Natural Language API. כדי להתקין את ה-API הזה, פועלים לפי המדריך למתחילים של השירות, שמסביר איך להפעיל שירות.

הוראות מלאות להגדרת ספריות Rust מפורטות במאמר תחילת העבודה עם Rust.

יחסי תלות

צריך להצהיר על יחסי התלות בקובץ Cargo.toml:

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

פרטי הכניסה שמוגדרים כברירת מחדל

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

  1. מוסיפים כמה הצהרות use כדי לפשט את שאר הדוגמה:

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

  2. מאתחלים את הלקוח באמצעות ברירות המחדל:

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

  3. משתמשים בלקוח הזה כרגיל:

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

שינוי פרטי הכניסה שמוגדרים כברירת מחדל: מפתחות API

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

  1. כותבים פונקציה שמקבלת את מחרוזת מפתח ה-API כפרמטר קלט:

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

  2. מוסיפים כמה הצהרות use כדי לפשט את שאר הדוגמה:

    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. משתמשים ב-Builder של מפתחות ה-API כדי ליצור את פרטי הכניסה:

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

  4. מאתחלים את הלקוח באמצעות האובייקט credentials:

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

  5. ולהשתמש בלקוח הזה כרגיל:

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

שינוי פרטי הכניסה שמוגדרים כברירת מחדל: התחזות לחשבון שירות

התחזות לחשבון שירות מאפשרת לכם לבצע קריאות ל-API בשם חשבון שירות. במאמר שימוש בהתחזות לחשבון שירות מוסבר בפירוט על סוג האימות הזה.

כדי להשתמש בהתחזות לחשבון שירות, מתחילים עם חשבון משתמש מאומת (חשבון המשתמש או חשבון השירות שלכם) ומבקשים פרטי כניסה לטווח קצר לחשבון שירות שיש לו את ההרשאות הנדרשות להשלמת המשימה שלכם.

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

  1. כותבים את הדוגמה בפונקציה שמקבלת את מזהה חשבון השירות כפרמטר קלט. זה יכול להיות כתובת האימייל של חשבון השירות או המזהה המספרי הייחודי ש-Google הקצתה לחשבון השירות.

    /// # 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. מוסיפים כמה הצהרות use כדי לפשט את שאר הדוגמה:

    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. משתמשים ב-Builder של חשבון השירות שאליו מתחזים כדי ליצור את פרטי הכניסה:

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

  4. מאתחלים את הלקוח באמצעות האובייקט credentials:

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

  5. ולהשתמש בלקוח הזה כרגיל:

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

מידע נוסף

מידע נוסף על שיטות אימות אחרות בספריות הלקוח של Rust: