다양한 사용 사례를 지원하는 사용자 인증 정보 유형

개요

gsutil은 현재 다양한 유형의 사용자 인증 정보/인증뿐만 아니라 공개 데이터에 대한 익명 액세스 기능을 지원합니다. 익명 액세스에 대한 자세한 내용은 gsutil help anon을 참조하세요. 이러한 각 사용자 인증 정보 유형은 Cloud SDK 또는 독립형 gsutil 설치를 통한 사용자 인증 정보 구성 및 사용에 대한 자세한 내용과 함께 아래에 자세히 설명되어 있습니다.

Gsutil의 Cloud SDK 배포를 통한 사용자 인증 정보 구성/사용

gsutil을 Cloud SDK('gcloud')를 통해 설치/사용하는 경우 사용자 인증 정보는 Cloud SDK의 ~/.config/gcloud 아래에 위치한 사용자가 수정할 수 없는 파일에 저장됩니다. 사용자 인증 정보 작업은 gcloud auth 명령어를 통해서만 가능합니다. 여러 사용자 인증 정보를 설정해야 하는 경우(예: 개별 사용자 계정용 1개와 서비스 계정용 1개) gcloud auth 명령어가 개발자의 사용자 인증 정보를 관리하고 개발자는 gcloud auth 명령어를 사용하여 사용자 인증 정보 간에 전환합니다(자세한 내용은 https://cloud.google.com/sdk/gcloud/reference/auth 참조).

사용자 인증 정보가 gcloud auth를 통해 구성되면 사용자에게 boto 구성 파일(BOTO_CONFIG 환경 변수에 다른 경로가 지정되지 않았으면 ~/.boto에 있음)이 있는지 여부에 관계없이 해당 사용자 인증 정보가 사용됩니다. 하지만 gsutil은 gcloud 사용자 인증 정보 저장소에 저장되지 않은 Cloud Storage가 아닌 사용자 인증 정보 유형(예: S3 계정의 HMAC 사용자 인증 정보)이 필요한 경우에도 boto 구성 파일에서 사용자 인증 정보를 찾습니다.

독립형 Gsutil 배포를 통한 사용자 인증 정보 구성/사용

https://pub.storage.googleapis.com/gsutil.tar.gz, https://pub.storage.googleapis.com/gsutil.zip 또는 PyPi에서 다운로드한 독립형 gsutil 배포를 설치했으면 사용자 인증 정보는 gsutil config 명령어를 통해 구성되고 사용자가 수정할 수 있는 boto 구성 파일(BOTO_CONFIG 환경에 다른 경로가 지정되지 않았으면 ~/.boto에 있음)에 저장됩니다. 이 경우에 여러 사용자 인증 정보를 설정하려면(예: 개별 사용자 계정용 1개와 서비스 계정용 1개) 각 사용자 인증 정보에 gsutil config를 한 번만 실행하고 각각의 생성된 boto 구성 파일을 저장하고(예: 파일 이름을 하나는 ~/.boto_user_account로, 다른 하나는 ~/.boto_service_account로 변경), BOTO_CONFIG 환경 변수를 사용하여 사용자 인증 정보 간에 전환합니다(예: BOTO_CONFIG=~/.boto_user_account gsutil ls 실행).

JSON API로 독립형 gsutil 버전을 사용하는 경우 boto 구성 파일 하나에는 OAuth2 사용자 계정 또는 OAuth2 서비스 계정 중 한 가지 유형의 Cloud Storage 사용자 인증 정보만 구성할 수 있습니다. 이 외에도 S3 HMAC 사용자 인증 정보(s3:// URL 사용 시 필요)와 Google Compute Engine 내부 서비스 계정 사용자 인증 정보를 사용할 수 있습니다. Google Compute Engine 내부 서비스 계정 사용자 인증 정보는 OAuth2 사용자 인증 정보가 없는 경우에만 사용됩니다.

지원되는 사용자 인증 정보 유형

gsutil은 다양한 유형의 사용자 인증 정보를 지원합니다. 단, 유형 지원 여부는 사용 중인 gsutil 배포에 따라 다릅니다. 위 설명을 참조하세요.

OAuth2 사용자 계정:
특정 사용자를 대신하여 요청을 인증할 때 기본적으로 사용되는 사용자 인증 정보 유형입니다(가장 일반적인 gsutil 용도). 'gsutil config'(또는 Cloud SDK 설치의 경우 'gcloud init')를 실행할 때 생성되는 기본 사용자 인증 정보 유형입니다. OAuth2 인증에 대한 자세한 내용은 https://developers.google.com/accounts/docs/OAuth2#scenarios를 참조하세요.
HMAC:

이 사용자 인증 정보 유형은 HMAC 인증을 통해 구현된 프로그램에서 사용할 수 있습니다. HMAC 인증은 다른 특정 클라우드 스토리지 서비스 제공업체에서 지원되는 인증 메커니즘입니다. 이 사용자 인증 정보 유형은 HMAC 사용자 인증 정보를 지원하는 서비스 제공업체와 데이터를 주고받을 때 상호작용에 사용되기도 합니다. 'gsutil config -a'를 실행할 때 생성되는 사용자 인증 정보 유형입니다.

Cloud Storage와 다른 서비스 제공업체 모두에 HMAC 사용자 인증 정보를 설정하거나, Cloud Storage에는 OAuth2 사용자 계정 사용자 인증 정보를 설정하고 다른 서비스 제공업체에는 HMAC 사용자 인증 정보를 설정할 수도 있습니다. 이렇게 하려면 'gsutil config' 명령어(또는 Cloud SDK 설치의 경우 'gcloud init')를 실행한 후 생성된 ~/.boto 구성 파일을 수정하고 다른 사용자 인증 정보를 추가할 주석을 찾습니다.

HMAC 인증에 대한 자세한 내용은 다음을 참조하세요.
https://developers.google.com/storage/docs/reference/v1/getting-startedv1#keys
OAuth2 서비스 계정:

사용자가 아닌 서비스 또는 애플리케이션을 대신하여 인증할 때 기본적으로 사용되는 사용자 인증 정보 유형입니다. 예를 들어 데이터 업로드/다운로드를 위해 야간 크론 작업에서 gsutil을 실행할 경우 서비스 계정을 사용하면 크론 작업이 회사의 개별 직원의 사용자 인증 정보에 의존하지 않습니다. 'gsutil config -e'를 실행할 때 구성되는 사용자 인증 정보 유형입니다. Cloud SDK를 통해 설치할 때 서비스 계정 사용자 인증 정보를 구성하려면 'gcloud auth activate-service-account'를 실행합니다.

서비스 계정은 기본적으로 소유자가 아닌 API 액세스 목적으로 편집자로 간주됩니다. 특히 편집자에게 기본 객체와 버킷 ACL에 대한 소유자 액세스 권한이 있지만 미리 준비된 ACL 옵션이 편집자로부터 소유자 액세스 권한을 삭제하면 예상치 못한 결과가 발생할 수 있습니다. 이 문제를 해결하려면 'gsutil acl set <canned-ACL>' 대신 'gsutil acl ch'를 사용하여 버킷에 대한 권한을 변경합니다.

'gsutil config -e' 또는 'gcloud auth activate-service-account'에 사용할 서비스 계정을 설정하려면 다음을 참조하세요.

OAuth2 서비스 계정에 대한 자세한 내용은 다음을 참조하세요.
https://developers.google.com/accounts/docs/OAuth2ServiceAccount
계정 역할에 대한 자세한 내용은 다음을 참조하세요.
https://developers.google.com/console/help/#DifferentRoles
Google Compute Engine 내부 서비스 계정:

App Engine 또는 Google Compute Engine에서 호스팅되는 계정에 사용되는 서비스 계정 유형입니다. 이 사용자 인증 정보는 Google Compute Engine에서 gcloud compute instances creates 명령어를 실행하면 자동으로 생성되며 --scopes 플래그로 제어할 수 있습니다.

Google Compute Engine 서비스 계정에 대한 자세한 내용은 다음을 참조하세요.
https://developers.google.com/compute/docs/authentication;
App Engine 서비스 계정에 대한 자세한 내용은 다음을 참조하세요.
https://developers.google.com/appengine/docs/python/appidentity/overview
서비스 계정 가장:

특정 리소스에 대한 단기 액세스 권한을 부여해야 할 때 서비스 계정을 가장하면 유용합니다. 예를 들어 일반적으로 읽기 전용인 민감한 데이터가 포함된 버킷이 있고 신뢰할 수 있는 서비스 계정을 통해 쓰기 액세스 권한을 일시적으로 부여하려는 경우가 해당됩니다.

'gsutil -i', 'gsutil config'를 실행하고 boto 구성 파일을 수정하거나 'gcloud config set auth/impersonate_service_account'를 수정하여 가장에 사용할 서비스 계정을 지정할 수 있습니다.

가장하려면 대상 서비스 계정에서 원래 사용자 인증 정보에 roles/iam.serviceAccountTokenCreator를 부여해야 합니다. 자세한 내용은 다음을 참조하세요.