μ€λ awscli λ²μ 1.6.6μΌλ‘ μ κ·Έλ μ΄λνμΌλ©° aws kms μνΈ ν΄λ μ΄ μνΈ ν΄λ μ μ€ν¨νκΈ° μμνμ΅λλ€. 1.6.5μμ μλν©λλ€.
$> aws --version
aws-cli/1.6.6 Python/2.7.6 Darwin/13.4.0
$> python -V
Python 2.7.6
$> aws kms encrypt --key-id REDACTED --plaintext foo
{
"KeyId": "arn:aws:kms:us-east-1:REDACTED:key/REDACTED",
"CiphertextBlob": "CiDdiD7jljnCzXlfZUp27Y4LDY+QJa2Zqcw/7+ihfBDo7hKKAQEBAgB43Yg+45Y5ws15X2VKdu2OCw2PkCWtmanMP+/ooXwQ6O4AAABhMF8GCSqGSIb3DQEHBqBSMFACAQAwSwYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAwVt2CzbGDR2nUwszQCARCAHgdJ4aHQ4i7TMzBN6XlKcC73oilECgep+basamtnXQ=="
}
$> aws kms decrypt --ciphertext-blob CiDdiD7jljnCzXlfZUp27Y4LDY+QJa2Zqcw/7+ihfBDo7hKKAQEBAgB43Yg+45Y5ws15X2VKdu2OCw2PkCWtmanMP+/ooXwQ6O4AAABhMF8GCSqGSIb3DQEHBqBSMFACAQAwSwYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAwVt2CzbGDR2nUwszQCARCAHgdJ4aHQ4i7TMzBN6XlKcC73oilECgep+basamtnXQ==
A client error (InvalidCiphertextException) occurred when calling the Decrypt operation: None
$> pip freeze
Babel==1.3
Fabric==1.10.0
Jinja2==2.7.3
MarkupSafe==0.23
Pillow==2.6.1
PyChef==0.2.3
PyYAML==3.11
Pygments==2.0.1
Sphinx==1.2.3
argparse==1.2.1
astroid==1.2.1
awscli==1.6.6
bcdoc==0.12.2
binaryornot==0.3.0
boto==2.34.0
botocore==0.77.0
box.py==1.2.8
cffi==0.8.6
cliff==1.8.0
cmd2==0.6.7
colorama==0.2.5
cookiecutter==0.8.0
coverage==3.7.1
cryptography==0.6.1
decorator==3.4.0
docutils==0.12
dogapi==1.8.5
ecdsa==0.11
futures==2.2.0
httplib2==0.9
httpretty==0.8.3
iso8601==0.1.10
jmespath==0.5.0
jsonpatch==1.9
jsonpointer==1.5
jsonschema==2.4.0
kazoo==2.0
keyring==4.0
logilab-common==0.63.0
lxml==3.4.0
mock==1.0.1
mockito==0.5.2
netaddr==0.7.12
nose==1.3.4
numpy==1.9.1
oath==1.2
oslo.config==1.4.0
oslo.i18n==1.0.0
oslo.serialization==1.0.0
oslo.utils==1.0.0
paramiko==1.15.1
pbr==0.10.0
prettytable==0.7.2
pyOpenSSL==0.14
pyasn1==0.1.7
pycparser==2.10
pycrypto==2.6.1
pylint==1.3.1
pyparsing==2.0.3
python-ceilometerclient==1.0.12
python-cinderclient==1.1.1
python-dateutil==2.3
python-glanceclient==0.14.2
python-heatclient==0.2.12
python-keystoneclient==0.11.2
python-neutronclient==2.3.9
python-novaclient==2.20.0
python-openstackclient==0.4.1
python-swiftclient==2.3.1
python-troveclient==1.0.7
pytz==2014.9
qrcode==5.1
requests==2.4.3
rsa==3.1.2
scipy==0.14.0
simplejson==3.6.5
six==1.8.0
stevedore==1.1.0
urllib3==1.9.1
virtualenv==1.11.6
warlock==1.1.0
wsgiref==0.1.2
λ¬΄μ¨ μΌμ΄ μΌμ΄λκ³ μλμ§μ λν μ½κ°μ λ°°κ²½ μ 보:
1.6.6 μμ μ΄μ μ μΈμ½λ©νλ "blob" μ νμ base64λ‘ μΈμ½λ©νμ§ μλ νκ· λ₯Ό μμ νμ΅λλ€. κ²°κ³Όμ μΌλ‘ μ΄μ "blob" μ νμΌλ‘ νμλ 맀κ°λ³μμ λν΄ μμ μ΄μ§ λ°μ΄νΈλ₯Ό μ§μ ν΄μΌ νλ©° λ΄λΆμ μΌλ‘ μλμΌλ‘ base64 μΈμ½λ©ν©λλ€. μ¦, μ볡 ν€ μνΈνλ₯Ό μν΄μλ λ¨Όμ base64λ₯Ό λμ½λ©ν΄μΌ ν©λλ€.
$ aws kms encrypt --key-id <key-id> --plaintext "abcd" --query CiphertextBlob --output text | base64 -D > /tmp/encrypted-file
$ echo "Decrypted: $(aws kms decrypt --ciphertext-blob fileb:///tmp/encrypted-file --query Plaintext --output text | base64 -D)"
Decrypted: abcd
μ΄ μμμλ λ°μ΄λ리 μ½ν
μΈ κ° ν¬ν¨λ νμΌμ΄κΈ° λλ¬Έμ fileb://
μ λμ¬λ μ¬μ©νκ³ μμ΅λλ€.
λλ κ·Έ νλμ΄ κ·Έλλ‘ μ μ§λμ΄μΌ νλ€κ³ μκ°ν©λλ€. μ΄ μ΄κΈ° λ¬Έμ μ λμμ΄ 1.6.6μμ μμ λ 1.6.5μ νκ·μ μμ‘΄νλ€λ μ μ κ°μν λ κΈ°μ‘΄ λμμ λ³κ²½ν μ μμ΅λλ€. μμ μμ μ€λν«μ AWS CLIμμ μ΄μ§ μ λ ₯/μΆλ ₯μ μ²λ¦¬νλ λ° μμλλ λ°©λ²μ΄λ©° μ΅κ·Ό νκ·λ₯Ό μ μΈνκ³ μ΄ λμμ΄ νμ κ·Έλμλ λ°©μμ λλ€.
μ λ°μ΄νΈν΄μ£Όμ μ κ°μ¬ν©λλ€!
μ¬μ€, μ΄μ λ¬Έμ #1001κ³Ό μ μ¬ν μ€λ₯κ° λ°μν©λλ€.
$> aws kms encrypt --key-id $KMS_KEY_ID --plaintext "abcd" --query CiphertextBlob --output text | base64 -D > /tmp/encrypted-file
$> echo "Decrypted: $(aws kms decrypt --ciphertext-blob fileb:///tmp/encrypted-file --query Plaintext --output text | base64 -D)"
'ascii' codec can't decode byte 0xdd in position 2: ordinal not in range(128)
Decrypted:
@mtougeron μ΄λ€ λ²μ μ AWS CLIλ₯Ό μ¬μ©νκ³ μμ΅λκΉ? λ°©κΈ μ΅μ λ²μ μ AWS CLI(1.6.8)μμ λ€μ μλνμ§λ§ μ΄ λ¬Έμ κ° νμλμ§ μμ΅λλ€.
~ $ aws kms encrypt --key-id $AWS_KEY_ID --plaintext "abcd" --query CiphertextBlob --output text | base64 -D > /tmp/encrypted-file
~ $ hexdump -C /tmp/encrypted-file
00000000 0a 20 e1 68 92 dc 42 40 fe 07 80 ca f6 54 1c 68 |. [email protected]|
00000010 e2 45 80 bb c3 e0 2a 2f 91 50 7c ac c3 02 9b c9 |.E....*/.P|.....|
00000020 a8 b3 12 8b 01 01 01 02 00 78 e1 68 92 dc 42 40 |.........x.h..B@|
00000030 fe 07 80 ca f6 54 1c 68 e2 45 80 bb c3 e0 2a 2f |.....T.h.E....*/|
00000040 91 50 7c ac c3 02 9b c9 a8 b3 00 00 00 62 30 60 |.P|..........b0`|
00000050 06 09 2a 86 48 86 f7 0d 01 07 06 a0 53 30 51 02 |..*.H.......S0Q.|
00000060 01 00 30 4c 06 09 2a 86 48 86 f7 0d 01 07 01 30 |..0L..*.H......0|
00000070 1e 06 09 60 86 48 01 65 03 04 01 2e 30 11 04 0c |...`.H.e....0...|
00000080 41 de f2 2a a6 c5 38 ef 8a 52 54 92 02 01 10 80 |A..*..8..RT.....|
00000090 1f 2e 01 90 65 7a 21 8c dd 05 e4 4d 09 64 85 c4 |....ez!....M.d..|
000000a0 33 e3 3d e9 ce 33 6b e9 00 93 ec e5 54 33 8b 3b |3.=..3k.....T3.;|
000000b0
~ $ echo "Decrypted: $(aws kms decrypt --ciphertext-blob fileb:///tmp/encrypted-file --query Plaintext --output text | base64 -D)"
Decrypted: abcd
~ $ aws --version
aws-cli/1.6.8 Python/2.7.7 Darwin/13.4.0
@jamesls μ΄μ 1.6.8μμ μλν©λλ€. κ°μ¬ ν΄μ
@jamesls κ°μΈμ μΌλ‘ μ΄κ²μ λ§€μ° λμ UIλΌκ³ μκ°ν©λλ€. μνΈνμμ μ»μ κ²κ³Ό λμΌν μνΈλ¬Έμ μνΈ ν΄λ μ μ λ¬ν μ μμ΅λκΉ? κΈ°μ‘΄ κ³ κ°μ κΉ¨κ³ μΆμ§ μμ λ³κ²½ν μ μλ€λ©΄ μ μ΄λ λ λμ μ€λ₯ λ©μμ§λ₯Ό μ 곡νμμμ€.
A client error (InvalidCiphertextException) occurred when calling the Decrypt operation: None
λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ¬΄μμ ν΄μΌ νλμ§ μ격μΌλ‘ μλ €μ£Όμ§λ μμ΅λλ€. μνΈκ° Base64μΌ κ°λ₯μ±μ΄ μμμ κ°μ§νκ³ λ λμ μ€λ₯λ₯Ό μΆλ ₯νκ³ URL λ±μ κ°λ¦¬ν¬ μ μμ΅λλ€.
μλλ©΄ decrypt
μ μΆκ° νλκ·Έλ₯Ό μ λ¬νμ¬ "μ΄κ²μ λ¨Όμ base64μμ λμ½λ©νμμμ€"λΌκ³ λ§νλ κ²μ΄ μ΄λ»μ΅λκΉ?
λμ€μ μ΄ μμ μ μννλ μ¬λλ€μ μν΄ μνΈλ¬Έμ νμΌμ μ μ₯νμ§ μκ³ _μ΄ μμ μ μννλ €λ©΄ λ€μμ μνν μ μμ΅λλ€.
aws kms decrypt --ciphertext-blob fileb://<(echo 'ciphertext' | base64 -d)
μ°Έκ³ : μλ @hauntingEchoμμ μ§μ ν λλ‘ <(cmd)
λ POSIXμ νΈνλμ§ μμΌλ―λ‘ sh
λ₯Ό μ¬μ©νλ κ²½μ° μλνμ§ μμ§λ§ bash
λ° zsh
μ μλν©λλ€.
Re: @thegranddesign μ μ견 , OS Xμμλ μ΅μν base64
λλ¬Έμ 'D'λ₯Ό μ¬μ©ν΄μΌ νμ΅λλ€. μ:
$ echo "Decrypted: $(aws kms decrypt --ciphertext-blob fileb://<(echo $ENCRYPTED_DATA | base64 -D) --query Plaintext --output text | base64 -D)"
Decrypted: Hello world!
( Decrypted
ν μμ κ°ν λ¬Έμκ° νμλλ μ΄μ λ νμ€νμ§ μμ§λ§ ν° λ¬Έμ λ μλλλ€.)
μ΄κ²μ λλ₯Ό μν΄ μΌνμ΅λλ€.
#encrypt the password: TestReadWrite text in the test.txt file
aws kms encrypt --key-id cfc7acf7-4f20-49c3-aa11-8be4cdc3291d --plaintext fileb://test.txt --output text | base64 --decode > out.txt
#decrypt the password: TestReadWrite
aws kms decrypt --ciphertext-blob fileb://out.txt --output text --query Plaintext | base64 --decode
λΉμ·ν λ¬Έμ κ° μμμ§λ§ Nodeκ° λμμ΄λμμ΅λλ€.
'use strict';
const KMS = require('aws-sdk').KMS;
const fs = require('fs');
const kms = new KMS({
apiVersion: '2014-11-01',
// region: 'eu-west-1'
});
function encrypt(params) {
return kms.encrypt(params).promise();
}
const arn = 'arn:aws:kms:xxx';
encrypt({
KeyId: arn,
Plaintext: fs.readFileSync('/path/to/key.pem')
})
.then(data => fs.writeFileSync('/path/to/key.json', JSON.stringify(data)));
@thegranddesign μ μ루μ
μ λν λ λ€λ₯Έ μ°Έκ³ μ¬ν - <(cmd)
λ POSIXμ νΈνλμ§ μλ bashismμ΄λ―λ‘ bashκ° μ΅μ
μ΄ μλ κ²½μ° λ€λ₯Έ μ루μ
μ μ¬μ©ν΄μΌ ν©λλ€.
μ΄κ²μ μ€μ λ‘ μμ λ λκΉμ§ μ¬μ ν μ΄λ € μμ΄μΌ νλ μ μ μ΄ μμ°ν μ λλ‘ λ©μ²ν λ²κ·Έμ λλ€. μΆλ ₯μ νλμ νμμ μ¬μ©νκ³ μ λ ₯μ μμ ν λ€λ₯Έ(νΈνλμ§ μλ) νμμ μ¬μ©νλ λμΉ μμ μ μννλ λꡬλ₯Ό λΉλνλ κ²μ κ±°λν μν° ν¨ν΄μ λλ€. μ체 μΆλ ₯μ μ λ ₯μΌλ‘ μ¬μ©ν μ μλ λμΉ λꡬλ BROKENμ λλ€. λλ κ·Έκ²μ΄ μ€μ λ‘ μλν λλ‘ μλνλμ§ μκ΄νμ§ μμ΅λλ€. κ·Έκ²μ μ¬μ ν ββκΉ¨μ Έ μμ΅λλ€. μ΄ λꡬλ μμ μ΄μ§ μ λ ₯μ μ’ μλ κ²½μ° κΈ°λ³Έμ μΌλ‘ μμ μ΄μ§ μΆλ ₯μ μμ±ν΄μΌ ν©λλ€. κ·Έλ μ§ μμΌλ©΄ λͺ μμ μΈ base64 λμ½λ© λ¨κ³ λλ μ§μ λμ§ μμ νΉμ 맀κ°λ³μλ₯Ό μ§μ νμ§ μκ³ μμ±λ base64 μΈμ½λ© μ λ ₯μ μ¬μ©ν μ μμ΄μΌ ν©λλ€. λν ν΄λΉ μΆλ ₯μ μμ±νκΈ° μν΄ νμν©λλ€(λλ λμΌν μ νν 맀κ°λ³μλ₯Ό μ¬μ©νμ§ μλ κ²½μ° μν° λ§€κ°λ³μ). aws kms encryptλ₯Ό μ¬μ©νμ¬ base64 μΈμ½λ© μ€ μ΄λ νλλ₯Ό μ§μ νμ§ μκ³ base64 μΈμ½λ©λ μνΈν νμ΄λ‘λμ base64 μΈμ½λ©λ μΆλ ₯μ μμ±ν μ μλ€λ κ²μ ν°λ¬΄λμλ μΌμ λλ€. μ²μμ λ΄κ° μ 곡ν μμμΌλ‘ λλ립λλ€. κ·Έλ κ² νλ €λ©΄ μνΈν λ° μνΈ ν΄λ νμ λͺ λ Ή μμ€μμλ λ¬Έμνλμ§ μμ λͺ λ Ήμ€ λ§€κ°λ³μλ₯Ό μ¬μ©ν΄μΌ νκΈ° λλ¬Έμ νμ νκΈ°κ° ν¨μ¬ λ μ΄λ ΅μ΅λλ€. μ¬μ©μλ λκ΅°κ°κ° μνΈν/볡νΈν ν΄λΌμ΄μΈνΈλ‘ μνν μ μλ κ°μ₯ λͺ λ°±ν λ¨μΌ μμ (λͺ λ Ήμ€ λ§€κ°λ³μμ μ§μ λ λ¬Έμμ΄μ μνΈνν λ€μ μνΈ ν΄λ νλ λ°©λ²)μ μννλ λ°©λ²μ μμλ΄λλΌ μκ°μ λλΉν μ λ°μ μμ΅λλ€. λ νμ λͺ λ Ήμ΄ λμΉμ μ΄μ΄μΌ νλ€λ μ¬μ€μλ λΆκ΅¬νκ³ μΆλ ₯μ΄ μ λ ₯κ³Ό νΈνλμ§ μλ μλ λͺ¨λκ° μμλμμ΅λλ€. μμ νμ§ μκ³ λ«λ κ²μ μ¬μ©μ±μ΄λ κ°λ°μ ν¨μ¨μ±μ λν΄ μ ν κ±±μ νμ§ μλλ€λ μλ―Έμ λλ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ λ€λ₯Έ κ²½λ‘λ(λͺ λ
μ μ @thegranddesignμ΄ μΈκΈν κ²μ²λΌ μ νλκ·Έμ λ°λ) /
κ° μ ν¨ν base64 λ¬Έμκ° μλλ©° jsonμ μ΄μ§ λ°μ΄ν°λ₯Ό μ§μ νλ μ ν¨ν λ°©λ²μ΄ μλ€λ κ²μ
λλ€. κ·Έλ¬λ―λ‘:
/
κ° ν¬ν¨λμ΄ μμΌλ©΄ κ²½λ‘λ‘ κ΅¬λ¬Έ λΆμν©λλ€. fileb://
λ νμ¬ λμμ μννκ³ μμΌλ©° file://
λ b64λ‘ μΈμ½λ©λ μ μμ΅λλ€.@sgendler-stemμ λμνμ΅λλ€. μ΄ ν°μΌμ KMSλ₯Ό μ¬μ©νλ λ΄κ° μμ ν λͺ¨λ νλ‘μ νΈμ μ°κ²°λμ΄ μμ΅λλ€. μ°Έμ¬νλ €λ μ¬λμκ²λ νμ λ¬Έμ κ° λκΈ° λλ¬Έμ λλ€.
μ΄κ²μ μ€μ λ‘ μμ λ λκΉμ§ μ¬μ ν μ΄λ € μμ΄μΌ νλ μ μ μ΄ μμ°ν μ λλ‘ λ©μ²ν λ²κ·Έμ λλ€. μΆλ ₯μ νλμ νμμ μ¬μ©νκ³ μ λ ₯μ μμ ν λ€λ₯Έ(νΈνλμ§ μλ) νμμ μ¬μ©νλ λμΉ μμ μ μννλ λꡬλ₯Ό λΉλνλ κ²μ κ±°λν μν° ν¨ν΄μ λλ€. μ체 μΆλ ₯μ μ λ ₯μΌλ‘ μ¬μ©ν μ μλ λμΉ λꡬλ BROKENμ λλ€. λλ κ·Έκ²μ΄ μ€μ λ‘ μλν λλ‘ μλνλμ§ μκ΄νμ§ μμ΅λλ€. κ·Έκ²μ μ¬μ ν ββκΉ¨μ Έ μμ΅λλ€. μ΄ λꡬλ μμ μ΄μ§ μ λ ₯μ μ’ μλ κ²½μ° κΈ°λ³Έμ μΌλ‘ μμ μ΄μ§ μΆλ ₯μ μμ±ν΄μΌ ν©λλ€. κ·Έλ μ§ μμΌλ©΄ λͺ μμ μΈ base64 λμ½λ© λ¨κ³ λλ μ§μ λμ§ μμ νΉμ 맀κ°λ³μλ₯Ό μ§μ νμ§ μκ³ μμ±λ base64 μΈμ½λ© μ λ ₯μ μ¬μ©ν μ μμ΄μΌ ν©λλ€. λν ν΄λΉ μΆλ ₯μ μμ±νκΈ° μν΄ νμν©λλ€(λλ λμΌν μ νν 맀κ°λ³μλ₯Ό μ¬μ©νμ§ μλ κ²½μ° μν° λ§€κ°λ³μ). aws kms encryptλ₯Ό μ¬μ©νμ¬ base64 μΈμ½λ© μ€ μ΄λ νλλ₯Ό μ§μ νμ§ μκ³ base64 μΈμ½λ©λ μνΈν νμ΄λ‘λμ base64 μΈμ½λ©λ μΆλ ₯μ μμ±ν μ μλ€λ κ²μ ν°λ¬΄λμλ μΌμ λλ€. μ²μμ λ΄κ° μ 곡ν μμμΌλ‘ λλ립λλ€. κ·Έλ κ² νλ €λ©΄ μνΈν λ° μνΈ ν΄λ νμ λͺ λ Ή μμ€μμλ λ¬Έμνλμ§ μμ λͺ λ Ήμ€ λ§€κ°λ³μλ₯Ό μ¬μ©ν΄μΌ νκΈ° λλ¬Έμ νμ νκΈ°κ° ν¨μ¬ λ μ΄λ ΅μ΅λλ€. μ¬μ©μλ λκ΅°κ°κ° μνΈν/볡νΈν ν΄λΌμ΄μΈνΈλ‘ μνν μ μλ κ°μ₯ λͺ λ°±ν λ¨μΌ μμ (λͺ λ Ήμ€ λ§€κ°λ³μμ μ§μ λ λ¬Έμμ΄μ μνΈνν λ€μ μνΈ ν΄λ νλ λ°©λ²)μ μννλ λ°©λ²μ μμλ΄λλΌ μκ°μ λλΉν μ λ°μ μμ΅λλ€. λ νμ λͺ λ Ήμ΄ λμΉμ μ΄μ΄μΌ νλ€λ μ¬μ€μλ λΆκ΅¬νκ³ μΆλ ₯μ΄ μ λ ₯κ³Ό νΈνλμ§ μλ μλ λͺ¨λκ° μμλμμ΅λλ€. μμ νμ§ μκ³ λ«λ κ²μ μ¬μ©μ±μ΄λ κ°λ°μ ν¨μ¨μ±μ λν΄ μ ν κ±±μ νμ§ μλλ€λ μλ―Έμ λλ€.
λλ @sgendler-stemμ μμ ν λμν΄μΌ ν©λλ€. μ½λκ° μΆλ ₯μ μμ±νλ€λ©΄ μ μ΄λ κ·Έκ²μ μ λ ₯μΌλ‘ λ°μλ€μΌ μ μμ΄μΌ ν©λλ€.
κ·Έλ¬λ κ·Έ μ΄μμ κ²μ΄ μμ΅λλ€. SDKλ₯Ό ν΅ν΄ μνΈνκ° μλ£λ κ²½μ° - μνΈνλ νμΌ λμ μ΄μν arn
λ₯Ό μΆκ°νλ©΄ base64 κ° arn
μ κ±°ν νμλ CLIμμ μνΈλ₯Ό ν΄λ
ν μ μμ΅λλ€. URL. μ΄κ²μ κ·Έλ₯ κΉ¨μ‘μ΅λλ€ .
λ€μ λμνμ΅λλ€. μ΄λ‘ μΈν΄ λΆνμνκ² μ€λ§μ€λ¬μ΄ μν©μ΄ λ°μνμ΅λλ€.
μ΄κ²μ μ€μ λ‘ λ«ν μμ΅λκΉ? μμ? μ΄ μ€ννμ§ 4λ μ΄ μ§λ¬λ€λ κ²μ΄ λ―ΏκΈ°μ§ μκ³ μ μΌν νΌλλ°±μ λκ΅°κ° "μλν λλ‘ μλνλ€"κ³ λ§νλ κ² κ°μ΅λλ€. μλ λΉμ΄λ¨Ήμ; @sgendler-stemμ΄ λμμ λ§μ΅λλ€. μ΄κ²μ μμ ν λ§κ°μ‘μ΅λλ€. λ΄λΉ νμ΄ μ€μ€λ‘μ λν΄ κΈ°λΆμ΄ μ’μ§ μκΈ°λ₯Ό λ°λλλ€.
λμΌν μμΈμ μ§λ©΄:
botocore.errorfactory.InvalidCiphertextException: μνΈ ν΄λ
μμ
μ νΈμΆν λ μ€λ₯κ° λ°μνμ΅λλ€(InvalidCiphertextException).
μ¬μ© λ:
ν€ = b64decode(ν€)
μλ΅ = client.decrypt(
CiphertextBlob=ν€
)
encrypt
, generate-data-key
λ±μ μΆλ ₯μ΄ CiphertextBlob
νλλ₯Ό νΈμΆνμ§ μμΌλ©΄ μ΄κ²μ΄ κ·Έλ κ² μ€λ§μ€λ½μ§ μμ κ²μ΄λΌκ³ μκ°ν©λλ€. μ μ
λ ₯νλ©΄ decrypt
λΌκ³ λ --ciphertext-blob
,μ΄ μνΈλ¬Έ λ°©μΈ μꡬ λ€λ₯΄κ² μΈμ½λ© ν κ²μ μ² μ νκ² μ§κ΄μ μ΄λ€.
decrypt
λν νλκ·Έμ μ΄λ¦μ΄ λ€λ₯Έ κ²½μ° μΈμ½λ©μ΄ λ€λ₯΄λ€λ ννΈκ° λ©λλ€.
μ¬κΈ° https://github.com/aws/aws-cli/issues/2063 μμ ν΄λ ν base64 μΈμ½λ© μ λ ₯μ λν κΈ°λ₯ μ μμ΄
@μ€μ§ν
볡νΈννλ λμ key-idλ₯Ό 맀κ°λ³μλ‘ μ λ¬νμ§ μκΈ° λλ¬Έμ kmsλ 볡νΈνμ μ¬μ©ν μνΈν ν€λ₯Ό μ΄λ»κ² μ μ μμ΅λκΉ?
@arpit728 λ°νλ CipherTextBlobμ νΉμ CMKμ KeyIDμ λν΄ κ΅¬μ²΄μ μ΄λΌκ³ μκ°ν©λλ€.
λ¬Έμ κ° ν΄κ²°λ λκΉμ§ μ΄ ν°μΌμ λ€μ μ΄μ΄μ£ΌμΈμ!
μ΄ ν°μΌμ μ°Ύμ λκΉμ§ μ΄κ²μΌλ‘ λ무 λ§μ μκ°μ λμμ΅λλ€. μνΈνμ μνΈ ν΄λ κ°μ μ νν μ΄λ»κ² μ½λ©λκ³ λ³νλμ΄μΌ νλμ§ λͺ μν 곡μ λ¬Έμκ° μμ΅λκΉ?
λ¬΄μ¨ μΌμ΄ μΌμ΄λκ³ μλμ§μ λν μ½κ°μ λ°°κ²½ μ 보:
1.6.6 μμ μ΄μ μ μΈμ½λ©νλ "blob" μ νμ base64λ‘ μΈμ½λ©νμ§ μλ νκ· λ₯Ό μμ νμ΅λλ€. κ²°κ³Όμ μΌλ‘ μ΄μ "blob" μ νμΌλ‘ νμλ 맀κ°λ³μμ λν΄ μμ μ΄μ§ λ°μ΄νΈλ₯Ό μ§μ ν΄μΌ νλ©° λ΄λΆμ μΌλ‘ μλμΌλ‘ base64 μΈμ½λ©ν©λλ€. μ¦, μ볡 ν€ μνΈνλ₯Ό μν΄μλ λ¨Όμ base64λ₯Ό λμ½λ©ν΄μΌ ν©λλ€.
$ aws kms encrypt --key-id <key-id> --plaintext "abcd" --query CiphertextBlob --output text | base64 -D > /tmp/encrypted-file $ echo "Decrypted: $(aws kms decrypt --ciphertext-blob fileb:///tmp/encrypted-file --query Plaintext --output text | base64 -D)" Decrypted: abcd
μ΄ μμμλ λ°μ΄λ리 μ½ν μΈ κ° ν¬ν¨λ νμΌμ΄κΈ° λλ¬Έμ
fileb://
μ λμ¬λ μ¬μ©νκ³ μμ΅λλ€.
μ΄ μμμλ λ€μμ λ°νν©λλ€.
Decrypt μμ
μ νΈμΆν λ μ€λ₯(InvalidCiphertextException)κ° λ°μνμ΅λλ€.
볡νΈν:
`aws kms encrypt --key-id arn:aws:kms:eu-west-1werwerwjl:key/xxxyyyy --plaintext "abcd" --query CiphertextBlob --μΆλ ₯ ν μ€νΈ | base64 -d > ./μνΈνλ νμΌ
echo "μνΈ ν΄λ
λ¨: $(aws kms ν΄λ
--ciphertext-blob fileb:./encrypted-file --query μΌλ° ν
μ€νΈ --μΆλ ₯ ν
μ€νΈ | base64 --decode)"
`
μ°λΆν¬λ‘ μλνμ΅λλ€. λꡬλ μ§ λͺ
νν λ¬Έμλ μμ (μ¬μ΄νΈ λλ 무μΈκ°μ λν λ§ν¬)λ₯Ό μκ³ μλ€λ©΄ λ§€μ° κ°μ¬ν κ²μ
λλ€!
νΈμ§: μ΄ λ¬Έμμ νμ μ¬μ©νμ¬ μνΈν λ° μνΈ ν΄λ μμ μ μ»μμ΅λλ€. https://dev.to/matchilling/pragmatically-storing-security-sensitive-data-using-aws-kms-5e5b
μ°Έκ³ λ‘ μμ λ§ν¬λ μλνμ§ μμ§λ§ κΈ°μ¬λ κ½€ μ μ©ν΄ 보μ΄λ©° μ¬κΈ°μμ λ³Ό μ μμ΅λλ€ .
κ°μ₯ μ μ©ν λκΈ
λμ€μ μ΄ μμ μ μννλ μ¬λλ€μ μν΄ μνΈλ¬Έμ νμΌμ μ μ₯νμ§ μκ³ _μ΄ μμ μ μννλ €λ©΄ λ€μμ μνν μ μμ΅λλ€.
μ°Έκ³ : μλ @hauntingEchoμμ μ§μ ν λλ‘
<(cmd)
λ POSIXμ νΈνλμ§ μμΌλ―λ‘sh
λ₯Ό μ¬μ©νλ κ²½μ° μλνμ§ μμ§λ§bash
λ°zsh
μ μλν©λλ€.