이 페이지에서는 버킷에서 기본 키 설정하는 방법 및 개별 객체에 키를 추가하는 방법을 포함하여 Cloud Storage에 Cloud Key Management Service 암호화 키를 사용하는 방법을 설명합니다. Cloud KMS 암호화 키는 고객 관리 암호화 키입니다. 이러한 키는 Cloud KMS를 통해 생성 및 관리되며 HSM 클러스터에 또는 외부적으로 소프트웨어 키로 저장됩니다.
시작하기 전에
Cloud Storage에서 이 기능을 사용하려면 다음 요건을 충족해야 합니다.
암호화 키를 저장할 프로젝트에 Cloud KMS API를 사용 설정합니다.
암호화 키를 저장할 프로젝트에 대한 충분한 권한을 확보합니다.
키를 저장할 프로젝트의 소유자라면 필요한 권한을 가지고 있을 가능성이 높습니다.
새 암호화 키링과 키를 만들려면
cloudkms.keyRings.create
및cloudkms.cryptoKeys.create
권한이 있어야 합니다.새 키링, 기존 키링 또는 키 중에서 무엇을 사용하든 암호화에 사용할 키에 대해
cloudkms.cryptoKeys.setIamPolicy
권한이 있어야 합니다.이 권한이 있으면 Cloud Storage 서비스 에이전트에 Cloud KMS 키에 대한 액세스 권한을 부여할 수 있습니다.
위의 권한은 Cloud KMS 관리자 역할에 포함되어 있습니다.
이 역할과 다른 Cloud KMS 역할을 얻는 방법은 Cloud KMS에서 IAM 사용을 참조하세요.
Cloud KMS 키링이 있고 키링 안에 키가 최소한 1개 이상 있어야 합니다.
키링은 암호화하려는 데이터와 같은 위치에 있어야 하지만 다른 프로젝트에 있을 수는 있습니다. 사용 가능한 Cloud KMS 위치는 Cloud KMS 위치를 참조하세요.
Cloud Storage 버킷에서 객체 관련 작업을 수행할 수 있는 충분한 권한을 확보합니다.
버킷이 포함된 프로젝트의 소유자라면 필요한 권한을 가지고 있을 가능성이 높습니다.
IAM을 사용하는 경우에는 객체를 버킷에 쓸 수 있는
storage.objects.create
권한과 버킷에서 객체를 읽을 수 있는storage.objects.get
권한이 있어야 합니다. 이러한 권한이 있는 스토리지 객체 관리자와 같은 역할을 가져오는 방법은 IAM 권한 사용을 참조하세요.ACL을 사용하는 경우에는 객체를 버킷에 쓸 수 있는 버킷 범위
WRITER
권한과 버킷에서 객체를 읽을 수 있는 객체 범위READER
권한이 있어야 합니다. 자세한 방법은 ACL 설정을 참조하세요.
-
Cloud Storage 버킷을 포함하고 있는 프로젝트와 연관된 서비스 에이전트의 이메일 주소를 확인합니다. 이 단계를 수행하면 현재 서비스 에이전트가 없는 경우 자동으로 생성됩니다.
서비스 에이전트에 Cloud KMS 키 할당
고객 관리 암호화 키를 사용하려면 버킷과 연결된 Cloud Storage 서비스 에이전트에 Cloud KMS 키를 사용하여 암호화 및 복호화할 수 있는 권한을 부여합니다.
콘솔
- Google Cloud 콘솔에서 Cloud Key Management Service 키 브라우저를 엽니다.
Cloud KMS 키 브라우저 열기 사용할 키가 포함된 키링의 이름을 클릭합니다.
원하는 키의 체크박스를 선택합니다.
오른쪽 창의 권한 탭이 활성화됩니다.
주 구성원 추가 대화상자에서 액세스 권한을 부여할 Cloud Storage 서비스 에이전트의 이메일 주소를 지정합니다.
역할 선택 드롭다운에서 Cloud KMS CryptoKey 암호화/복호화를 선택합니다.
Add(추가)를 클릭합니다.
Google Cloud 콘솔에서 실패한 Cloud Storage 작업에 대한 자세한 오류 정보를 가져오는 방법은 문제 해결을 참조하세요.
명령줄
--authorize-cmek
플래그와 함께 gcloud storage service-agent
명령어를 사용하여 버킷과 연결된 Cloud Storage 서비스 에이전트에 Cloud KMS 키를 사용하여 암호화 및 복호화할 수 있는 권한을 부여합니다.
gcloud storage service-agent --project=PROJECT_STORING_OBJECTS --authorize-cmek=KEY_RESOURCE
각 항목의 의미는 다음과 같습니다.
PROJECT_STORING_OBJECTS
는 암호화 또는 복호화할 객체가 포함된 프로젝트의 ID 또는 번호입니다. 예를 들면my-pet-project
입니다.KEY_RESOURCE
는 Cloud KMS 키 리소스입니다.
클라이언트 라이브러리
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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST API
JSON API
- OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다. 자세한 내용은 API 인증을 참조하세요.
다음 정보를 포함하는 JSON 파일을 만듭니다.
{ "policy": { "bindings": { "role": "roles/cloudkms.cryptoKeyEncrypterDecrypter", "members": "serviceAccount:SERVICE_AGENT_EMAIL_ADDRESS" }, } }
여기서
SERVICE_AGENT_EMAIL_ADDRESS
는 서비스 에이전트에 연결된 이메일 주소입니다. 예:service-7550275089395@gs-project-accounts.iam.gserviceaccount.com
cURL
을 사용하여POST setIamPolicy
요청에서 Cloud KMS API를 호출합니다.curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://cloudkms.googleapis.com/v1/KEY_RESOURCE:setIamPolicy"
각 항목의 의미는 다음과 같습니다.
JSON_FILE_NAME
은 2단계에서 만든 JSON 파일의 경로입니다.OAUTH2_TOKEN
은 1단계에서 생성한 액세스 토큰입니다.KEY_RESOURCE
는 Cloud KMS 키 리소스입니다.
XML API
XML API는 Cloud KMS를 서비스 에이전트에 할당하는 데 사용할 수 없습니다. gcloud CLI와 같은 다른 Cloud Storage 도구 중 하나를 대신 사용하세요.
기본 암호화 키 사용
버킷의 기본 키 설정
객체를 버킷에 작성할 때 기본적으로 사용되는 Cloud KMS 키를 추가하거나 변경하려면 다음 안내를 따르세요.
콘솔
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
버킷 목록에서 원하는 버킷 이름을 클릭합니다.
버킷 세부정보 페이지에서 구성 탭을 클릭합니다.
암호화 유형 항목과 연결된 연필 아이콘을 클릭합니다.
버킷의 기본 Cloud KMS 키를 설정하거나 삭제합니다.
현재 버킷에서 Cloud KMS 키를 사용하고 있지 않으면 고객 관리 키 라디오 버튼을 선택한 후 연결된 드롭다운 메뉴에서 사용 가능한 키 중 하나를 선택합니다.
현재 버킷에서 Cloud KMS 키를 사용하는 경우 드롭다운 메뉴에서 Cloud KMS 키를 변경하거나 Google 관리 키 라디오 버튼을 선택하여 Cloud KMS 키를 삭제합니다.
저장을 클릭합니다.
Google Cloud 콘솔에서 실패한 Cloud Storage 작업에 대한 자세한 오류 정보를 가져오는 방법은 문제 해결을 참조하세요.
명령줄
gcloud storage buckets update
명령어를 적절한 플래그와 함께 사용합니다.
gcloud storage buckets update gs://BUCKET_NAME FLAG
각 항목의 의미는 다음과 같습니다.
BUCKET_NAME
은 관련 버킷의 이름입니다. 예를 들면my-bucket
입니다.FLAG
는 버킷의 기본 키에 사용하려는 설정입니다. 다음 형식 중 하나를 사용하세요.--default-encryption-key=
및 Cloud KMS 키 리소스(기본 키를 추가하거나 변경하려는 경우).--clear-default-encryption-key
(버킷에서 기본 키를 삭제하려는 경우).
성공하면 다음과 같은 응답이 표시됩니다.
Updating gs://my-bucket/... Completed 1
클라이언트 라이브러리
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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
다음 샘플에서는 버킷에 기본 고객 관리 암호화 키를 설정합니다.
다음 샘플에서는 기본 고객 관리 암호화 키를 버킷에서 삭제합니다.
REST API
JSON API
- OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다. 자세한 내용은 API 인증을 참조하세요.
다음 정보를 포함하는 JSON 파일을 만듭니다.
{ "encryption": { "defaultKmsKeyName": "KEY_RESOURCE" } }
여기서
KEY_RESOURCE
는 Cloud KMS 키 리소스입니다.버킷에서 기본 Cloud KMS 키를 삭제하려면 JSON 파일에 다음을 사용합니다.
{ "encryption": { "defaultKmsKeyName": null } }
cURL
을 사용하여PATCH
버킷 요청으로 JSON API를 호출합니다.curl -X PATCH --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=encryption"
각 항목의 의미는 다음과 같습니다.
JSON_FILE_NAME
은 2단계에서 만든 JSON 파일의 경로입니다.OAUTH2_TOKEN
은 1단계에서 생성한 액세스 토큰입니다.BUCKET_NAME
은 관련 버킷의 이름입니다. 예를 들면my-bucket
입니다.
XML API
- OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다. 자세한 내용은 API 인증을 참조하세요.
다음을 정보를 포함하는 XML 파일을 만듭니다.
<EncryptionConfiguration> <DefaultKmsKeyName>KEY_RESOURCE</DefaultKmsKeyName> </EncryptionConfiguration>
여기서
KEY_RESOURCE
는 Cloud KMS 키 리소스입니다.버킷에서 기본 Cloud KMS 키를 삭제하려면 XML 파일에서 다음을 사용합니다.
<EncryptionConfiguration></EncryptionConfiguration>
cURL
을 사용하여PUT
버킷 요청과encryptionConfig
쿼리 문자열 매개변수로 XML API를 호출합니다.curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/BUCKET_NAME?encryptionConfig"
각 항목의 의미는 다음과 같습니다.
XML_FILE_NAME
은 2단계에서 만든 XML 파일의 경로입니다.OAUTH2_TOKEN
은 1단계에서 생성한 액세스 토큰입니다.BUCKET_NAME
은 관련 버킷의 이름입니다. 예를 들면my-bucket
입니다.
버킷의 기본 키 보기
버킷의 기본값으로 현재 설정된 Cloud KMS 키를 보려면 다음과 같이 하세요.
콘솔
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
버킷 목록에서 원하는 버킷 이름을 클릭합니다.
버킷 세부정보 페이지에서 구성 탭을 클릭합니다.
버킷의 현재 기본 키가 암호화 키 필드에 표시됩니다.
Google Cloud 콘솔에서 실패한 Cloud Storage 작업에 대한 자세한 오류 정보를 가져오는 방법은 문제 해결을 참조하세요.
명령줄
gcloud storage buckets describe
명령어를 --format
플래그와 함께 사용합니다.
gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_kms_key)"
여기서 BUCKET_NAME
은 키를 보려는 버킷의 이름입니다. 예를 들면 my-bucket
입니다.
성공하면 다음과 같은 응답이 표시됩니다.
default_kms_key: KEY_RESOURCE
클라이언트 라이브러리
C++
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
C#
자세한 내용은 Cloud Storage C# API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
기본 KMS 키를 보려면 버킷의 메타데이터를 표시하는 안내를 따라 응답에서 기본 KMS 키 필드를 찾습니다.Go
자세한 내용은 Cloud Storage Go API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
기본 KMS 키를 보려면 버킷의 메타데이터를 표시하는 안내를 따라 응답에서 기본 KMS 키 필드를 찾습니다.Java
자세한 내용은 Cloud Storage Java API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
기본 KMS 키를 보려면 버킷의 메타데이터를 표시하는 안내를 따라 응답에서 기본 KMS 키 필드를 찾습니다.Node.js
자세한 내용은 Cloud Storage Node.js API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
기본 KMS 키를 보려면 버킷의 메타데이터를 표시하는 안내를 따라 응답에서 기본 KMS 키 필드를 찾습니다.PHP
자세한 내용은 Cloud Storage PHP API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
기본 KMS 키를 보려면 버킷의 메타데이터를 표시하는 안내를 따라 응답에서 기본 KMS 키 필드를 찾습니다.Python
자세한 내용은 Cloud Storage Python API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
기본 KMS 키를 보려면 버킷의 메타데이터를 표시하는 안내를 따라 응답에서 기본 KMS 키 필드를 찾습니다.Ruby
자세한 내용은 Cloud Storage Ruby API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
기본 KMS 키를 보려면 버킷의 메타데이터를 표시하는 안내를 따라 응답에서 기본 KMS 키 필드를 찾습니다.REST API
JSON API
- OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다. 자세한 내용은 API 인증을 참조하세요.
cURL
을 사용하여 원하는fields
가 포함된GET
버킷 요청으로 JSON API를 호출합니다.curl -X GET -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=encryption"
각 항목의 의미는 다음과 같습니다.
OAUTH2_TOKEN
은 1단계에서 생성한 액세스 토큰입니다.BUCKET_NAME
은 키를 보려는 버킷의 이름입니다. 예를 들면my-bucket
입니다.
응답은 다음 예시와 같습니다.
{ "encryption" : { "defaultKmsKeyName": "KEY_RESOURCE" }, }
XML API
- OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다. 자세한 내용은 API 인증을 참조하세요.
cURL
을 사용하여encryption
쿼리 매개변수가 포함된GET
버킷 요청으로 XML API를 호출합니다.curl -X GET -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/BUCKET_NAME?encryptionConfig"
각 항목의 의미는 다음과 같습니다.
OAUTH2_TOKEN
은 1단계에서 생성한 액세스 토큰입니다.BUCKET_NAME
은 키를 보려는 버킷의 이름입니다. 예를 들면my-bucket
입니다.
응답은 다음 예시와 같습니다.
<EncryptionConfiguration> <DefaultKmsKeyName>KEY_RESOURCE</DefaultKmsKeyName> </EncryptionConfiguration>
Cloud KMS 키로 객체 암호화
Cloud KMS 키로 개별 객체를 암호화할 수 있습니다. 버킷에 설정된 기본 키와 다른 키를 사용하려는 경우 또는 버킷에 설정된 기본 키가 없을 경우에 유용합니다. 객체를 암호화하는 데 사용되는 키 리소스의 이름은 객체의 메타데이터에 저장됩니다.
콘솔
Google Cloud 콘솔은 객체별로 Cloud KMS 키를 지정하는 데 사용할 수 없습니다. 대신 gcloud CLI 또는 클라이언트 라이브러리를 사용합니다.
명령줄
gcloud storage cp
명령어를 --encryption-key
플래그와 함께 사용합니다.
gcloud storage cp SOURCE_DATA gs://BUCKET_NAME/OBJECT_NAME --encryption-key=KEY_RESOURCE
각 항목의 의미는 다음과 같습니다.
SOURCE_DATA
는 암호화하는 데이터의 소스 위치입니다.cp
명령어에서 지원하는 모든 소스 위치일 수 있습니다. 예를 들면gs://my-bucket/pets/old-dog.png
입니다.BUCKET_NAME
은 이 복사 명령어의 대상 버킷 이름입니다. 예를 들면my-bucket
입니다.OBJECT_NAME
은 암호화된 최종 객체의 이름입니다. 예를 들면pets/new-dog.png
입니다.KEY_RESOURCE
는 객체를 암호화하는 데 사용할 Cloud KMS 키 리소스입니다.
클라이언트 라이브러리
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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST API
JSON API
- OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다. 자세한 내용은 API 인증을 참조하세요.
객체 데이터를 요청 본문에 추가합니다.
cURL
을 사용하여POST
객체 요청으로 JSON API를 호출합니다.curl -X POST --data-binary @OBJECT \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o?uploadType=media&name=OBJECT_NAME&kmsKeyName=KEY_RESOURCE"
각 항목의 의미는 다음과 같습니다.
OBJECT
는 업로드할 객체의 경로입니다. 예를 들면Desktop/dog.png
입니다.OAUTH2_TOKEN
은 1단계에서 생성한 액세스 토큰입니다.OBJECT_CONTENT_TYPE
은 객체의 콘텐츠 유형입니다. 예를 들면image/png
입니다.BUCKET_NAME
은 객체를 업로드할 버킷의 이름입니다. 예를 들면my-bucket
입니다.OBJECT_NAME
은 업로드할 객체의 URL 인코딩 이름입니다. 예를 들어pets/dog.png
는pets%2Fdog.png
로 URL 인코딩됩니다.KEY_RESOURCE
는 Cloud KMS 키 리소스입니다.
XML API
- OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다. 자세한 내용은 API 인증을 참조하세요.
객체 데이터를 요청 본문에 추가합니다.
cURL
을 사용하여PUT
객체 요청으로 XML API를 호출합니다.curl -X PUT --data-binary @OBJECT \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ -H "x-goog-encryption-kms-key-name: KEY_RESOURCE" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
각 항목의 의미는 다음과 같습니다.
OBJECT
는 업로드할 객체의 경로입니다. 예를 들면Desktop/dog.png
입니다.OAUTH2_TOKEN
은 1단계에서 생성한 액세스 토큰입니다.OBJECT_CONTENT_TYPE
은 객체의 콘텐츠 유형입니다. 예를 들면image/png
입니다.BUCKET_NAME
은 객체를 업로드할 버킷의 이름입니다. 예를 들면my-bucket
입니다.OBJECT_NAME
은 업로드할 객체의 URL 인코딩 이름입니다. 예를 들어pets/dog.png
는pets%2Fdog.png
로 URL 인코딩됩니다.KEY_RESOURCE
는 Cloud KMS 키 리소스입니다.
고객 제공 키에서 Cloud KMS 키로 순환
고객 제공 암호화 키로 객체를 암호화한 경우 객체를 재작성하여 Cloud KMS 키로 순환해서 사용할 수 있습니다.
콘솔
Google Cloud 콘솔은 객체별로 암호화 키를 변경하는데 사용할 수 없습니다. 대신 gcloud CLI 또는 클라이언트 라이브러리를 사용합니다.
명령줄
gcloud storage objects update
명령어를 적절한 플래그와 함께 사용합니다.
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --encryption-key=KMS_KEY --decryption-keys=CSEK_KEY
각 항목의 의미는 다음과 같습니다.
BUCKET_NAME
은 키를 순환할 객체가 포함된 버킷의 이름입니다. 예를 들면my-bucket
입니다.OBJECT_NAME
은 키를 순환할 객체의 이름입니다. 예를 들면pets/dog.png
입니다.KMS_KEY
는 객체를 암호화하는 데 사용할 Cloud KMS 키 리소스입니다.CSEK_KEY
는 객체에 사용되는 현재 고객 제공 암호화 키입니다.
클라이언트 라이브러리
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에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST API
JSON API
- OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다. 자세한 내용은 API 인증을 참조하세요.
cURL
을 사용하여POST
객체 요청으로 JSON API를 호출합니다.curl -X POST \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Length: 0" \ -H "x-goog-copy-source-encryption-algorithm: AES256" \ -H "x-goog-copy-source-encryption-key: OLD_ENCRYPTION_KEY" \ -H "x-goog-copy-source-encryption-key-sha256: HASH_OF_OLD_KEY" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/rewriteTo/b/BUCKET_NAME/o/OBJECT_NAME?kmsKeyName=KEY_RESOURCE"
각 항목의 의미는 다음과 같습니다.
OAUTH2_TOKEN
은 1단계에서 생성한 액세스 토큰입니다.OLD_ENCRYPTION_KEY
는 객체를 암호화하는 데 사용되는 현재 AES-256 키입니다.HASH_OF_OLD_KEY
는 AES-256 키의 현재 SHA-256 해시입니다.BUCKET_NAME
은 관련 객체를 포함하는 버킷의 이름입니다. 예를 들면my-bucket
입니다.OBJECT_NAME
은 키를 순환할 객체의 URL 인코딩 이름입니다. 예를 들어pets/dog.png
는pets%2Fdog.png
로 URL 인코딩됩니다.KEY_RESOURCE
는 Cloud KMS 키 리소스입니다.
XML API
XML API는 객체 재작성을 통해 고객 제공 암호화 키에서 Cloud KMS 키로의 순환을 지원하지 않습니다. XML API를 사용하여 이러한 순환을 수행하려면 다음을 수행해야 합니다.
객체를 암호화하는 데 사용된 키 확인
객체를 암호화하는 데 사용된 Cloud KMS 키를 찾으려면 다음을 수행하세요.
콘솔
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
버킷 목록에서 원하는 객체가 포함된 버킷의 이름을 클릭합니다.
객체 탭이 선택된 상태로 버킷 세부정보 페이지가 열립니다.
객체(폴더에 있을 수 있음)로 이동합니다.
암호화 열에서 원하는 객체 항목 위에 마우스를 가져갑니다.
키 이름과 버전이 다음 형식으로 나타납니다.
LOCATION/KEY_RING_NAME/KEY_NAME/KEY_VERSION
명령줄
gcloud storage objects describe
명령어를 --format
플래그와 함께 사용합니다.
gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(kms_key)"
각 항목의 의미는 다음과 같습니다.
BUCKET_NAME
은 암호화된 객체가 포함된 버킷의 이름입니다. 예를 들면my-bucket
입니다.OBJECT_NAME
은 암호화된 객체의 이름입니다. 예를 들면pets/dog.png
입니다.
성공하면 다음과 같은 응답이 표시됩니다.
kms_key: projects/my-pet-project/locations/LOCATION_NAME/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME/cryptoKeyVersions/VERSION_NUMBER
클라이언트 라이브러리
C++
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
C#
자세한 내용은 Cloud Storage C# API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
객체와 연결된 KMS 키를 보려면 객체의 메타데이터 표시 안내를 따라 응답에서 KMS 키 이름 필드를 찾습니다.Go
자세한 내용은 Cloud Storage Go API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
객체와 연결된 KMS 키를 보려면 객체의 메타데이터 표시 안내를 따라 응답에서 KMS 키 이름 필드를 찾습니다.Java
자세한 내용은 Cloud Storage Java API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
객체와 연결된 KMS 키를 보려면 객체의 메타데이터 표시 안내를 따라 응답에서 KMS 키 이름 필드를 찾습니다.Node.js
자세한 내용은 Cloud Storage Node.js API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
객체와 연결된 KMS 키를 보려면 객체의 메타데이터 표시 안내를 따라 응답에서 KMS 키 이름 필드를 찾습니다.PHP
자세한 내용은 Cloud Storage PHP API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
객체와 연결된 KMS 키를 보려면 객체의 메타데이터 표시 안내를 따라 응답에서 KMS 키 이름 필드를 찾습니다.Python
자세한 내용은 Cloud Storage Python API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Ruby
자세한 내용은 Cloud Storage Ruby API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
객체와 연결된 KMS 키를 보려면 객체의 메타데이터 표시 안내를 따라 응답에서 KMS 키 이름 필드를 찾습니다.REST API
JSON API
- OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다. 자세한 내용은 API 인증을 참조하세요.
cURL
을 사용하여GET
객체 요청으로 JSON API를 호출합니다.curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?fields=kmsKeyName"
각 항목의 의미는 다음과 같습니다.
OAUTH2_TOKEN
은 1단계에서 생성한 액세스 토큰입니다.BUCKET_NAME
은 암호화된 객체가 포함된 버킷의 이름입니다. 예를 들면my-bucket
입니다.OBJECT_NAME
은 암호화된 객체의 URL 인코딩 이름입니다. 예를 들어pets/dog.png
는pets%2Fdog.png
로 URL 인코딩됩니다.
XML API
- OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다. 자세한 내용은 API 인증을 참조하세요.
cURL
을 사용하여GET
객체 요청으로 XML API를 호출합니다.curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?encryption"
각 항목의 의미는 다음과 같습니다.
OAUTH2_TOKEN
은 1단계에서 생성한 액세스 토큰입니다.BUCKET_NAME
은 암호화된 객체가 포함된 버킷의 이름입니다. 예를 들면my-bucket
입니다.OBJECT_NAME
은 암호화된 객체의 URL 인코딩 이름입니다. 예를 들어pets/dog.png
는pets%2Fdog.png
로 URL 인코딩됩니다.
객체 복호화
Cloud KMS 키로 암호화된 객체의 복호화는 자동으로 수행됩니다. 단, 관련 서비스 에이전트가 키에 액세스할 수 있어야 합니다. 자세한 내용은 고객 관리 암호화 키를 포함하는 서비스 에이전트를 참조하세요.
다음 단계
- Cloud Storage의 고객 관리 암호화 키 자세히 알아보기
- Cloud Storage에서 사용할 수 있는 기타 암호화 옵션에 대해 알아보기
- Cloud KMS 키 순환
- Cloud KMS와 호환되는 다른 제품 살펴보기
- Cloud KMS 키 사용을 더 세밀하게 제어하기 위해
restrictNonCmekServices
및restrictCmekCryptoKeyProjects
조직 정책 제약조건 알아보기