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

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

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

במדריך הזה נעשה שימוש ב-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 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 Google. שימוש במפתחות API יכול לפשט את תהליך הפיתוח, כי הם דורשים פחות הגדרות בהשוואה לשיטות אימות אחרות. יש כמה סיכונים שקשורים למפתחות API, ולכן מומלץ לקרוא את המאמר שיטות מומלצות לניהול מפתחות API אם אתם מתכננים להשתמש בהם.

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

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

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

    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. משתמשים בכלי ליצירת מפתחות 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 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: