설치된 앱의 사용자 계정으로 인증

이 가이드에서는 앱이 사용자 머신에 설치될 때 BigQuery API에 액세스하기 위해 사용자 계정을 사용하여 인증하는 방법을 설명합니다.

앱이 최종 사용자가 사용할 수 있는 BigQuery 테이블에만 액세스하는지 확인하려면 사용자 인증 정보를 사용하여 인증합니다. 사용자 인증 정보는 앱의 프로젝트가 아니라 최종 사용자의 Google Cloud 프로젝트에 대해서만 쿼리를 실행할 수 있습니다. 즉, 앱이 아닌 쿼리를 기준으로 사용자에게 비용이 청구됩니다.

시작하기 전에

  1. 설치된 앱을 나타내는 Google Cloud 프로젝트를 만듭니다.
  2. BigQuery 클라이언트 라이브러리를 설치합니다.
  3. 필요한 라이브러리를 설치합니다.

    Python

    Google Auth용 oauthlib 통합을 설치합니다.
    pip install --upgrade google-auth-oauthlib

클라이언트 사용자 인증 정보 설정

다음 버튼을 사용하여 프로젝트를 선택하고 필요한 사용자 인증 정보를 만듭니다.

사용자 인증 정보 가져오기

사용자 인증 정보 수동 생성

  1. Google Cloud Console에서 API 사용자 인증 정보 페이지로 이동합니다.
  2. OAuth 동의 화면에서 필수 입력란을 작성합니다.
  3. 사용자 인증 정보 페이지에서 사용자 인증 정보 만들기 버튼을 클릭합니다.

    OAuth 클라이언트 ID를 선택합니다.

  4. 앱 유형으로 기타를 선택한 후 만들기를 클릭합니다.
  5. JSON 다운로드 버튼을 클릭하여 사용자 인증 정보를 다운로드합니다.

    JSON 다운로드

    사용자 인증 정보 파일을 client_secrets.json에 저장합니다. 이 파일을 앱과 함께 배포해야 합니다.

API 인증 및 호출

  1. 클라이언트 사용자 인증 정보를 사용하여 OAuth 2.0 흐름을 수행합니다.

    Python

    from google_auth_oauthlib import flow
    
    # TODO: Uncomment the line below to set the `launch_browser` variable.
    # launch_browser = True
    #
    # The `launch_browser` boolean variable indicates if a local server is used
    # as the callback URL in the auth flow. A value of `True` is recommended,
    # but a local server does not work if accessing the application remotely,
    # such as over SSH or from a remote Jupyter notebook.
    
    appflow = flow.InstalledAppFlow.from_client_secrets_file(
        'client_secrets.json',
        scopes=['https://www.googleapis.com/auth/bigquery'])
    
    if launch_browser:
        appflow.run_local_server()
    else:
        appflow.run_console()
    
    credentials = appflow.credentials
  2. 인증된 사용자 인증 정보를 사용하여 BigQuery API에 연결합니다.

    Python

    from google.cloud import bigquery
    
    # TODO: Uncomment the line below to set the `project` variable.
    # project = 'user-project-id'
    #
    # The `project` variable defines the project to be billed for query
    # processing. The user must have the bigquery.jobs.create permission on
    # this project to run a query. See:
    # https://cloud.google.com/bigquery/docs/access-control#permissions
    
    client = bigquery.Client(project=project, credentials=credentials)
    
    query_string = """SELECT name, SUM(number) as total
    FROM `bigquery-public-data.usa_names.usa_1910_current`
    WHERE name = 'William'
    GROUP BY name;
    """
    query_job = client.query(query_string)
    
    # Print the results.
    for row in query_job.result():  # Wait for the job to complete.
        print("{}: {}".format(row['name'], row['total']))

샘플 코드를 실행하면 클라이언트 보안 비밀번호와 연결된 프로젝트의 액세스를 요청하는 브라우저가 시작됩니다. 샘플이 BigQuery 범위를 요청했으므로, 결과 사용자 인증 정보를 통해 사용자의 BigQuery 리소스에 액세스할 수 있습니다.

다음 단계

  1. BigQuery API에 액세스하기 위해 앱을 인증하는 다른 방법 알아보기
  2. 모든 Google Cloud API에 대해 최종 사용자 인증 정보로 인증하는 방법 알아보기
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.