Khởi tạo CMK - External Key Material

Tạo CMK với Key Material dạng External

  1. Chạy lệnh
aws kms create-key --origin=EXTERNAL

Lệnh aws create-key đi kèm option –origin=EXTERNAL, chỉ ra rằng CMK sắp được tạo có Key Material không thuộc AWS KMS.

Create CMK - External Key Material

  • Sau lệnh tạo CMK thành công, có một số giá trị cần phải lưu ý:
    • Trường Enabled có giá trị False, thay vì True.
    • Trường Key state có giá trị PendingImport, thay vì Enabled.

Download Public key và thực hiện import token từ AWS KMS

  1. Chạy lệnh
aws kms get-parameters-for-import --key-id <key ID of your External CMK>  --wrapping-algorithm RSAES_OAEP_SHA_1 --wrapping-key-spec RSA_2048
  • Kết quả ta thu được 1 file JSON chứa Pubic keyImport token đều ở định dạng mã base64. Create CMK - External Key Material
  1. Đưa giá trị của PublicKey vào file pkey.b64.
  • Sao chép giá trị của PublicKey.
  • Chạy lệnh vi pkey.b64. Create CMK - External Key Material
  • Nhấn phím i để chuyển sang chế độ Insert. Dán giá trị PublicKey chúng ta đã sao chép.
  • Nhấn Esc.Nhập :wq.Nhấn Enter để lưu file và thoát ra. Create CMK - External Key Material
  1. Làm tương tự PublicKey để đưa giá trị của ImportToken vào file token.b64.
  2. Chạy lệnh ls -lrt để kiểm tra. Chúng ta sẽ thấy 2 file pkey.b64token.b64. Create CMK - External Key Material
  3. Sử dụng OpenSSL để giải mã các file định dạng b64 vừa lưu ở trên thành các file tương ứng định dạng nhị phân pkey.bintoken.bin
  • Chạy lệnh openssl enc -d -base64 -A -in pkey.b64 -out pkey.bin.
  • Chạy lệnh openssl enc -d -base64 -A -in token.b64 -out token.bin.
  • Chạy lệnh ls -lrt để kiểm tra. Chúng ta sẽ thấy có thêm 2 file pkey.bintoken.bin Create CMK - External Key Material

Tạo và Mã hóa Import Material

Thực tế, Key Material phải được tạo ra từ một hệ thống Quản lý Khóa chuyên biệt hoặc hệ thống HSM cho Doanh nghiệp. Tuy nhiên trong phạm vi bài lab, để nhanh chóng và đơn giản ta sẽ thực hiện tạo Key material bằng OpenSSL chạy trên chính Instance của chúng ta.

  1. Chạy bên dưới sẽ tạo ra mã khóa đối xứng 256bit lưu vào file genkey.bin. Đây chính là Key material sử dụng cho việc tạo CMK
openssl rand -out genkey.bin 32

Create CMK - External Key Material 2. Thực hiện encrypt Key material. Key material sau khi encrypt sẽ được lưu vào file WrappedKeyMaterial.bin.

  • Chạy lệnh openssl rsautl -encrypt -in genkey.bin -oaep -inkey pkey.bin -keyform DER -pubin -out WrappedKeyMaterial.bin.
  • Chạy lệnh ls -lrt để kiểm tra. Chúng ta sẽ thấy có thêm file WrappedKeyMaterial.bin. Create CMK - External Key Material

Import Key material

  1. Chạy lệnh
aws kms import-key-material --key-id <key ID of your External CMK> --encrypted-key-material fileb://WrappedKeyMaterial.bin --import-token fileb://token.bin --expiration-model KEY_MATERIAL_EXPIRES --valid-to 2022-06-02T12:00:00-08:00

Để import ta dùng lệnh import-key-material, yêu cầu phải có import token mà đã được tạo ở trên (token.b64) với tham số fileb://, thể hiện file được chọn phải ở dạng binary.
Ngoài ra expiration date cũng được nhắc tới trong câu lệnh, thể hiện tham số –expiration-model. Ta hoàn toàn có thể cấu hình để Key Material không bị expired bằng cách gán cho tham số này giá trị KEY_MATERIAL_DOES_NOT_EXPIRE

Chúng ta cần cấu hình ngày hết hạn cho tham số –expiration-model để có thể giám sát trong CloudWatch(phần 6)

Create CMK - External Key Material 2. Sau khi import thành công, thực hiện tạo Alias cho CMK mới đc import External Key Material

  • Chạy lệnh
aws kms create-alias --alias-name alias/ImportedCMK --target-key-id <key ID of your External CMK>

Create CMK - External Key Material 3. Để liệt kê toàn bộ CMK thuộc Account mà ta quản lý trên AWS CLI, chạy lệnh aws kms list-aliases

File JSON sẽ hiển thị các khóa chúng ta đã tạo và alias của nó, cùng với các CMK được tạo theo mặc định cho một số dịch vụ.

Create CMK - External Key Material