Cloud Storage 인증

Cloud Storage에서 수행하는 대부분의 작업은 인증을 거쳐야 합니다. 유일한 예외는 익명 액세스를 허용하는 리소스 관련 작업입니다. allUsers 그룹이 리소스의 ACL에 포함되어 있거나 allUsers 그룹이 리소스에 적용되는 IAM 정책에 포함된 경우 리소스에 익명 액세스 권한이 있습니다. allUsers 그룹에는 인터넷에 연결된 모든 사용자가 포함됩니다.

OAuth 2.0 인증

Cloud Storage는 API 인증 및 승인에 OAuth 2.0을 사용합니다. 인증은 클라이언트의 ID를 결정하는 프로세스입니다. 인증의 세부정보는 Cloud Storage에 액세스하는 방법에 따라 다르지만 다음과 같은 두 가지 일반 유형으로 나뉩니다.

  • 서버 중심 흐름을 사용하면 애플리케이션이 인증을 완료하기 위해 서비스 계정의 사용자 인증 정보를 직접 보유할 수 있습니다. 애플리케이션이 사용자 데이터가 아닌 자체 데이터로 작업하는 경우 이 흐름을 사용합니다. Google Cloud 프로젝트의 기본 서비스 계정을 사용하거나 새 서비스 계정을 만들 수 있습니다.

  • 사용자 중심 흐름을 사용하여 애플리케이션이 최종 사용자로부터 사용자 인증 정보를 얻을 수 있습니다. 사용자가 로그인하면 인증이 완료됩니다. 애플리케이션이 사용자 데이터에 액세스해야 하는 경우 이 흐름을 사용합니다. 사용자 중심 흐름이 적절한 시나리오는 사용자 계정 사용자 인증 정보를 참조하세요.

애플리케이션에서 두 유형의 인증을 함께 사용할 수 있음을 명심하세요. 인증에 대한 배경 정보는 Google Cloud 인증 가이드를 참조하세요.

명령줄 인터페이스 인증

Google Cloud CLI를 사용하여 Cloud Storage에서 작업하는 경우 일반적으로 사용자 계정 사용자 인증 정보로 인증해야 합니다. 이렇게 하려면 gcloud auth login 명령어를 실행하고 안내를 따릅니다. 이 안내에는 사용자 계정에 로그인하는 방법이 포함되어 있습니다. 추가 인증 옵션은 gcloud CLI 사용을 위한 인증을 참조하세요.

클라이언트 라이브러리 인증

클라이언트 라이브러리는 애플리케이션 기본 사용자 인증 정보를 사용하여 간편하게 Google API를 인증하고 API에 요청을 보낼 수 있습니다. 애플리케이션 기본 사용자 인증 정보를 사용하면 애플리케이션을 로컬에서 테스트하고 기본 코드를 변경하지 않은 상태로 배포할 수 있습니다. 자세한 내용은 클라이언트 라이브러리 사용 인증을 참조하세요.

  • Google Cloud

    연결된 서비스 계정을 지원하는 App Engine, Cloud Functions, Cloud Run, Compute Engine 등의 서비스에서 애플리케이션을 실행하는 경우 환경에서 이미 서비스 계정의 인증 정보를 제공하므로 추가 설정이 필요하지 않습니다. Compute Engine의 경우 서비스 계정 범위는 인스턴스 생성 방법에 따라 다릅니다. Compute Engine 문서의 액세스 범위를 참조하세요. App Engine의 경우 cloud-platform 범위가 사용됩니다.

  • 기타 환경

    로컬 개발 또는 프로덕션 환경을 초기화하려면 Google Cloud 서비스 계정을 만들고 서비스 계정 키를 다운로드한 다음, 이 키를 사용하도록 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 설정합니다. 단계별 정보는 Cloud Storage 클라이언트 라이브러리를 사용한 인증 설정을 참조하세요.

API 인증

Cloud Storage XML API 또는 JSON API에 OAuth 2.0을 사용하여 요청을 실행하려면 인증이 필요한 모든 요청의 Authorization 헤더에 애플리케이션의 액세스 토큰을 포함합니다. OAuth 2.0 Playground에서 승인 액세스 토큰을 생성할 수 있습니다.

  1. OAuth 2.0 플레이그라운드에서 Cloud Storage API v1을 클릭한 후 애플리케이션의 액세스 수준을 선택합니다(full_control, read_only 또는 read_write).

  2. API 승인을 클릭합니다.

  3. 메시지가 표시되면 계정에 로그인합니다. 대화상자가 표시되면 허용을 클릭합니다.

  4. 플레이그라운드의 2단계에서 표시되는 승인 코드에 대해 승인 코드를 토큰으로 교환을 클릭합니다.

  5. 액세스 토큰을 복사하여 요청의 Authorization 헤더에 포함합니다.

    Authorization: Bearer OAUTH2_TOKEN

다음은 버킷의 객체를 나열하는 요청의 예입니다.

JSON API

객체 리소스의 list 메서드를 사용합니다.

GET /storage/v1/b/example-bucket/o HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

명령줄에서 요청을 승인하거나 테스트하려면 다음 구문과 함께 curl 명령어를 사용합니다.

curl -H "Authorization: Bearer OAUTH2_TOKEN" "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o"

로컬 테스트의 경우 gcloud auth application-default print-access-token 명령어를 사용하여 토큰을 생성할 수 있습니다.

XML API

객체 나열 요청을 사용합니다.

GET / HTTP/1.1
Host: example-bucket.storage.googleapis.com
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

명령줄에서 요청을 승인하거나 테스트하려면 다음 구문과 함께 curl 명령어를 사용합니다.

curl -H "Authorization: Bearer OAUTH2_TOKEN" "https://BUCKET_NAME.storage.googleapis.com"

로컬 테스트의 경우 gcloud auth application-default print-access-token 명령어를 사용하여 토큰을 생성할 수 있습니다.

액세스 토큰 관리 및 새로고침의 복잡성과 암호화 애플리케이션 직접 처리 시 보안 위험 때문에 확인된 클라이언트 라이브러리를 사용하는 것이 좋습니다.

Amazon S3와 상호 운용 가능한 액세스를 위해 XML API에 사용할 HMAC 키를 찾는 경우 서비스 계정의 HMAC 키 관리를 참조하세요.

다음 단계