Thêm Encryption vào Web App

Thêm Encryption vào Web App

Mặc định S3 bucket được bảo vệ với Bucket PoliciesIAM 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.

Cụ thể khi file được upload lên S3, Web App gọi tới boto3 python S3 API sử dụng AWS KMS và CMK để mã hóa file kiểu SSE (Server Side Encryption) API mà Web App sử dụng sẽ có dạng như sau

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.

  1. Chạy lệnh dưới đây để download phiên bản Web App đã sửa đổi
sudo wget https://raw.githubusercontent.com/aws-samples/aws-kms-workshop/master/WebAppEncSSE.py

Add Encryption 2. Để liệt kê toàn bộ CMK mà chúng ta đã import từ trước, chạy lệnh aws kms list-aliases

  • Lưu thông tin TargetKeyID của CMK có alias là ImportedCMK Add Encryption
  1. Chạy lệnh dưới đây để thực hiện start Web App version mới
sudo python WebAppEncSSE.py 80
  • Nhập TargetKeyID chúng ta đã lưu ở bước 2 Add Encryption
  1. Truy cập Web App thông qua địa chỉ Public IP http://54.221.111.102 Add Encryption
  2. Upload lại file text SampleFile-KMS.txt chúng ta đã tạo trong phần 5.1. Sau khi upload xong, file sẽ được mã hóa.
  • Click Browse, Chọn file SampleFile-KMS.txt
  • Click upload Add Encryption
  1. Kiểm tra file SampleFile-KMS.txt đã được mã hóa chưa
  1. Để xem thông tin chi tiết file SampleFile-KMS.txt Click SampleFile-KMS.txt Add Encryption
  2. Tại trang thông tin của file SampleFile-KMS.txt
  • Kéo màn hình xuống dưới phần Server-side encryption settings, Chúng ta thấy được file được mã hóa sử dụng AWS KMS với KMS Key ID hiển thị dạng ARN của khóa CMK. Add Encryption

    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.