V4 서명은 Cloud Storage XML API 요청에서 인증에 필요한 서명을 생성하는 데 사용할 수 있는 프로세스입니다. 이 페이지에서는 Google Cloud CLI 및 Cloud Storage 클라이언트 라이브러리를 사용하여 서비스 계정 사용자 인증 정보를 사용하여 서명된 URL을 만드는 방법을 설명합니다. 서명된 URL은 제한된 시간 동안 특정 Cloud Storage 리소스에 읽기 또는 쓰기 액세스 권한을 제공합니다. 서명된 URL을 만들 수 있는 자체 프로그램을 만들려면 대신 자체 프로그램을 사용한 V4 서명을 읽어보세요.
시작하기 전에
서명된 URL을 만들려면 다음 섹션의 작업을 완료하세요.
Service Account Credentials API 사용 설정
Enable the Service Account Credentials API.
필요한 역할 얻기
객체를 다운로드하고 업로드하기 위한 서명된 URL을 만드는 데 필요한 권한을 얻으려면 관리자에게 다음 역할을 부여해 달라고 요청하세요.
스토리지 객체 사용자(
roles/storage.objectUser
): 이 역할은 객체를 다운로드, 업로드, 덮어쓰는 데 필요합니다. 이 역할은 URL에 서명하는 데 키가 사용될 서비스 계정에 부여해야 합니다.객체만 다운로드하려면 관리자에게 서비스 계정에 스토리지 객체 사용자 역할 대신 스토리지 객체 뷰어(
roles/storage.objectViewer
) 역할을 부여해 달라고 요청하세요.덮어쓰지 않고 객체만 업로드하려면 관리자에게 서비스 계정에 스토리지 객체 사용자 역할 대신 스토리지 객체 생성자(
roles/storage.objectCreator
) 역할을 부여해 달라고 요청하세요.
서비스 계정 토큰 생성자(
roles/iam.serviceAccountTokenCreator
): 비공개 키 파일이 로컬에서 제공되지 않는 경우 서비스 계정의 단기 사용자 인증 정보를 생성하는 데 이 역할이 필요합니다. 이 역할은 서명된 URL을 만들 주 구성원에게 부여되어야 합니다.인증에 사용자 인증 정보를 사용하는 경우 사용자 ID에 이 역할이 있어야 하며 URL에 서명하는 데 사용되는 서비스 계정을 명의 도용하도록 명령어를 수정해야 합니다.
인증을 위해 컴퓨팅 인스턴스에 연결된 서비스 계정을 사용하는 경우 서비스 계정에 자체를 명의 도용하기 위한 이 역할이 있어야 하며 URL에 서명하는 데 사용된 서비스 계정을 명의 도용하도록 명령어를 수정해야 합니다.
인증에 비공개 키 파일을 사용하는 경우 이 역할은 필요하지 않습니다.
이러한 사전 정의된 역할에는 서비스 계정이 서명된 URL을 사용하여 객체를 다운로드하고 업로드하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필요한 권한 섹션을 펼치세요.
필수 권한
storage.objects.get
storage.objects.create
(객체만 다운로드하려는 경우에는 필요하지 않음)storage.objects.delete
(업로드할 때 객체를 덮어쓸 필요가 없는 경우 필요하지 않음)iam.serviceAccounts.signBlob
(서명을 만들기 위해 로컬에서 서비스 계정 키를 제공할 계획인 경우 필요하지 않음(signBlob
메서드 호출 필요 없음))
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 얻을 수도 있습니다. 어떤 역할이 어떤 권한과 연결되어 있는지 확인하려면 Cloud Storage에 대한 IAM 역할을 참조하세요.
프로젝트에 대한 역할을 부여하는 방법은 프로젝트 액세스 관리를 참조하세요.
객체를 다운로드할 서명된 URL 만들기
버킷에서 객체를 가져올 수 있는 서명된 URL을 만들려면 다음 단계를 완료하세요.
명령줄
서비스 계정에 사용할 새 비공개 키를 생성하거나 기존의 비공개 키를 사용합니다. 키는 JSON 형식이어야 합니다.
비공개 키 및 서비스 계정에 대한 자세한 내용은 서비스 계정을 참조하세요.
gcloud storage sign-url
명령어를 사용합니다. 예를 들어 다음 명령어는 사용자가 10분 동안 객체를 다운로드할 수 있도록 하는 서명된 URL을 만듭니다.gcloud storage sign-url gs://BUCKET_NAME/OBJECT_NAME --private-key-file=KEY_FILE --duration=10m
각 항목의 의미는 다음과 같습니다.
BUCKET_NAME
은 객체가 위치한 버킷의 이름입니다. 예를 들면example-bucket
입니다.OBJECT_NAME
은 다운로드할 객체의 이름입니다. 예를 들면cat.jpeg
입니다.KEY_FILE
은 서비스 계정의 비공개 키가 포함된 파일의 경로입니다. 예를 들면Desktop/private-key.json
입니다.
성공하면 다음과 같은 응답이 표시됩니다.
--- expiration: '2023-07-14 23:19:35' http_verb: GET resource: gs://example-bucket/cat.jpeg signed_url: https://storage.googleapis.com/example-bucket/cat.jpeg? x-goog-signature=11ae9c61ca84dd0bec319f7d52a38029e5873caa2eeced0568 ef96076258cfc1a925a9683cc907d210036b61af9e06a13bf4a15b15fab3916669b e2f4c9f66ea6be822bec5858af519a6da705415b5768721197be213103fa09b8a18 8a143be77a24351517ff208a2c62cfebb78040daf1f953907080bd98f9462739d11 1355b1d9bcf54705b862f37392c031fde0d52add1a4d3bbb98a22e8b7023f6a1623 2e0a2dd56e524d410624d28663e557fafaf4ba0a04290a1066f894713857b429258 d14f056066c7622baf114c124e645688e19b4df3c4a7925f580693c93fa9c1dae7f dff0edff7259c72f3f0eadc5a9f9f556c83c9c8dc02ee3af8d20ab634bad&x-goog -algorithm=GOOG4-RSA-SHA256&x-goog-credential=example%40example-pro ject.iam.gserviceaccount.com%2F20230714%2Fus%2Fstorage%2Fgoog4_requ est&x-goog-date=20230714T221935Z&x-goog-expires=600&x-goog-signedhe aders=host
누구든지 이 URL을 사용하여 지정된 시간(이 경우 10분) 동안 연결된 리소스(이 경우
cat.jpeg
)에 액세스할 수 있습니다.
클라이언트 라이브러리
C++
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
C#
자세한 내용은 Cloud Storage C# API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Go
자세한 내용은 Cloud Storage Go API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Java
자세한 내용은 Cloud Storage Java API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Node.js
자세한 내용은 Cloud Storage Node.js API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
PHP
자세한 내용은 Cloud Storage PHP API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Python
자세한 내용은 Cloud Storage Python API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Ruby
자세한 내용은 Cloud Storage Ruby API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
객체를 업로드할 서명된 URL 만들기
객체를 버킷에 업로드할 수 있는 서명된 URL을 만들려면 다음 단계를 완료하세요.
명령줄
서비스 계정에 사용할 새 비공개 키를 생성하거나 기존의 비공개 키를 사용합니다. 키는 JSON 또는 PKCS12 형식일 수 있습니다.
비공개 키 및 서비스 계정에 대한 자세한 내용은 서비스 계정을 참조하세요.
gcloud storage sign-url
명령어를 사용합니다. 예를 들어 다음 명령어는 사용자가 1시간 동안 파일을 업로드할 수 있는 서명된 URL을 만듭니다.gcloud storage sign-url gs://BUCKET_NAME/OBJECT_NAME --private-key-file=KEY_FILE --http-verb=PUT --duration=1h --headers=Content-Type=CONTENT_TYPE
BUCKET_NAME
은 객체가 업로드되는 버킷의 이름입니다. 예를 들면example-bucket
입니다.OBJECT_NAME
은 업로드된 객체에 할당할 이름입니다. 예를 들면cat.png
입니다.KEY_FILE
은 서비스 계정의 비공개 키가 포함된 파일의 경로입니다. 예를 들면Desktop/private-key.json
입니다.CONTENT_TYPE
은 업로드된 객체의 콘텐츠 유형입니다. 예를 들면image/png
입니다.
성공하면 다음과 같은 응답이 표시됩니다.
--- expiration: '2023-07-14 23:35:47' http_verb: PUT resource: gs://example-bucket/cat.png signed_url: https://storage.googleapis.com/example-bucket/cat.png? x-goog-signature=2f670a686102963e0574f3c1a3b4d29ee4aa406c1528d42d2 30195d17fef73834b254314de7d7990afd48538a84b66f20010e7ecd90a900490e 6119b7e56a912f71c8d64285c40e86f31b8fec51cf8c7a61ded81de3cedac9c1ca b92474b7371740fdac20b2d8d092b15396f79443bbde954a4174ed11aef6c2cf5f a4d72a84ff60fd6003ed0a505b0e40b6207ddbaec2a15778f715c3ec7537a1b14f b6661b2abaa5736f1670a412ca7e2555c830591f0595c01ff95af7f2206abe2e27 41948c16d4bd4c7cbb25f41277ece59236c06e00ca6c63ae2eb3efc22c216bb24c e1b8b3801d07fd3a7ed3f2df3db6e59c6fc3cc76a002335dd936efd0237cf584e3 6&x-goog-algorithm=GOOG4-RSA-SHA256&x-goog-credential=example%40ex ample-project.iam.gserviceaccount.com%2F20230714%2Fus%2Fstorage%2F goog4_request&x-goog-date=20230714T223547Z&x-goog-expires=3600&x-g oog-signedheaders=Content-Type%3Bhost
누구든지 이 URL을 사용하여 리소스(이 경우
cat.png
)를 지정된 시간(이 경우 1시간) 동안 지정된 Cloud Storage 버킷에 업로드할 수 있습니다.
클라이언트 라이브러리
C++
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
C#
자세한 내용은 Cloud Storage C# API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Go
자세한 내용은 Cloud Storage Go API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Java
자세한 내용은 Cloud Storage Java API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Node.js
자세한 내용은 Cloud Storage Node.js API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
PHP
자세한 내용은 Cloud Storage PHP API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Python
자세한 내용은 Cloud Storage Python API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Ruby
자세한 내용은 Cloud Storage Ruby API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.