Aws-cli: рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХрд┐рд▓реЛрдореАрдЯрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдЕрдорд╛рдиреНрдп рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ рдЕрдкрд╡рд╛рдж рддреНрд░реБрдЯрд┐

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рджрд┐рд╕ре░ 2014  ┬╖  27рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: aws/aws-cli

рдореИрдВрдиреЗ рдЖрдЬ awscli рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 1.6.6 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХрд┐рд▓реЛрдореАрдЯрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рд▓рдЧрд╛ред рдпрд╣ 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

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдкрд░ рдЖрддреЗ рд╣реИрдВ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _рдмрд┐рдирд╛ рд╕рд┐рдлрд░ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реЗрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

aws kms decrypt --ciphertext-blob fileb://<(echo 'ciphertext' | base64 -d)

рдиреЛрдЯ: рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ @hauntingEcho рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, <(cmd) POSIX- рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк sh рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди bash рдФрд░ zsh рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рднреА 27 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╕ рдереЛрдбрд╝реА рд╕реА рдкреГрд╖реНрдарднреВрдорд┐ рдХреА рдЬрд╛рдирдХрд╛рд░реА:

1.6.6 рдореЗрдВ , рд╣рдордиреЗ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рддрдп рдХрд┐рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдмреЗрд╕64 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ "рдмреНрд▓реЙрдм" рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдереЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдкрд╣рд▓реЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рдереЗред рдирддреАрдЬрддрди, рдЕрдм рдЖрдкрдХреЛ "рдмреНрд▓реЙрдм" рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рд╕реА рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдХрдЪреНрдЪреЗ рдмрд╛рдЗрдирд░реА рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдмреЗрд╕ 64 рдПрдиреНрдХреЛрдб рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд░рд╛рдЙрдВрдб рдЯреНрд░рд┐рдк рдХреБрдВрдЬреА рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдмреЗрд╕ 64 рдХреЛ рдбреАрдХреЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

$ 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.5 рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рдкрд░ рдирд┐рд░реНрднрд░ рдерд╛ рдЬреЛ рдХрд┐ 1.6.6 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛ред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рд╕реНрдирд┐рдкреЗрдЯ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ рдореЗрдВ рдмрд╛рдЗрдирд░реА рдЗрдирдкреБрдЯ/рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд╣рд╛рд▓рд┐рдпрд╛ рд░рд┐рдЧреНрд░реЗрд╢рди рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣рдореЗрд╢рд╛ рдРрд╕рд╛ рд╣реА рд░рд╣рд╛ рд╣реИред

рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдЕрд╕рд▓ рдореЗрдВ, рдЕрдм рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ #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 рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВрдиреЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ (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

рджреВрд░ рд╕реЗ рдореБрдЭреЗ рдпрд╣ рднреА рдирд╣реАрдВ рдмрддрд╛рддрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдлрд░ рд╢рд╛рдпрдж рдмреЗрд╕ 64 рд╣реИ рдФрд░ рдПрдХ рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдпреВрдЖрд░рдПрд▓ рдпрд╛ рдХреБрдЫ рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрд╛ рдмрд┐рд▓реНрд▓реА "рдЗрд╕реЗ рдкрд╣рд▓реЗ рдмреЗрд╕ 64 рд╕реЗ рдбреАрдХреЛрдб рдХрд░реЗрдВ" рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП decrypt рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдзреНрд╡рдЬ рдХреНрдпреЛрдВ рди рджреЗрдВ?

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдкрд░ рдЖрддреЗ рд╣реИрдВ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _рдмрд┐рдирд╛ рд╕рд┐рдлрд░ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реЗрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

aws kms decrypt --ciphertext-blob fileb://<(echo 'ciphertext' | base64 -d)

рдиреЛрдЯ: рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ @hauntingEcho рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, <(cmd) POSIX- рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк sh рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди bash рдФрд░ zsh рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдкреБрди: @thegranddesign рдХреА рдЯрд┐рдкреНрдкрдгреА , рдУрдПрд╕ рдПрдХреНрд╕ рдкрд░ рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ base64 рд▓рд┐рдП рдкреВрдВрдЬреА 'рдбреА' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЬреИрд╕реЗ:

$ 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

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдереА, рд▓реЗрдХрд┐рди рдиреЛрдб рдиреЗ рдорджрдж рдХреА:

