기본 인증 방법 재정의

이 문서에서는 Rust에서 사용하는 기본 인증을 재정의하는 방법을 설명합니다. Rust는 Google Cloud 서비스에 대한 요청을 자동으로 인증하지만 기본 사용자 인증 정보를 재정의해야 하는 경우가 있습니다.

기본 요건

이 가이드에서는 Cloud Natural Language API를 사용합니다. 이 API를 설치하려면 서비스를 사용 설정하는 방법을 보여주는 서비스 빠른 시작을 따르세요.

Rust 라이브러리의 전체 설정 안내는 Rust 시작하기를 참고하세요.

종속 항목

Cargo.toml 파일에서 종속 항목을 선언해야 합니다.

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

기본 사용자 인증 정보

Google Cloud 에서 애플리케이션을 인증하는 권장 방법은 애플리케이션 기본 사용자 인증 정보를 사용하는 것입니다. 클라이언트 라이브러리는 이 사용자 인증 정보 유형을 기본값으로 사용하므로 별도의 구성이 필요하지 않습니다. 애플리케이션에서 코드 변경 없이 이 기본값을 구성하는 방법에 대한 자세한 내용은 애플리케이션 기본 사용자 인증 정보의 작동 방식을 참고하세요.

  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 서비스에 대한 액세스 권한을 부여하는 텍스트 문자열입니다. API 키를 사용하면 다른 인증 방법보다 구성이 덜 필요하므로 개발이 간소화될 수 있습니다. 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. 가장된 서비스 계정 빌더를 사용하여 사용자 인증 정보를 만듭니다.

    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 클라이언트 라이브러리의 다른 인증 방법을 알아보세요.