Compute Engine 요청 승인

Compute Engine API를 사용하여 Compute Engine 리소스를 관리하는 경우 Compute Engine 서비스 계정에서 사용자 인증 정보를 가져와 API에 애플리케이션을 인증할 수 있습니다. 서비스 계정을 사용하면 애플리케이션 코드에 보안 비밀 키를 포함하지 않아도 애플리케이션이 API에 인증을 수행할 수 있습니다.

애플리케이션에서 API에 대한 요청을 승인해야 하는 대부분의 상황에 서비스 계정을 권장합니다. 하지만, 사용자가 도구에 자신의 Google Cloud 리소스에 대한 액세스 권한을 부여하는 개발 또는 관리 도구를 빌드하는 경우에는 사용자 승인 절차를 대신 사용하세요.

서비스 계정에서 사용자 인증 정보를 가져오려면 Compute Engine 클라이언트 라이브러리애플리케이션 기본 사용자 인증 정보를 사용합니다. 이 패키지를 사용하면 애플리케이션이 실행되는 위치에 따라 사용 가능한 여러 소스 중 하나에서 사용자 인증 정보를 가져올 수 있습니다.

Compute Engine 인스턴스에서 실행되는 애플리케이션

Compute Engine 인스턴스에서 애플리케이션을 실행하는 경우 애플리케이션 기본 사용자 인증 정보에서 기본 제공 서비스 계정을 통해 사용자 인증 정보를 가져올 수 있습니다. 기본 제공되는 서비스 계정으로 인스턴스를 구성하고 Compute Engine 인스턴스에서 애플리케이션을 실행하는 방법은 액세스 토큰으로 직접 애플리케이션 인증을 참조하세요.

Google Cloud 외부에서 실행되는 애플리케이션

Google Cloud 외부 시스템에서 애플리케이션을 실행하는 경우 애플리케이션에서 애플리케이션 기본 사용자 인증 정보를 사용하여 시스템의 환경 변수에서 사용자 인증 정보를 가져올 수 있습니다. 필요한 사용자 인증 정보로 환경 변수를 구성하는 방법에 대한 자세한 내용은 서비스 계정으로 인증을 참조하세요.

개발 중인 애플리케이션

애플리케이션을 로컬로 개발하는 동안 gcloud auth application-default login 명령어를 사용해서 애플리케이션에 대한 사용자 인증 정보를 일시적으로 가져올 수 있습니다. 이 명령어는 일반적으로 서비스 계정이 사용되는 코드를 개발 중이지만 로컬 개발 환경에서 코드를 실행해야 할 때 사용자 인증 정보를 제공할 수 있도록 도와줍니다. 사용자 인증 정보는 애플리케이션 기본 사용자 인증 정보 클라이언트 라이브러리를 사용하는 모든 API 호출에 적용됩니다.

  1. 개발 시스템에 gcloud CLI를 설치합니다.

  2. gcloud auth application-default login 명령어를 사용해서 도구에 사용자 인증 정보를 제공합니다.

애플리케이션이 도구에서 사용자 인증 정보를 가져옵니다. 나중에 애플리케이션이 기본 제공 서비스 계정으로부터 사용자 인증 정보를 자동으로 가져오는 Compute Engine 인스턴스 또는 환경 변수에 사용자 인증 정보가 지정된 다른 시스템에 애플리케이션을 배포할 수 있습니다.

예: 애플리케이션 기본 사용자 인증 정보를 사용한 인증

이 예에서는 Python 클라이언트 라이브러리를 사용하여 Cloud Storage API를 인증하고 프로젝트의 버킷을 나열하도록 요청합니다. 이 예에서는 다음 절차를 사용합니다.

  1. Cloud Storage API에 필요한 사용자 인증 정보를 가져오고 build() 메서드와 사용자 인증 정보로 Cloud Storage 서비스를 초기화합니다.
  2. Cloud Storage의 버킷을 나열합니다.

이 샘플을 Cloud Storage의 버킷 관리 권한이 있는 인스턴스에서 실행할거나 gcloud beta auth application-default login 명령어를 실행한 후 또는 애플리케이션 기본 사용자 인증 정보를 사용하도록 환경 변수를 설정한 후 로컬 머신에서 실행할 수 있습니다.


import argparse

import googleapiclient.discovery

def create_service():
    # Construct the service object for interacting with the Cloud Storage API -
    # the 'storage' service, at version 'v1'.
    # Authentication is provided by application default credentials.
    # When running locally, these are available after running
    # `gcloud auth application-default login`. When running on Compute
    # Engine, these are available from the environment.
    return googleapiclient.discovery.build('storage', 'v1')

def list_buckets(service, project_id):
    buckets = service.buckets().list(project=project_id).execute()
    return buckets

def main(project_id):
    service = create_service()
    buckets = list_buckets(service, project_id)
    print(buckets)

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('project_id', help='Your Google Cloud Project ID.')

    args = parser.parse_args()

    main(args.project_id)

애플리케이션 사용자가 소유한 Google Cloud 리소스에 대한 액세스 권한 얻기

사용자가 Google Cloud 리소스에 대한 액세스 권한을 부여하는 개발 또는 관리 도구를 빌드하는 경우 기본 OAuth 2.0 프로세스를 통해 승인을 받습니다. 이 프로세스에서는 사용자가 사용자 승인 절차를 통해 정보에 대한 액세스 권한을 부여해야 합니다. 애플리케이션에 액세스 권한이 부여되면 각 사용자 프로젝트의 Compute Engine 리소스를 보거나 수정할 수 있습니다.

요청할 때 애플리케이션에 필요한 메서드 및 사용자 정보에만 액세스하도록 제한하는 액세스 범위를 지정합니다. 예를 들어, 애플리케이션에서 기존 Compute Engine 리소스는 보지만 사용자용 리소스를 생성하거나 수정하지 않는 경우 compute.readonly 범위를 지정합니다.

Compute Engine은 다음 범위를 제공합니다.

범위 의미
https://www.googleapis.com/auth/compute Google Compute Engine 메서드에 대한 읽기/쓰기 액세스 권한입니다.
https://www.googleapis.com/auth/compute.readonly Compute Engine 메서드에 대한 읽기 전용 액세스 권한입니다.
https://www.googleapis.com/auth/cloud-platform 지정된 Google Cloud 프로젝트의 Google Cloud 서비스 전반에서 데이터를 보고 관리합니다.

Google Cloud에서 서비스와 필수 범위의 전체 목록은 Google API용 OAuth 2.0 범위를 참조하세요.