Cloud Storage 인증

Cloud Storage에서 수행하는 대부분의 작업은 인증을 거쳐야 합니다. 유일한 예외는 익명 액세스를 허용하는 객체 관련 작업입니다. allUsers 그룹에 READ 권한이 있으면 객체에 익명으로 액세스할 수 있습니다. allUsers 그룹에는 인터넷에 연결된 모든 사용자가 포함됩니다.

OAuth 2.0

인증

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

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

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

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

범위

인증은 지정된 리소스 조합에 대해 인증된 ID가 갖는 권한을 결정하는 프로세스입니다. OAuth는 범위를 사용하여 인증된 ID가 승인되었는지 확인합니다. 애플리케이션은 사용자 중심 또는 서버 중심 인증 흐름에서 얻은 사용자 인증 정보를 하나 이상의 범위와 함께 사용하여 보호되는 리소스 액세스를 위한 Google 승인 서버의 액세스 토큰을 요청합니다. 예를 들어, read-only 범위를 포함한 액세스 토큰이 있는 애플리케이션 A는 데이터를 읽을 수만 있지만, read-write 범위를 포함한 액세스 토큰이 있는 애플리케이션 B는 데이터를 읽고 수정할 수 있습니다. 두 애플리케이션 모두 객체와 버킷의 액세스제어 목록(ACL)을 읽거나 수정할 수 없습니다. full-control 범위가 있는 애플리케이션만 이를 수행할 수 있습니다.

유형 설명 범위 URL
read-only 버킷 나열을 포함한 데이터 읽기 액세스 권한만 허용합니다. https://www.googleapis.com/auth/devstorage.read_only
read-write IAM 정책과 같은 메타데이터가 아닌 데이터 읽기 및 변경 액세스 권한을 허용합니다. https://www.googleapis.com/auth/devstorage.read_write
full-control IAM 정책 수정 기능을 포함하여 데이터에 대한 모든 권한을 허용합니다. https://www.googleapis.com/auth/devstorage.full_control
cloud-platform.read-only Google Cloud Platform 서비스에서 데이터를 조회합니다. Cloud Storage의 경우 이는 devstorage.read-only와 동일합니다. https://www.googleapis.com/auth/cloud-platform.read-only
cloud-platform 모든 Google Cloud Platform 서비스에서 데이터를 보고 관리합니다. Cloud Storage의 경우 이는 devstorage.full-control과 동일합니다. https://www.googleapis.com/auth/cloud-platform

gsutil 인증

Cloud SDK에서 설치한 gsutil을 사용하는 경우 서비스 계정의 사용자 인증 정보로 인증합니다.

  1. 기존 서비스 계정을 사용하거나 새 계정을 만들고 연결된 비공개 키를 다운로드합니다.

  2. gcloud auth activate-service-account를 사용하여 서비스 계정으로 인증합니다.

    gcloud auth activate-service-account --key-file [KEY_FILE]

    여기에서 [KEY_FILE]은 서비스 계정 사용자 인증 정보가 들어 있는 파일의 이름입니다.

gcloud auth는 액세스 토큰을 가져올 때 cloud-platform 범위를 사용합니다.

gsutil을 Cloud SDK와 별개로 설치한 경우 인증 방법에 대한 자세한 내용은 gsutil 설치 페이지를 참조하세요.

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

Client libraries can use Application Default Credentials to easily authenticate with Google APIs and send requests to those APIs. With Application Default Credentials, you can test your application locally and deploy it without changing the underlying code. For more information, including code samples, see Google Cloud Platform Auth Guide.

  • Google Cloud Platform

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

  • 기타 환경

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

API 인증

Cloud Storage XML API 또는 JSON API에 OAuth 2.0을 사용하여 요청을 실행하려면 인증이 필요한 모든 요청의 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

XML API

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

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

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

Amazon S3와 상호 운용 가능한 액세스하도록 XML API에 사용할 개발자 키를 찾는 경우 단순 이전용 개발자 키 관리하기를 참조하세요.

사용자 계정 사용자 인증 정보

애플리케이션이 사용자를 대신하여 데이터에 액세스해야 하는 경우 사용자 계정 사용자 인증 정보를 인증에 사용합니다. 그렇지 않으면 서비스 계정 사용자 인증 정보를 사용합니다. 다음은 사용자 계정 사용자 인증 정보를 사용할 수 있는 시나리오의 예입니다.

  • 웹 서버 애플리케이션
  • 설치된 애플리케이션 및 데스크톱 애플리케이션
  • 모바일 애플리케이션
  • 클라이언트 자바스크립트
  • 입력이 제한된 기기의 애플리케이션

이러한 시나리오에 대한 자세한 내용은 OAuth 시나리오를 참조하세요.

최종 사용자를 위한 여러 인증 옵션을 지원하도록 애플리케이션을 설계하는 경우 이메일 및 비밀번호 인증은 물론 Google, Facebook, Twitter, GitHub 등의 ID 공급업체를 이용하는 제휴 로그인을 지원하는 Firebase 인증을 사용합니다.

최종 사용자가 애플리케이션에 사용자 중심 인증 흐름의 액세스 토큰을 부여하는 경우 해당 액세스 토큰은 토큰을 부여하는 사용자가 사용할 수 있는 권한만 가집니다. 예를 들어, jane@gmail.com이 example-bucket에 대한 read-only 액세스 권한을 가지고 있는 경우 Jane이 read-write 액세스 권한을 부여한 애플리케이션은 Jane을 대신하여 example-bucket에 쓸 수 없습니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

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

도움이 필요하시나요? 지원 페이지를 방문하세요.