How to use MinIO's Server-side Encryption with the AWS CLI
AWS CLI에서 MinIO의 서버측 암호화를 사용하는 방법
MinIO supports S3 server-side-encryption with customer provided keys (SSE-C).
MinIO는 사용자 정의 제공 키 (SSE-C)를 사용하여 S3 서버측 암호화를 지원합니다.
The following sections describe the use of server-side encryption with the AWS Command Line Interface (aws-cli):
다음 섹션에서는 AWS 명령줄 인터페이스 (aws-cli)를 통한 서버측 암호화 사용에 대해 설명합니다.
Prerequisites
전제조건
Use SSE-C with aws-cli
aws-cli와 함께 SSE-C 사용
Security-Related Notes
보안 관련 참고 사항
1. Prerequisites
1. 전제조건
A client must specify three HTTP headers for SSE-C requests:
클라이언트는 SSE-C 요청에 대해 3개의 HTTP 헤더를 지정해야 합니다.
X-Amz-Server-Side-Encryption-Customer-Algorithm: The algorithm identifier. It must be set to AES256.
X-Amz-Server-Side-Encryption-Customer-Algorithm: 알고리즘 식별자입니다. AES256으로 설정해야 합니다.
X-Amz-Server-Side-Encryption-Customer-Key: The secret encryption key. It must be a 256-bit Base64-encoded string.
X-Amz-Server-Side-Encryption-Customer-Key: 비밀 암호화 키입니다. 256 비트 Base64 인코딩된 문자열이어야 합니다.
X-Amz-Server-Side-Encryption-Customer-Key-MD5: The encryption key MD5 checksum. It must be set to the MD5-sum of the encryption key.
X-Amz-Server-Side-Encryption-Customer-Key-MD5: 암호화 키 MD5 체크섬입니다. 암호화 키의 MD5-sum으로 설정되어야 합니다.
Note: The MD5 checksum is the MD5 sum of the raw binary key, not of the base64-encoded key.
메모: MD5 체크섬은 base64로 인코딩된 키가 아닌 원시 이진 키의 MD5 합계입니다.
Install the MinIO Server with TLS as described here.
여기에 설명된 대로 TLS를 사용하여 MinIO 서버를 설치합니다.
Note: Tools like aws-cli or mc will display an error if a self-signed TLS certificate is used when trying to upload objects to the server.
메모: aws-cli 또는 mc와 같은 도구는 객체를 서버에 업로드하려고 할 때 자체 서명된 TLS 인증서가 사용되는 경우 오류를 표시합니다.
See Let's Encrypt to get a CA-signed TLS certificate. Self-signed certificates should only be used for development, testing or internal usage.
CA 서명 TLS 인증서를 얻으려면 Let's Encrypt(암호화하자)를 참조하세요. 자체 서명된 인증서는 개발, 테스트 또는 내부 용도로만 사용해야 합니다.
2. Use SSE-C with aws-cli
2. aws-cli와 함께 SSE-C 사용
This section describes how to use server-side encryption with customer-provided encryption (SSE-C) keys via the aws-cli.
이 섹션에서는 aws-cli를 통해 사용자 정의 제공 암호화 (SSE-C) 키로 서버 측 암호화를 사용하는 방법을 설명합니다.
2.1 Install the aws-cli
2.1 aws-cli 설치
You can install the AWS Command Line Interface using the procedure described here.
여기에 설명된 절차를 사용하여 AWS Command Line Interface (AWS 명령 줄 인터페이스)를 설치할 수 있습니다.
2.2 Create a bucket named my-bucket
2.2 my-bucket이라는 버킷 생성
aws --no-verify-ssl --endpoint-url https://localhost:9000 s3api create-bucket --bucket my-bucket
2.3 Upload an Object using SSE-C
2.3 SSE-C를 사용하여 객체 업로드
The following example shows how to upload an object named my-secret-diary where the content is the file ~/my-diary.txt. Note that you should use your own encryption key.
다음 예에서는 콘텐츠가 ~/my-diary.txt 파일인 my-secret-diary라는 객체를 업로드하는 방법을 보여줍니다. 자체 암호화 키를 사용해야 합니다.
aws s3api put-object \
--no-verify-ssl \
--endpoint-url https://localhost:9000 \
--bucket my-bucket --key my-secret-diary \
--sse-customer-algorithm AES256 \
--sse-customer-key MzJieXRlc2xvbmdzZWNyZXRrZXltdXN0cHJvdmlkZWQ= \
--sse-customer-key-md5 7PpPLAK26ONlVUGOWlusfg== \
--body ~/my-diary.txt
In this example, a local MinIO server is running on https://localhost:9000 with a self-signed certificate. TLS certificate verification is skipped using: --no-verify-ssl.
이 예에서는 로컬 MinIO 서버가 자체 서명된 인증서를 사용하여 https://localhost:9000에서 실행되고 있습니다. --no-verify-ssl을 사용하여 TLS 인증서 확인을 건너뜁니다.
If a MinIO server uses a CA-signed certificate, then --no-verify-ssl should not be included, otherwise aws-cli would accept any certificate.
MinIO 서버가 CA 서명 인증서를 사용하는 경우 --no-verify-ssl을 포함하면 안 됩니다. 그렇지 않으면 aws-cli가 모든 인증서를 수락합니다.
2.4 Display Object Information
2.4 객체 정보 표시
Specify the correct SSE-C key of an encrypted object to display its metadata:
메타데이터를 표시하려면 암호화된 객체의 올바른 SSE-C 키를 지정하세요.
aws s3api head-object \
--no-verify-ssl \
--endpoint-url https://localhost:9000 \
--bucket my-bucket \
--key my-secret-diary \
--sse-customer-algorithm AES256 \
--sse-customer-key MzJieXRlc2xvbmdzZWNyZXRrZXltdXN0cHJvdmlkZWQ= \
--sse-customer-key-md5 7PpPLAK26ONlVUGOWlusfg==
2.5 Download an Object
2.5 객체 다운로드
The following examples show how a local copy of a file can be removed and then restored by downloading it from the server:
다음 예에서는 파일의 로컬 복사본을 제거한 다음 서버에서 다운로드하여 복원하는 방법을 보여줍니다.
Delete your local copy of my-diary.txt:
my-diary.txt의 로컬 복사본을 삭제합니다:
rm ~/my-diary.txt
Restore the file by downloading it from the server:
서버에서 파일을 다운로드하여 복원합니다:
aws s3api get-object \
--no-verify-ssl \
--endpoint-url https://localhost:9000 \
--bucket my-bucket \
--key my-secret-diary \
--sse-customer-algorithm AES256 \
--sse-customer-key MzJieXRlc2xvbmdzZWNyZXRrZXltdXN0cHJvdmlkZWQ= \
--sse-customer-key-md5 7PpPLAK26ONlVUGOWlusfg== \
~/my-diary.txt
3. Security-Related Notes
3. 보안 관련 참고 사항
The MinIO server will reject any SSE-C request made over an insecure (non-TLS) connection per the S3 specification. This means that SSE-C requires TLS / HTTPS, and an SSE-C request contains the encryption key.
MinIO 서버는 S3 사양에 따라 안전하지 않은 (비 TLS) 연결을 통해 이루어진 모든 SSE-C 요청을 거부합니다. 이는 SSE-C에 TLS/HTTPS가 필요하고 SSE-C 요청에 암호화 키가 포함되어 있음을 의미합니다.
If an SSE-C request is made over a non-TLS connection, the SSE-C encryption key must be treated as compromised.
SSE-C 요청이 TLS가 아닌 연결을 통해 이루어진 경우 SSE-C 암호화 키는 손상된 것으로 처리되어야 합니다.
Per the S3 specification, the content-md5 returned by an SSE-C PUT operation does not match the MD5 sum of the uploaded object.
S3 사양에 따라 SSE-C PUT 작업에서 반환된 content-md5가 업로드된 객체의 MD5 합계와 일치하지 않습니다.
The MinIO server uses a tamper-proof encryption scheme to encrypt objects and does not save the encryption key, which means you are responsible for managing encryption keys. If you lose the encryption key for an object, you will lose the ability to decrypt that object.
MinIO 서버는 변조 방지 암호화 체계를 사용하여 객체를 암호화하고 암호화 키를 저장하지 않습니다. 즉, 암호화 키 관리 책임은 사용자에게 있습니다. 객체의 암호화 키를 분실하면 해당 객체의 암호를 해독할 수 없게 됩니다.
The MinIO server expects that the SSE-C encryption key is of high entropy. The encryption key is not a password. If you want to use a password make sure that you derive a high-entropy key using a password-based-key-derivation-function (PBKDF) like Argon2, scrypt or PBKDF2.
MinIO 서버는 SSE-C 암호화 키의 엔트로피가 높을 것으로 예상합니다. 암호화 키는 비밀번호가 아닙니다. 비밀번호를 사용하려면 Argon2, scrypt 또는 PBKDF2와 같은 비밀번호 기반 키 파생 기능 (PBKDF)을 사용하여 높은 엔트로피 키를 파생해야 합니다.