'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 рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдмреИрд╢ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рджреВрд╕рд░реЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдпрд╣ рдПрдХ рджрд┐рдорд╛рдЧреА рджрдмрджрдмрд╛ рдЧреВрдВрдЧрд╛ рдмрдЧ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддрдм рддрдХ рдЦреБрд▓рд╛ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдареАрдХ рди рд╣реЛ рдЬрд╛рдПред рдпрд╣ рдПрдХ рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИ рдЬреЛ рдПрдХ рд╕рдордорд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд░реВрдк рдФрд░ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ (рдФрд░ рдЕрд╕рдВрдЧрдд) рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕рдордорд┐рдд рдЙрдкрдХрд░рдг рдЬреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ BROKEN рд╣реИред рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд░рд╛рджрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдЕрднреА рднреА рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред рдЙрдкрдХрд░рдг рдХреЛ рдпрд╛ рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрдЪреНрдЪреЗ рдмрд╛рдЗрдирд░реА рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдпрд╣ рдХрдЪреНрдЪреЗ рдмрд╛рдЗрдирд░реА рдЗрдирдкреБрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ, рдпрд╛ рдлрд┐рд░ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмреЗрд╕ 64 рдПрдиреНрдХреЛрдбреЗрдб рдЗрдирдкреБрдЯ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╕реНрдкрд╖реНрдЯ рдмреЗрд╕ 64 рдбреАрдХреЛрдб рдЪрд░рдгреЛрдВ рдпрд╛ рд╡рд┐рд╢реЗрд╖ рдкреИрд░рд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдирд╣реАрдВ рдереЗ рдЙрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдпрд╛ рдПрдХ рдПрдВрдЯреА-рдкреИрд░рд╛ рдпрджрд┐ рд╡рд╣ рдЙрд╕реА рд╕рдЯреАрдХ рдкрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдпрд╣ рдмреЗрддреБрдХрд╛ рд╕реЗ рдкрд░реЗ рд╣реИ рдХрд┐ рдореИрдВ рдЙрди рдмреЗрд╕ 64 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдмреЗрд╕ 64 рдПрдиреНрдХреЛрдбреЗрдб рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкреЗрд▓реЛрдб рдХреЗ рдмреЗрд╕ 64 рдПрдиреНрдХреЛрдбреЗрдб рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХрд┐рд▓реЛрдореАрдЯрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рджреЛрдиреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреЗрд╕ 64 рдбреАрдХреЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдпрд╣ рд╡рд╛рдкрд╕ рдЙрд╕ рдлреЙрд░реНрдо рдореЗрдВ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдерд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреИрд░рд╛рдореНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХрд┐ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдЙрдкрдХрдорд╛рдВрдб рдХреЗ рд╕реНрддрд░ рдкрд░ рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рдШрдВрдЯреЛрдВ рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ рдХрд┐ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди/рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЪреАрдЬ рдХреИрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ - рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░рдо рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ - рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдХрд░рдг рдПрдХ рдЯреВрдЯрд╛ рд╣реБрдЖ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рд╣реИ рдЬрд╣рд╛рдВ рдЖрдЙрдЯрдкреБрдЯ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рджреЛ рдЙрдк-рдЖрджреЗрд╢ рд╕рдордорд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдпрд╛ рдбреЗрд╡рд▓рдкрд░ рджрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рд░рд╛рд╕реНрддрд╛ (рдирдП рдЭрдВрдбреЗ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬреИрд╕рд╛ рдХрд┐ @thegranddesign рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ / рд╡реИрдз рдмреЗрд╕ 64 рд╡рд░реНрдг рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬреЗрд╕рди рдореЗрдВ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡реИрдз рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП:

  • рдпрджрд┐ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ-рдмреНрд▓реЙрдм рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреНрдп рдЖрдзрд╛рд░-64 рд╣реИ, рддреЛ рдЗрд╕реЗ рдЖрдзрд╛рд░ 64 рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВ
  • рдпрджрд┐ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ-рдмреНрд▓реЙрдм рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ / , рддреЛ рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВред fileb:// рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХрд░рддреЗ рд╣реБрдП, file:// рдХреЛ b64-рдПрдиреНрдХреЛрдбреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ @ sgendler-stem рд╕реЗ рд╕рд╣рдордд - рдпрд╣ рдЯрд┐рдХрдЯ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд╛рдо рдХреА рдЧрдИ рд╣рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЬрд┐рд╕ рдкрд░ KMS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмреЛрд░реНрдб рдкрд░ рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИред

рдпрд╣ рдПрдХ рджрд┐рдорд╛рдЧреА рджрдмрджрдмрд╛ рдЧреВрдВрдЧрд╛ рдмрдЧ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддрдм рддрдХ рдЦреБрд▓рд╛ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдареАрдХ рди рд╣реЛ рдЬрд╛рдПред рдпрд╣ рдПрдХ рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИ рдЬреЛ рдПрдХ рд╕рдордорд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд░реВрдк рдФрд░ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ (рдФрд░ рдЕрд╕рдВрдЧрдд) рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕рдордорд┐рдд рдЙрдкрдХрд░рдг рдЬреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ BROKEN рд╣реИред рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд░рд╛рджрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдЕрднреА рднреА рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред рдЙрдкрдХрд░рдг рдХреЛ рдпрд╛ рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрдЪреНрдЪреЗ рдмрд╛рдЗрдирд░реА рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдпрд╣ рдХрдЪреНрдЪреЗ рдмрд╛рдЗрдирд░реА рдЗрдирдкреБрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ, рдпрд╛ рдлрд┐рд░ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмреЗрд╕ 64 рдПрдиреНрдХреЛрдбреЗрдб рдЗрдирдкреБрдЯ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╕реНрдкрд╖реНрдЯ рдмреЗрд╕ 64 рдбреАрдХреЛрдб рдЪрд░рдгреЛрдВ рдпрд╛ рд╡рд┐рд╢реЗрд╖ рдкреИрд░рд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдирд╣реАрдВ рдереЗ рдЙрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдпрд╛ рдПрдХ рдПрдВрдЯреА-рдкреИрд░рд╛ рдпрджрд┐ рд╡рд╣ рдЙрд╕реА рд╕рдЯреАрдХ рдкрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдпрд╣ рдмреЗрддреБрдХрд╛ рд╕реЗ рдкрд░реЗ рд╣реИ рдХрд┐ рдореИрдВ рдЙрди рдмреЗрд╕ 64 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдмреЗрд╕ 64 рдПрдиреНрдХреЛрдбреЗрдб рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкреЗрд▓реЛрдб рдХреЗ рдмреЗрд╕ 64 рдПрдиреНрдХреЛрдбреЗрдб рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХрд┐рд▓реЛрдореАрдЯрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рджреЛрдиреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреЗрд╕ 64 рдбреАрдХреЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдпрд╣ рд╡рд╛рдкрд╕ рдЙрд╕ рдлреЙрд░реНрдо рдореЗрдВ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдерд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреИрд░рд╛рдореНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХрд┐ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдЙрдкрдХрдорд╛рдВрдб рдХреЗ рд╕реНрддрд░ рдкрд░ рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рдШрдВрдЯреЛрдВ рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ рдХрд┐ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди/рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЪреАрдЬ рдХреИрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ - рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░рдо рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ - рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдХрд░рдг рдПрдХ рдЯреВрдЯрд╛ рд╣реБрдЖ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рд╣реИ рдЬрд╣рд╛рдВ рдЖрдЙрдЯрдкреБрдЯ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рджреЛ рдЙрдк-рдЖрджреЗрд╢ рд╕рдордорд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдпрд╛ рдбреЗрд╡рд▓рдкрд░ рджрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ @ sgendler-stem рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ - рдпрджрд┐ рдХреЛрдб рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рддреЛ рдХрдо рд╕реЗ рдХрдо , рдЗрд╕реЗ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рд╣реИред рдпрджрд┐ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд╕рдбреАрдХреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдЕрдЬреАрдм arn рдЬреЛрдбрд╝рдХрд░, рд╕реАрдПрд▓рдЖрдИ рдЧреИрд░-рдмреЗрд╕ 64 arn рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдЗрд╕реЗ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпреВрдЖрд░рдПрд▓. рдпрд╣ рдЕрднреА рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ ред

рдлрд┐рд░ рд╕реЗ рд╕рд╣рдорддред рдЗрд╕рдиреЗ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдВрдж рд╣реИ? рдХреНрдпреЛрдВ? рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЦреЛрд▓реЗ рд╣реБрдП 4 рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реА рдХрд┐рд╕реА рдХреЛ "рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ" рдХрд╣ рд░рд╣реА рд╣реИред рдирд╣реАрдВ, рдпрд╣ рдХрдордмрдЦреНрдд рдирд╣реАрдВ рд╣реИ; @ sgendler-stem рдирд┐рд╢рд╛рдиреЗ рдкрд░ рд╕рд╣реА рд╣реИ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЯреАрдо рдХреЛ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреБрд░рд╛ рд▓рдЧреЗрдЧрд╛ред

рд╕рдорд╛рди рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВ:
botocore.errorfactory.InvalidCiphertextException: рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдСрдкрд░реЗрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ (InvalidCiphertextException):

рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛:
рдХреБрдВрдЬреА = b64decode (рдХреБрдВрдЬреА)
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = рдХреНрд▓рд╛рдЗрдВрдЯред рдбрд┐рдХреНрд░рд┐рдкреНрдЯ (
рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯрдмреНрд▓реЙрдм=рдХреБрдВрдЬреА
)

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢рд╛ рд╣реЛрддреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ encrypt , generate-data-key , рдЖрджрд┐ рдХреНрд╖реЗрддреНрд░ рдлреЛрди рдирд╣реАрдВ рдХрд┐рдпрд╛ CiphertextBlob ред рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдЬрдм decrypt рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ --ciphertext-blob , рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд┐рдлрд░ рдмреНрд▓реЙрдм рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдЕрд▓рдЧ рдврдВрдЧ рд╕реЗ рдПрдиреНрдХреЛрдб рдХрд░рдиреЗ рдХреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ unintuitive рд╣реИред

рдпрджрд┐ рдзреНрд╡рдЬ рдХрд╛ decrypt рдПрдХ рдЕрд▓рдЧ рдирд╛рдо рдерд╛, рддреЛ рдпрд╣ рдПрдХ рд╕рдВрдХреЗрдд рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕рдХреА рдПрдХ рдЕрд▓рдЧ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣реИред

рдпрд╣рд╛рдБ рдкрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╕ 64-рдПрдиреНрдХреЛрдбреЗрдб рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ https://github.com/aws/aws-cli/issues/2063

@ojitha

рдХрд┐рдореА рдХреЛ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рддреЗ рд╕рдордп рдХреА-рдЖрдИрдбреА рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@ arpit728 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ CipherTextBlob рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реАрдПрдордХреЗ рдХреЗ рдХреАрдЖрдИрдбреА тАЛтАЛрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣реИред

рдХреГрдкрдпрд╛ рдЗрд╕ рдЯрд┐рдХрдЯ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рддрдХ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ!

рдЗрд╕рдХреЗ рд╕рд╛рде рдХрдИ рдШрдВрдЯреЗ рддрдХ рдЦреЗрд▓реЗ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЯрд┐рдХрдЯ рдирд╣реАрдВ рдорд┐рд▓ рдЧрдпрд╛ред рдХреНрдпрд╛ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмреАрдЪ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдХреИрд╕реЗ рдХреЛрдбрд┐рдд рдФрд░ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╕ рдереЛрдбрд╝реА рд╕реА рдкреГрд╖реНрдарднреВрдорд┐ рдХреА рдЬрд╛рдирдХрд╛рд░реА:

1.6.6 рдореЗрдВ , рд╣рдордиреЗ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рддрдп рдХрд┐рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдмреЗрд╕64 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ "рдмреНрд▓реЙрдм" рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдереЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдкрд╣рд▓реЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рдереЗред рдирддреАрдЬрддрди, рдЕрдм рдЖрдкрдХреЛ "рдмреНрд▓реЙрдм" рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рд╕реА рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдХрдЪреНрдЪреЗ рдмрд╛рдЗрдирд░реА рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдмреЗрд╕ 64 рдПрдиреНрдХреЛрдб рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд░рд╛рдЙрдВрдб рдЯреНрд░рд┐рдк рдХреБрдВрдЬреА рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдмреЗрд╕ 64 рдХреЛ рдбреАрдХреЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

$ 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:// рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╛рдЗрдирд░реА рд╕рд╛рдордЧреНрд░реА рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рд╣реИред

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд▓реМрдЯрд╛рддрд╛ рд╣реИ:

рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдСрдкрд░реЗрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ (InvalidCiphertextException):
рдбрд┐рдХреНрд░рд┐рдкреНрдЯреЗрдб:

`рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХрд┐рдореА рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ --рдХреА-рдЖрдИрдбреА рдЕрд░реНрди: рдПрдбрдмреНрд▓реНрдпреВрдПрд╕: рдХрд┐рдореА: рдИрдпреВ-рд╡реЗрд╕реНрдЯ-1werwerwjl: рдХреБрдВрдЬреА/xxxyyyy --plaintext "abcd" --query CiphertextBlob --рдЖрдЙрдЯрдкреБрдЯ рдЯреЗрдХреНрд╕реНрдЯ | рдмреЗрд╕ 64 -рдбреА> ./рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб-рдлрд╛рдЗрд▓

рдЗрдХреЛ "рдбрд┐рдХреНрд░рд┐рдкреНрдЯреЗрдб: $(aws kms decrypt --ciphertext-blob fileb:./encrypted-file --query Plaintext --output text | base64 --decode)"
`
рдЙрдмрдВрдЯреВ рдХреЗ рд╕рд╛рде рдХреЛрд╢рд┐рд╢ рдХреАред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд╕реНрдкрд╖реНрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬ рдпрд╛ рдЙрджрд╛рд╣рд░рдг (рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдпрд╛ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рд▓рд┐рдВрдХ) рдкрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛!

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕ рдЖрд▓реЗрдЦ рд╕реЗ рдпреБрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ: https://dev.to/matchilling/pragmatically-storing-security- рд╕рдВрд╡реЗрджрдирд╢реАрд▓-рдбреЗрдЯрд╛-рдЙрдкрдпреЛрдЧ-aws-kms-5e5b

рдПрдлрд╡рд╛рдИрдЖрдИ, рдЙрдкрд░реЛрдХреНрдд рд▓рд┐рдВрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

brettswift picture brettswift  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

KimberleySDU picture KimberleySDU  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

DrStrangepork picture DrStrangepork  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

975204 picture 975204  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

schams-net picture schams-net  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