Hướng Dẫn Sử Dụng SSE-C và SSE-S3 Trên Sun S3

S3 hỗ trợ mã hóa phía server (Server-Side Encryption - SSE) để bảo vệ dữ liệu khi lưu trữ trên hệ thống. Có hai loại mã hóa phổ biến:

  • SSE-S3: S3 tự động tạo và quản lý key để mã hóa dữ liệu.

  • SSE-C: Người dùng tự quản lý khóa mã hóa (customer-provided encryption keys).

Hướng dẫn này sẽ giúp người dùng kết nối, tải lên dữ liệu và kiểm tra mã hóa trên S3 với SSE-S3 và SSE-C.

Pre-condition

  • Tạo Pool

  • Tạo Bucket

  • Tạo Access cho Bucket

Các bước thực hiện:

1. Cài Đặt AWS CLI

sudo apt install awscli  # Ubuntu/Debian
brew install awscli      # macOS

Sau khi cài đặt, kiểm tra phiên bản bằng lệnh:

aws --version

2. Cấu Hình AWS CLI

Người dùng cần thiết lập AWS CLI để sử dụng endpoint s3.sunteco.app.

aws configure set aws_access_key_id <accessKey>
aws configure set aws_secret_access_key <secretKey>

3. Upload File Với SSE-S3

Khi sử dụng SSE-S3, S3 sẽ tự động mã hóa file với key do hệ thống quản lý.

aws s3api put-object --bucket my-bucket --key myfile.txt --body ./myfile.txt  --endpoint-url https://s3.sunteco.app  --server-side-encryption AES256

Kiểm tra thông tin object để xác nhận mã hóa:

aws s3api head-object --bucket my-bucket --key myfile.txt --endpoint-url https://s3.sunteco.app

Người dùng sẽ thấy phần "ServerSideEncryption": "AES256" trong output.

4. Upload File Với SSE-C

Với SSE-C, người dùng cần tự cung cấp một khóa mã hóa 32-byte (dưới dạng base64). người dùng có thể tạo key bằng OpenSSL:

openssl rand -base64 32

Ví dụ, giả sử key tạo ra là:

w9rlGvDW8sJZnOyE7nHqFQzPqMZbNnLeEjX1c8ZXfzE=

Khi upload file với SSE-C, người dùng cần cung cấp khóa này cùng với các header thích hợp:

aws s3api put-object --bucket my-bucket --key mykey --body ./myfile.txt 
--sse-customer-algorithm AES256 --sse-customer-key "w9rlGvDW8sJZnOyE7nHqFQzPqMZbNnLe"  --profile $profile --endpoint-url https://s3.sunteco.app

Kiểm tra xem file có được mã hóa hay không:

aws s3api head-object --bucket my-bucket --key myfile.txt --endpoint-url https://s3.sunteco.app

Nếu sử dụng SSE-C, output sẽ không chứa "ServerSideEncryption" vì S3 không lưu khóa mã hóa của người dùng.

5. Tải Xuống File SSE-C

Khi tải file được mã hóa bằng SSE-C, người dùng cần cung cấp cùng một khóa:

aws s3api put-object --bucket mybucket --key myfile.txt  --body ./myfile.txt 
--sse-customer-algorithm AES256 --sse-customer-key "w9rlGvDW8sJZnOyE7nHqFQzPqMZbNnLe" --endpoint-url https://s3.sunteco.app

Result

Người dùng có thể chọn phương pháp phù hợp với nhu cầu bảo mật cho tài nguyên và dịch vụ.

  • SSE-S3: Dễ sử dụng, không cần quản lý khóa, chỉ cần thêm --sse AES256 khi upload.

  • SSE-C: Cần tự quản lý khóa mã hóa và cung cấp khi upload/download.