서비스 계정은 최종 사용자가 아닌 애플리케이션과 연결된 계정입니다. 앱을 개발하거나 REST API를 사용하는 경우 서비스 계정을 사용하여 Earth Engine에 인증해야 할 수 있습니다. 서비스 계정으로 인증하는 방법을 자세히 알아보세요.
서비스 계정 만들기
먼저 Google Cloud 프로젝트를 만듭니다(아직 만들지 않은 경우).
Cloud Console 메뉴 (서비스 계정을 선택하면 Cloud 프로젝트의 서비스 계정을 관리할 수 있습니다. (메시지가 표시되면 프로젝트를 선택합니다.)
)로 이동하여 IAM 및 관리자 >새 서비스 계정을 만들려면 + 서비스 계정 만들기 링크를 클릭합니다.
App Engine 프로젝트를 만들었다면 해당 프로젝트에 이미 기본 서비스 계정(App Engine 기본 서비스 계정)이 있을 수 있습니다. App Engine 프로젝트를 설정하는 경우 서비스 계정 역할에서 프로젝트 > 편집자를 선택합니다.
서비스 계정의 비공개 키 만들기
서비스 계정이 있으면 해당 계정의 메뉴(
)를 클릭한 다음 키 만들기 > JSON을 클릭합니다. JSON 키 파일을 다운로드합니다.키 파일 안전하게 보관하기
키 파일은 프로그램이 서비스 계정을 대신하여 Google API에 액세스할 수 있는 특수 파일입니다. 다른 사용자가 무단으로 액세스할 수 없도록 합니다. 무단 액세스가 이루어지면 다른 사용자가 개발자를 대신하여 Google API에 액세스할 수 있기 때문입니다. 공유 폴더나 소스 저장소와 같은 공개된 위치에 비공개 키를 저장하지 마세요. 비공개 키를 분실한 경우 Cloud 콘솔을 사용하여 서비스 계정에 대한 액세스 권한을 쉽게 취소하고 새 계정을 만들 수 있습니다. 자세한 내용은 이 가이드를 참고하세요.
Earth Engine을 사용하도록 서비스 계정 등록
모든 서비스 계정은 Cloud 프로젝트 내에서 생성되며, 이 프로젝트는 App Engine 앱 또는 Cloud VM에 사용된 것과 동일한 프로젝트일 수 있습니다. Earth Engine에 액세스하도록 Cloud 프로젝트가 등록되어 있고 프로젝트에 Earth Engine API가 사용 설정되어 있는지 확인합니다. 올바른 권한이 있는 프로젝트의 모든 서비스 계정은 Earth Engine에 액세스할 수 있으며 별도로 등록할 필요가 없습니다.
더 이상 개별 서비스 계정을 등록할 수 없으며 Cloud 프로젝트 자체를 등록해야 합니다.
비공개 키로 서비스 계정 사용
서비스 계정을 사용하여 Earth Engine에 인증하려면 다음 단계를 따르세요.
- 서비스 계정의 JSON 비공개 키 파일 (
.private-key.json
)을 만들고 다운로드합니다. .private-key.json
파일을 저장한 위치에서 다음 Python 코드를 테스트합니다.import ee service_account = 'my-service-account@...gserviceaccount.com' credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json') ee.Initialize(credentials)
오류 없이 초기화할 수 있으면 서비스 계정을 사용할 수 있습니다.
invalid_grant 오류가 발생하면 어떻게 해야 하나요?
OAuth2는 시계 오류에 매우 민감할 수 있습니다. 모든 설정을 올바르게 했고 Google 담당자가 서비스 계정이 승인되었음을 확인해 주었다고 확신하는 경우 컴퓨터의 시계가 네트워크 시간과 동기화되어 있는지 확인하세요.
Ubuntu 시스템의 경우 컴퓨터 시계를 동기화하는 호출은 다음과 같습니다.
ntpdate ntp.ubuntu.com
OS X를 사용하는 시스템의 경우 시스템 환경설정 > 날짜 및 시간 > 날짜 및 시간 (다시)을 열고 날짜 및 시간 자동 설정을 선택합니다.
기본 서비스 계정 사용
기본 서비스 계정을 사용하는 경우 먼저 Compute Engine 서비스 계정의 VM 액세스 범위를 '모든 Cloud API에 대한 전체 액세스 허용'으로 수정해야 합니다. Dataflow 또는 App Engine에서 기본 서비스 계정을 사용하는 경우에는 이 단계가 필요하지 않습니다.기본 서비스 계정을 사용하여 Earth Engine에 인증하려면 다음 코드를 사용하세요.
from google.auth import compute_engine import ee credentials = compute_engine.Credentials(scopes=['https://www.googleapis.com/auth/earthengine']) ee.Initialize(credentials)
REST API 액세스 설정
서비스 계정이 REST API를 사용하여 계산을 실행하는 경우 프로젝트 수준 권한, 특히 Earth Engine 리소스 보기 권한 역할을 부여해야 합니다. 프로젝트 구성에 따라 서비스 계정에 서비스 사용량 소비자 역할을 부여해야 할 수도 있습니다. Earth Engine을 사용하는 데 필요한 프로젝트 권한에 관한 자세한 내용은 액세스 제어 페이지를 참고하세요.