8장. 보안
스토리지 관리자는 스토리지 클러스터 환경을 보호하는 것이 중요합니다. Red Hat Ceph Storage는 Ceph Object Gateway 액세스 지점을 보호하는 암호화 및 키 관리를 제공합니다.
사전 요구 사항
- 정상 실행 Red Hat Ceph Storage 클러스터.
- Ceph Object Gateway 소프트웨어 설치.
8.1. SSE(Server-Side Encryption) 링크 복사링크가 클립보드에 복사되었습니다!
Ceph Object Gateway는 S3 API(애플리케이션 프로그래밍 인터페이스)에 대해 업로드된 오브젝트의 서버 측 암호화를 지원합니다. 서버 측 암호화는 S3 클라이언트가 암호화되지 않은 형식으로 HTTP를 통해 데이터를 전송하고 Ceph Object Gateway는 해당 데이터를 Red Hat Ceph Storage 클러스터에 암호화된 형식으로 저장합니다.
- Red Hat은 SLO(Dynamic Large Object) 또는 DLO(Dynamic Large Object)의 S3 개체 암호화를 지원하지 않습니다.
-
현재 SSE(Server-Side Encryption) 모드 중 어느 것도
CopyObject
에 대한 지원을 구현하지 않았습니다. 현재 개발 중입니다 [BZ#2149450].
서버 측 암호화는 알려진 문제로 인해 다중 사이트 복제와 호환되지 않습니다. 이 문제는 향후 릴리스에서 해결될 예정입니다. 자세한 내용은 알려진 문제-Mult-site Object Gateway 를 참조하십시오.
암호화를 사용하려면 클라이언트 요청이 SSL 연결을 통해 요청을 보내야 합니다. Ceph Object Gateway에서 SSL을 사용하지 않는 한 Red Hat은 클라이언트의 S3 암호화를 지원하지 않습니다. 그러나 테스트를 위해 관리자는 ceph config set client.rgw
명령을 사용하여 rgw_crypt_require_ssl
구성 설정을 false
로 설정한 다음 Ceph Object Gateway 인스턴스를 다시 시작하여 테스트 중에 SSL을 비활성화할 수 있습니다.
프로덕션 환경에서는 SSL을 통해 암호화된 요청을 보내지 못할 수 있습니다. 이러한 경우 서버 측 암호화와 함께 HTTP를 사용하여 요청을 보냅니다.
서버 측 암호화를 사용하여 HTTP를 구성하는 방법에 대한 자세한 내용은 아래의 추가 리소스 섹션을 참조하십시오.
암호화 키 관리를 위한 세 가지 옵션이 있습니다.
고객 제공 키
S3 클라이언트는 고객 제공 키를 사용할 때 암호화된 데이터를 읽거나 쓰기 위한 각 요청과 함께 암호화 키를 전달합니다. 이러한 키를 관리하는 것은 고객의 책임이 있습니다. 고객은 각 오브젝트를 암호화하는 데 사용되는 Ceph Object Gateway를 기억할 수 있어야 합니다.
Ceph Object Gateway는 Amazon SSE-C 사양에 따라 S3 API에서 고객 제공 키 동작을 구현합니다.
고객이 키 관리를 처리하고 S3 클라이언트가 키를 Ceph Object Gateway에 전달하므로 Ceph Object Gateway는 이 암호화 모드를 지원하기 위해 특별한 구성이 필요하지 않습니다.
키 관리 서비스
키 관리 서비스를 사용하는 경우 보안 키 관리 서비스는 키를 저장하고 Ceph Object Gateway는 필요에 따라 데이터를 암호화하거나 암호 해독하는 요청을 처리하기 위해 해당 키를 검색합니다.
Ceph Object Gateway는 Amazon SSE-KMS 사양에 따라 S3 API에서 키 관리 서비스 동작을 구현합니다.
현재 테스트된 유일한 키 관리 구현은 HashiCorp Vault 및 OpenStack Barbican입니다. 그러나 OpenStack Barbican은 기술 프리뷰이며 프로덕션 시스템에서 사용할 수 없습니다.
SSE-S3
SSE-S3을 사용하는 경우 키는 vault에 저장되지만 Ceph에서 자동으로 생성 및 삭제하고 데이터를 암호화하거나 암호 해독하기 위한 요청을 처리하는 데 필요한 대로 검색됩니다.
Ceph Object Gateway는 Amazon SSE-S3 사양에 따라 S3 API에서 SSE-S3 동작을 구현합니다.
8.1.1. 기존 S3 버킷의 기본 암호화 설정 링크 복사링크가 클립보드에 복사되었습니다!
스토리지 관리자는 기존 Amazon S3 버킷의 기본 암호화를 설정하여 모든 오브젝트가 버킷에 저장될 때 암호화되도록 할 수 있습니다. Bucket Encryption API를 사용하여 Amazon S3 관리 키(SSE-S3) 또는 Amazon KMS 고객 마스터 키(SSE-KMS)를 사용하여 서버 측 암호화를 지원할 수 있습니다.
SSE-KMS는 Red Hat Ceph Storage 5.x가 아닌 Red Hat Ceph Storage 4.x에서만 지원됩니다.
PutBucketEncryption
API를 사용하여 기존 Amazon S3 버킷의 기본 암호화를 관리할 수 있습니다. 이 버킷에 업로드된 모든 파일에는 버킷 수준에서 기본 암호화를 정의하여 이 암호화가 있습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- Ceph Object Gateway 설치
- S3 버킷이 생성되었습니다.
- 사용자 액세스 권한이 있는 S3 사용자
- AWS CLI 패키지가 설치된 Ceph Object Gateway 클라이언트에 액세스할 수 있습니다.
프로세스
암호화 구성에 대한 JSON 파일을 생성합니다.
예제
vi bucket-encryption.json
[user@client ~]$ vi bucket-encryption.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 암호화 구성 규칙을 파일에 추가합니다.
예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 버킷의 기본 암호화를 설정합니다.
구문
aws --endpoint-url=pass:q[_RADOSGW_ENDPOINT_URL_]:pass:q[_PORT_] s3api put-bucket-encryption --bucket pass:q[_BUCKET_NAME_] --server-side-encryption-configuration pass:q[_file://PATH_TO_BUCKET_ENCRYPTION_CONFIGURATION_FILE/BUCKET_ENCRYPTION_CONFIGURATION_FILE.json_]
aws --endpoint-url=pass:q[_RADOSGW_ENDPOINT_URL_]:pass:q[_PORT_] s3api put-bucket-encryption --bucket pass:q[_BUCKET_NAME_] --server-side-encryption-configuration pass:q[_file://PATH_TO_BUCKET_ENCRYPTION_CONFIGURATION_FILE/BUCKET_ENCRYPTION_CONFIGURATION_FILE.json_]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
aws --endpoint-url=http://host01:80 s3api put-bucket-encryption --bucket testbucket --server-side-encryption-configuration file://bucket-encryption.json
[user@client ~]$ aws --endpoint-url=http://host01:80 s3api put-bucket-encryption --bucket testbucket --server-side-encryption-configuration file://bucket-encryption.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
버킷의 버킷 암호화 구성을 검색합니다.
구문
aws --endpoint-url=pass:q[_RADOSGW_ENDPOINT_URL_]:pass:q[_PORT_] s3api get-bucket-encryption --bucket BUCKET_NAME
aws --endpoint-url=pass:q[_RADOSGW_ENDPOINT_URL_]:pass:q[_PORT_] s3api get-bucket-encryption --bucket BUCKET_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
버킷에 기본 암호화 구성이 없는 경우 get-bucket-encryption
명령은 ServerSideEncryptionConfigurationNotFoundError
를 반환합니다.
8.1.2. 기본 버킷 암호화 삭제 링크 복사링크가 클립보드에 복사되었습니다!
s3api delete-bucket-encryption
명령을 사용하여 지정된 버킷의 기본 버킷 암호화를 삭제할 수 있습니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- Ceph Object Gateway 설치
- S3 버킷이 생성되었습니다.
- 사용자 액세스 권한이 있는 S3 사용자
- AWS CLI 패키지가 설치된 Ceph Object Gateway 클라이언트에 액세스할 수 있습니다.
프로세스
버킷 암호화 구성을 삭제합니다.
구문
aws --endpoint-url=RADOSGW_ENDPOINT_URL:PORT s3api delete-bucket-encryption --bucket BUCKET_NAME
aws --endpoint-url=RADOSGW_ENDPOINT_URL:PORT s3api delete-bucket-encryption --bucket BUCKET_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
aws --endpoint-url=http://host01:80 s3api delete-bucket-encryption --bucket testbucket
[user@client ~]$ aws --endpoint-url=http://host01:80 s3api delete-bucket-encryption --bucket testbucket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
버킷의 버킷 암호화 구성을 검색합니다.
구문
aws --endpoint-url=RADOSGW_ENDPOINT_URL:PORT s3api get-bucket-encryption --bucket BUCKET_NAME
aws --endpoint-url=RADOSGW_ENDPOINT_URL:PORT s3api get-bucket-encryption --bucket BUCKET_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
aws --endpoint=http://host01:80 s3api get-bucket-encryption --bucket testbucket
[user@client ~]$ aws --endpoint=http://host01:80 s3api get-bucket-encryption --bucket testbucket An error occurred (ServerSideEncryptionConfigurationNotFoundError) when calling the GetBucketEncryption operation: The server side encryption configuration was not found
Copy to Clipboard Copied! Toggle word wrap Toggle overflow