網頁

2022/4/13

AWS CLI 使用KMS key加解密文字

AWS CLI使用KMS key進行加密及解密。


範例環境

  • macOS
  • AWS CLI 2(aws-cli/2.2.44)


事前要求

設定AWS CLI的存取密鑰

參考「AWS KMS 建立Customer managed key」建立一個自訂的key。本範例的KMS Key ID為78e7c975-c3d0-4e44-b6c1-5e5a6429e4fc


加密 Encrypt

目錄中有一份文字檔mypassword內容如下:

mypassword

12345

以AWS CLI 2使用KMS key加密檔案內容命令輸入aws kms encrypt --key-id <key_id> --plaintext fileb://<file_path> --output text --query CiphertextBlob

使用上面的AWS KMS key對mypassword的內容進行加密則輸入aws kms encrypt --key-id 78e7c975-c3d0-4e44-b6c1-5e5a6429e4fc --plaintext fileb://mypassword --output text --query CiphertextBlob。則原本mypassword的內容12345將被KMS key加密為Base64編碼後的加密內容。

$ aws kms encrypt --key-id 78e7c975-c3d0-4e44-b6c1-5e5a6429e4fc --plaintext fileb://mypassword --output text --query CiphertextBlob
AQICAHhOP3+Bzcino8Wl0qpVrQoUbnHoQFT86dnRvdDNg3V6DAEowDU1GTmRS9cEjzHKIWPdAAAAZDBiBgkqhkiG9w0BBwagVTBTAgEAME4GCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMFoIy+GGRPuUrGfIeAgEQgCGhb/JELPc44/fmS803IWZqDFAyNfvWB1eHK2HnG+YmRUk=

執行結果產生的一長串亂碼即為12345被KMS key加密後的並以Base64編碼的文字。


或直接輸入aws kms encrypt --key-id <key_id> --plaintext fileb://<(echo "<content>") --output text --query CiphertextBlob<content>為要被加密的文字。

$ aws kms encrypt --key-id 78e7c975-c3d0-4e44-b6c1-5e5a6429e4fc --plaintext fileb://<(echo "12345") --output text --query CiphertextBlob
AQICAHhOP3+Bzcino8Wl0qpVrQoUbnHoQFT86dnRvdDNg3V6DAEowDU1GTmRS9cEjzHKIWPdAAAAZDBiBgkqhkiG9w0BBwagVTBTAgEAME4GCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMFoIy+GGRPuUrGfIeAgEQgCGhb/JELPc44/fmS803IWZqDFAyNfvWB1eHK2HnG+YmRUk=


解密 Decrypt

目錄中有一份上面KMS key加密的文字檔mysecret內容如下:

mysecret

AQICAHhOP3+Bzcino8Wl0qpVrQoUbnHoQFT86dnRvdDNg3V6DAEowDU1GTmRS9cEjzHKIWPdAAAAZDBiBgkqhkiG9w0BBwagVTBTAgEAME4GCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMFoIy+GGRPuUrGfIeAgEQgCGhb/JELPc44/fmS803IWZqDFAyNfvWB1eHK2HnG+YmRUk=

以AWS CLI 2使用KMS key解密檔案內容命令輸入aws kms decrypt --key-id <key_id> --ciphertext-blob fileb://<(base64 -d <file_path>) --output text --query Plaintext | base64 --decode

使用上面的AWS KMS key對mysecret的內容進行解密則輸入aws kms decrypt --key-id 55e1b6e0-3576-450a-873d-608aa73b8283 --ciphertext-blob fileb://<(base64 -d mysecret) --output text --query Plaintext | base64 --decode。則mysecret的密文將被KMS key解密並再以Base64編碼後的內容。

aws kms decrypt --key-id 78e7c975-c3d0-4e44-b6c1-5e5a6429e4fc --ciphertext-blob fileb://<(base64 -d mysecret) --output text --query Plaintext | base64 --decode
12345

或直接輸入aws kms decrypt --key-id <key_id> --ciphertext-blob fileb://<(echo "<ciphertext>" | base64 -d) --output text --query Plaintext | base64 --decode<ciphertext>為base64編碼的密文。

$ aws kms decrypt --key-id 55e1b6e0-3576-450a-873d-608aa73b8283 --ciphertext-blob fileb://<(echo "AQICAHhOP3+Bzcino8Wl0qpVrQoUbnHoQFT86dnRvdDNg3V6DAEowDU1GTmRS9cEjzHKIWPdAAAAZDBiBgkqhkiG9w0BBwagVTBTAgEAME4GCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMFoIy+GGRPuUrGfIeAgEQgCGhb/JELPc44/fmS803IWZqDFAyNfvWB1eHK2HnG+YmRUk=" | base64 -d) --output text --query Plaintext | base64 --decode
12345


沒有留言:

張貼留言