aws-encryption-cli:如何在加密期间设置配置文件时使用解密?
aws-encryption-cli: How to decrypt using when profile was set during encryption?
我在 KMS 中有一个密钥,我想用它在 shell 脚本中解密。我已经安装了 aws-encryption-cli (https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/crypto-cli.html).
hello world 示例在我的开发环境中运行良好,我在其中创建了一个 kms-key(其 arn 存储在变量 $dev_key_arn
中)。
> echo 'Hello World' | aws-encryption-cli --encrypt --master-keys key=$dev_key_arn --input - --output - --encode -S | aws-encryption-cli --decrypt --input - --output - --decode -S
Hello World
我也有生产环境,所以想用kms-key$prod_key_arn
。我在名为 prod
的配置文件中拥有有效的 AWS 凭证,因此我希望
> echo 'Hello World' | aws-encryption-cli --encrypt --master-keys key=$prod_key_arn profile=prod region=eu-west-1 --input - --output - --encode -S | aws-encryption-cli --decrypt --input - --output - --decode -S
Encountered unexpected error: increase verbosity to see details.
DecryptKeyError("Unable to decrypt any data key")
但它失败并显示上述消息。如果检查加密的消息,我看到它成功地加密了消息
> aws-encryption-cli --encrypt --master-keys key=arn:aws:kms:eu-west-1:953495156568:key/2197020f-5b3c-4d05-bffc-04cf6114e405 profile=prod region=eu-west-1 provider=aws-kms --input /tmp/prod_key --output - --encode -S
AYADePCKfZUuL<....>iza1AU=
密钥的 arn 存储在加密的 material 中(base64 解码显示它)。但是关于个人资料的信息去哪儿了?解码时无法作为参数传入,似乎不是编码材料的一部分。
aws-encryption-cli
作者在这里。 :)
您遇到的问题是您在加密命令中将配置文件设置为 "prod",但在解密命令中您没有设置配置文件,因此它使用的是默认配置文件。
aws-encryption-cli --decrypt --input - --output - --decode -S
如果您添加一个主密钥定义来标识您要使用的配置文件,它应该可以工作。
aws-encryption-cli --decrypt --master-keys provider=aws-kms profile=prod --input - --output - --decode -S
因为如果您不指定名称,我们会默认使用 aws-kms 提供程序,所以只需指定配置文件也应该有效,但我更喜欢确定提供程序,因为这样可以使意图更清楚。
aws-encryption-cli --decrypt --master-keys profile=prod --input - --output - --decode -S
如果您 运行 遇到与 aws-encryption-cli
相关的任何其他问题,请随时在我们的 GitHub 存储库 [1] 中提出问题。
我在 KMS 中有一个密钥,我想用它在 shell 脚本中解密。我已经安装了 aws-encryption-cli (https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/crypto-cli.html).
hello world 示例在我的开发环境中运行良好,我在其中创建了一个 kms-key(其 arn 存储在变量 $dev_key_arn
中)。
> echo 'Hello World' | aws-encryption-cli --encrypt --master-keys key=$dev_key_arn --input - --output - --encode -S | aws-encryption-cli --decrypt --input - --output - --decode -S
Hello World
我也有生产环境,所以想用kms-key$prod_key_arn
。我在名为 prod
的配置文件中拥有有效的 AWS 凭证,因此我希望
> echo 'Hello World' | aws-encryption-cli --encrypt --master-keys key=$prod_key_arn profile=prod region=eu-west-1 --input - --output - --encode -S | aws-encryption-cli --decrypt --input - --output - --decode -S
Encountered unexpected error: increase verbosity to see details.
DecryptKeyError("Unable to decrypt any data key")
但它失败并显示上述消息。如果检查加密的消息,我看到它成功地加密了消息
> aws-encryption-cli --encrypt --master-keys key=arn:aws:kms:eu-west-1:953495156568:key/2197020f-5b3c-4d05-bffc-04cf6114e405 profile=prod region=eu-west-1 provider=aws-kms --input /tmp/prod_key --output - --encode -S
AYADePCKfZUuL<....>iza1AU=
密钥的 arn 存储在加密的 material 中(base64 解码显示它)。但是关于个人资料的信息去哪儿了?解码时无法作为参数传入,似乎不是编码材料的一部分。
aws-encryption-cli
作者在这里。 :)
您遇到的问题是您在加密命令中将配置文件设置为 "prod",但在解密命令中您没有设置配置文件,因此它使用的是默认配置文件。
aws-encryption-cli --decrypt --input - --output - --decode -S
如果您添加一个主密钥定义来标识您要使用的配置文件,它应该可以工作。
aws-encryption-cli --decrypt --master-keys provider=aws-kms profile=prod --input - --output - --decode -S
因为如果您不指定名称,我们会默认使用 aws-kms 提供程序,所以只需指定配置文件也应该有效,但我更喜欢确定提供程序,因为这样可以使意图更清楚。
aws-encryption-cli --decrypt --master-keys profile=prod --input - --output - --decode -S
如果您 运行 遇到与 aws-encryption-cli
相关的任何其他问题,请随时在我们的 GitHub 存储库 [1] 中提出问题。