Google Compute Engine에 대한 요청 승인

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

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

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

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

Compute Engine 인스턴스에서 애플리케이션을 실행하는 경우 애플리케이션 기본 사용자 인증 정보에서 기본 제공 서비스 계정을 통해 사용자 인증 정보를 가져올 수 있습니다. 이 기본 제공 서비스 계정으로 인스턴스를 구성하고 Compute Engine 인스턴스에서 애플리케이션을 실행하려면 인스턴스용 서비스 계정 생성 및 사용 설정을 읽어보세요.

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

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

개발 중인 애플리케이션

로컬에서 애플리케이션을 개발하면서 gcloud 도구auth application-default login 정보를 사용하여 애플리케이션에 사용할 사용자 인증 정보를 임시로 가져올 수 있습니다. 이 명령어는 보통은 서비스 계정을 사용하지만 로컬 개발 환경에서 실행해야 하는 코드를 개발할 때 유용하며, 이렇게 하면 사용자 인증 정보를 더 쉽게 제공할 수 있습니다. 사용자 인증 정보는 애플리케이션 기본 사용자 인증 정보 클라이언트 라이브러리를 사용하는 모든 API 호출에 적용됩니다.

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

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

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

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

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

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

이 샘플을 Google Cloud Storage의 버킷 관리 권한이 있는 인스턴스에서 실행하거나 gcloud 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 범위를 지정합니다.

범위 의미
https://www.googleapis.com/auth/cloud-platform 지정된 Cloud Platform 프로젝트의 모든 리소스와 서비스에 대한 전체 액세스입니다.
https://www.googleapis.com/auth/compute Google Compute Engine 메소드에 대한 읽기-쓰기 액세스입니다.
https://www.googleapis.com/auth/compute.readonly Google Compute Engine 메소드에 대한 읽기 전용 액세스입니다.
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

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

Compute Engine 문서