개요
COS(Cloud Object Storage)는 데이터가 디스크에 기록되기 전에 객체 레벨에서 데이터를 암호화하고 데이터에 액세스할 때 자동으로 데이터를 해독합니다. 암호화 및 복호화는 서버에서 완료됩니다. 서버 측 암호화는 정적 데이터를 효과적으로 보호할 수 있습니다.
주의:
해당 작업은 아카이브 유형의 객체에 대한 암호화 설정을 지원하지 않습니다. 암호화를 원할 경우 해당 객체를 먼저 복구 작업을 하십시오. 복구 완료 후 스토리지 유형을 표준 또는 저빈도로 변경하면 암호화 설정이 가능합니다. 암호화된 객체에 접근하는 것은 암호화되지 않은 객체에 접근하는 것과 경험상 차이가 없지만, 사용자가 해당 객체에 대한 접근 권한을 가지고 있다는 전제 하에 가능합니다.
서버 측 암호화는 객체 데이터만 암호화하며 객체 메타데이터는 암호화하지 않고, 객체 크기에도 변화를 주지 않습니다.
버킷의 객체를 나열할 때 목록은 객체가 암호화되었는지 여부와 관계없이 모든 객체를 반환합니다.
적용 시나리오
기밀 데이터 스토리지 시나리오: 서버 암호화로 저장할 기밀 데이터를 암호화하여 사용자의 개인 정보를 보호할 수 있습니다. 암호화 데이터는 사용자가 액세스할 때 자동으로 해독됩니다.
기밀 데이터 전송 시나리오: COS는 기밀 데이터를 전송할 때 HTTPS로 SSL 인증서를 배포하여 암호화하는 기능을 제공합니다. 전송 링크 계층에 계층 암호화를 구현함으로써 데이터가 전송 과정에서 도난되거나 조작될 위험을 차단합니다.
암호화 방식
COS는 SSE-COS, SSE-KMS, SSE-C와 같은 다양한 서버 암호화 방식을 지원합니다. 사용자에게 적합한 암호화 방식을 채택하여 COS에 저장하는 데이터를 암호화할 수 있습니다.
SSE-COS 암호화
SSE-COS 암호화는 COS 호스팅 키의 서버측 암호화입니다.Tencent Cloud COS에서 마스터 키 및 관리 데이터를 호스팅합니다.사용자는 COS를 통해 데이터를 직접 관리하고 암호화합니다.SSE-COS는 고유한 키를 사용하여 각 객체를 암호화하고 주기적으로 반복되는 마스터 키를 통해 키 자체를 암호화하는 다중 요소 강력한 암호화를 사용합니다.
SSE-COS 모드는 AES256과 SM4 두 가지 암호화 알고리즘을 지원하며 기본적으로 AES256 알고리즘을 사용합니다. 객체를 업로드할 때 서버 측 암호화 헤더 x-cos-server-side-encryption를 통해 암호화 알고리즘을 지정할 수 있습니다. 주의:
사전 서명된 URL로 업로드한 객체는 SSE-COS 암호화를 사용할 수 없습니다. COS 콘솔 또는 HTTP 요청 헤더를 통해서만 서버 측 암호화를 지정할 수 있습니다.
SSE-KMS 암호화
SSE-KMS 암호화는 KMS가 키를 호스팅하여 관리하는 서버 암호화 방식입니다. KMS는 Tencent Cloud가 선보인 보안 관리형 서비스로서 3rd party가 인증하는 하드웨어 보안 모듈(HSM, Hardware Security Module)로 보안키를 생성하여 보호합니다. KMS로 보안키를 간편하게 생성하고 관리할 수 있어 다양한 애플리케이션과 작업에 필요한 보안키 관리가 편리할 뿐만 아니라 모니터링과 컴플라이언스 니즈를 충족할 수 있습니다.
주의:
SSE-KMS는 객체 데이터에 한해 암호화하며, 객체의 메타데이터는 암호화 대상이 아닙니다.
현재 SSE-KMS 암호화는 베이징, 상하이, 광저우, 상하이 금융, 홍콩(중국), 방콕 리전에서만 지원합니다.
SSE-KMS 방식으로 암호화할 경우, KMS에서 부과하는 별도 요금이 발생합니다. 자세한 내용은 KMS 과금 개요를 참고하십시오. SSE-KMS 방식으로 암호화한 객체는 익명 사용자가 아닌 유효한 서명으로 액세스해야 합니다.
주의사항
SSE-KMS 암호화에 COS 콘솔을 사용한 적이 없고 SSE-KMS 암호화에 API만 사용한 경우 먼저 CAM 역할을 생성해야 합니다. 자세한 생성 순서는 다음과 같습니다. 1. CAM 콘솔에 로그인하고 역할 페이지로 이동합니다. 2. 역할 생성을 클릭하고 Tencent Cloud 제품 서비스를 역할 엔터티로 선택합니다.
3. 역할을 지원하는 서비스로 COS를 선택하고 다음 단계를 클릭합니다.
4. QcloudKMSAccessForCOSRole 역할 정책을 검색하여 선택한 후 다음 단계를 클릭합니다.
5. 역할 태그 키와 값을 설정하고 다음 단계를 클릭합니다.
6. 지정된 역할 이름(COS_QCSRole)을 입력합니다.
주의:
Cloud Access Management(CAM) 역할 목록에서 기존 역할 이름 "COS_QCSRole"은 계속 사용할 수 있으며 적용 상태에는 영향이 없습니다.
7. 완료를 클릭하여 프로세스를 완료합니다.
SSE-C 암호화
SSE-C 암호화는 사용자 정의 키를 사용하는 서버 측 암호화입니다. 암호화 키는 사용자가 직접 제공하며, 사용자가 객체를 업로드할 때 COS는 사용자가 제공한 암호화 키를 사용하여 데이터를 암호화합니다. SSE-C 모드는 AES256과 SM4 두 가지 암호화 알고리즘을 지원하며 기본적으로 AES256 알고리즘을 사용합니다. 객체를 업로드할 때 서버 측 암호화 헤더 x-cos-server-side-encryption-customer-algorithm를 통해 암호화 알고리즘을 지정할 수 있습니다. 주의:
COS는 사용자가 제공한 암호화 키를 저장하지 않고, 암호화 키에 무작위 데이터를 추가한 HMAC 값을 저장하며 이 값은 사용자가 객체에 접근할 때 요청을 검증하는 데 사용됩니다. COS는 무작위 데이터의 HMAC 값을 사용해 암호화 키를 유추하거나 암호화된 객체 내용을 복호화할 수 없습니다. 따라서 사용자가 암호화 키를 분실하면 해당 객체를 다시 가져올 수 없습니다.
사용 방법
COS 콘솔 사용하기
주의:
SSE-C 암호화는 콘솔 작업을 지원하지 않으며 API를 통해서만 실행할 수 있습니다.
SSE-COS, SSE-KMS 암호화의 SM4 알고리즘은 현재 콘솔과 SDK 호출을 지원하지 않으며 API를 통해서만 실행할 수 있습니다.
2. 왼쪽 네비게이션 바에서 버킷 목록을 클릭하여 버킷 목록 페이지로 이동합니다.
3. 객체가 있는 버킷을 찾아 해당 버킷 이름을 클릭하여 버킷 관리 페이지로 이동합니다.
4. 왼쪽 네비게이션 바에서 파일 목록을 선택하여 파일 목록 페이지로 이동합니다.
5. 암호화를 설정하려는 객체를 찾아 해당 오른쪽 작업 표시줄에서 상세 정보를 클릭합니다.
6. "서버 측 암호화"에서 해당 암호화 방식을 선택하고 저장을 클릭하면 됩니다.
7. 현재 다음과 같은 두 가지 암호화 방식을 지원합니다.
SSE-KMS: Tencent Cloud KMS 호스팅 키를 사용한 서버 측 암호화 방식으로, 기본 키 또는 자체 생성 키를 선택할 수 있습니다. 키 정보에 대해서는 KMS 키 생성을 참고하십시오. SSE-KMS에 대한 자세한 내용은 서버 측 암호화 개요: SSE-KMS를 참고하십시오. 설명:
SSE-COS로 암호화된 객체는 익명 접근이 가능하지만, SSE-KMS로 암호화된 객체는 유효한 서명이 있어야 접근할 수 있으며 익명 사용자는 접근할 수 없습니다.
여러 객체에 대해 일괄 암호화 설정을 하려면 여러 객체를 선택하고 상단의 추가 작업 > 암호화 방식 수정을 클릭하여 설정할 수 있습니다.
REST API 사용하기
SSE-COS, SSE-KMS 암호화의 경우 다음 API 인터페이스를 지원합니다.
설명:
POST가 아닌 요청으로 객체를 업로드하는 경우 x-cos-server-side-encryption-* 헤더를 제공하여 서버 측 암호화를 적용할 수 있습니다. POST 요청을 사용하는 경우 폼 필드에 x-cos-server-side-encryption-* 필드를 제공해야 합니다. 자세한 내용은 POST Object를 참고하십시오. SSE-C 암호화의 경우 다음 API 인터페이스를 지원합니다.
설명:
POST가 아닌 요청으로 객체를 업로드하는 경우 x-cos-server-side-encryption-* 헤더를 제공하여 서버 측 암호화를 적용할 수 있습니다. POST 요청을 사용하는 경우 폼 필드에 x-cos-server-side-encryption-* 필드를 제공해야 합니다. 자세한 내용은 POST Object를 참고하십시오. SDK의 객체 태그 관리 방법을 호출할 수 있으며, 자세한 내용은 다음 각 언어 SDK 문서를 참조하십시오.