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
沒有留言:
張貼留言