AWS CLI加密密钥

时间:2016-04-05 18:07:28

标签: amazon-web-services encryption command-line-interface

AWS CLI中是否有一项功能允许我以加密格式指定我的秘密访问密钥?

例如,Travis CI脚本可以包含S3密钥的加密版本: https://docs.travis-ci.com/user/deployment/s3

我不喜欢将AWS密钥留在易于阅读的凭证文件中的想法。

3 个答案:

答案 0 :(得分:3)

不,没有。访问密钥和/或密钥的任何加密必须由软件使用它们来完成。

但是,使用访问密钥和机密的推荐替代方法是使用IAM角色。

如果您的Travis CI由第三方托管,那么您应该使用IAM第三方角色与该第三方而不是访问密钥。这样,第三方就可以为您的AWS账户检索有时间限制的凭据。

如果您在自己的EC2实例上托管Travis CI,则可以在启动时将EC2实例分配给EC2实例配置文件(IAM角色)。这样,所有权限都将提供给实例,而无需在实例的任何位置存储凭据。

AWS CLI支持此功能。只需在任何地方(命令行,文件或配置)分配任何凭据,它就会尝试从实例配置文件中读取凭据。

答案 1 :(得分:1)

我们可以使用AWS Key Management Service(KMS)使用aws-cli加密密钥。

Process of Encryption

请参阅下面的Windows加密命令:

aws kms create-key --description "Description For the key"

输出:

$ aws kms create-key --description "Description For the key"
{
    "KeyMetadata": {
        "AWSAccountId": "361925972328",
        **"KeyId": "XXXX-XXXX-XXXX-XXXX",**
        "Arn": "arn:aws:kms:us-east-1:361925972328:key/15971628-e4b4-42b8-a50f-038eae00b143",
        "CreationDate": 1575535349.191,
        "Enabled": true,
        "Description": "Description For the key",
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "Enabled",
        "Origin": "AWS_KMS",
        "KeyManager": "CUSTOMER",
        "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
        "EncryptionAlgorithms": [
            "SYMMETRIC_DEFAULT"
        ]
    }
}

这将创建密钥。

加密命令:

aws kms encrypt --key-id XXXX-XXXX-XXXX-XXXX --plaintext new.txt --output text --query CiphertextBlob > secrets.base64.json

certutil -decode .\secrets.base64.json secrets.encrypted.json

输出:

Input Length = 430
Output Length = 159
CertUtil: -decode command completed successfully.

答案 2 :(得分:0)

使用aws-CLI KMS进行解密的过程

命令:

aws kms decrypt --ciphertext-blob ./secrets.encrypted.json --output text --query Plaintext > secrets.decrypted.base64

会给出此错误:

  

调用时发生错误(InvalidCiphertextException)   解密操作提到fileb://类型表示二进制文件

命令:

aws kms decrypt --ciphertext-blob fileb://./secrets.encrypted.json --output text --query Plaintext > secrets.decrypted.base64

它将转换为base64

命令:

certutil -decode .\secrets.decrypted.base64 .\secrets.decrypted.json

输出:

Input Length = 30
Output Length = 7
CertUtil: -decode command completed successfully.