Mặc định S3 bucket được bảo vệ với Bucket Policies và IAM Policies. Hiện tại role set cho Instance cho phép nó được read/write dữ liệu vào S3 bucket. Trường hợp ta muốn cấp quyền cho những User khác hoặc Instance khác có thể đọc dữ liệu trên S3 bucket, nhưng vẫn muốn đảm bảo tính bảo mật thì ta sẽ cần mã hóa file upload sử dụng CMK.
s3.put_object(Bucket=BUCKET,
Key='encrypt-key',
Body=b'foobar',
ServerSideEncryption='aws:kms',
# Optional: SSEKMSKeyId
SSEKMSKeyId=keyid)
Chúng ta có thể dễ dàng cập nhật API này vào trong đoạn code chứa Web App, tuy nhiên để đơn giản hơn, ta thực hiện download phiên bản Web App đã sửa đổi với sự bổ sung lời gọi API mới.
sudo wget https://raw.githubusercontent.com/aws-samples/aws-kms-workshop/master/WebAppEncSSE.py
2. Để liệt kê toàn bộ CMK mà chúng ta đã import từ trước, chạy lệnh aws kms list-aliases
sudo python WebAppEncSSE.py 80
Từ Web App, bạn có thể tải xuống và hiển thị tệp mà chúng ta đã tải lên và mã hóa. Khi sử dụng Mã hóa phía máy chủ với KMS, bạn không cần cung cấp bất kỳ thông tin bổ sung nào để lấy đối tượng; S3 có thể biết cách giải mã đối tượng từ metadata.