Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql AWS:使用KMS加密主密码创建RDS实例_Mysql_Amazon Web Services_Amazon Rds_Terraform_Amazon Kms - Fatal编程技术网

Mysql AWS:使用KMS加密主密码创建RDS实例

Mysql AWS:使用KMS加密主密码创建RDS实例,mysql,amazon-web-services,amazon-rds,terraform,amazon-kms,Mysql,Amazon Web Services,Amazon Rds,Terraform,Amazon Kms,通过AWS cli工具在AWS上创建新的RDS实例时,是否可以使用使用AWS KMS密钥加密的主密码? 例如,使用此命令: 我这样问是因为我不想在我的开发环境中存储明文密码(使用terraform或cloud formation),取而代之的是由相应AWS组件透明解密的加密值。如果要使用CLI执行此操作,您可以始终使用KMS密钥加密密码,然后运行两个命令解密密码并创建数据库 所以类似的方法可能会奏效: aws rds创建实例\ --主用户名管理用户\ --主用户密码'aws kms decryp

通过AWS cli工具在AWS上创建新的RDS实例时,是否可以使用使用AWS KMS密钥加密的主密码? 例如,使用此命令:


我这样问是因为我不想在我的开发环境中存储明文密码(使用terraform或cloud formation),取而代之的是由相应AWS组件透明解密的加密值。

如果要使用CLI执行此操作,您可以始终使用KMS密钥加密密码,然后运行两个命令解密密码并创建数据库

所以类似的方法可能会奏效:

aws rds创建实例\ --主用户名管理用户\ --主用户密码'aws kms decrypt--密文blobfileb://path/to/kms/encrypted/file/with/password --输出文本--查询明文| base64--解码` 如果您仍然想使用Terraform创建数据库实例,那么我已经完成了。尽管这个问题更关心的是存储在远程状态文件中的数据库

如果你同样关注密码在密码中的存在,那么我会考虑简单地使用一个变量作为密码,然后使用.< /P> 同样,您也可以使用来动态解密您的密码。这会将密码泄漏到日志和状态文件,但:

$ echo -n 'master-password' > plaintext-password
$ aws kms encrypt \
> --key-id ab123456-c012-4567-890a-deadbeef123 \
> --plaintext fileb://plaintext-example \
> --encryption-context foo=bar \
> --output text --query CiphertextBlob
AQECAHgaPa0J8WadplGCqqVAr4HNvDaFSQ+NaiwIBhmm6qDSFwAAAGIwYAYJKoZIhvcNAQcGoFMwUQIBADBMBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDI+LoLdvYv8l41OhAAIBEIAfx49FFJCLeYrkfMfAw6XlnxP23MmDBdqP8dPp28OoAQ==
然后在地形中:

data "aws_kms_secret" "db" {
  secret {
    name    = "master_password"
    payload = "AQECAHgaPa0J8WadplGCqqVAr4HNvDaFSQ+NaiwIBhmm6qDSFwAAAGIwYAYJKoZIhvcNAQcGoFMwUQIBADBMBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDI+LoLdvYv8l41OhAAIBEIAfx49FFJCLeYrkfMfAw6XlnxP23MmDBdqP8dPp28OoAQ=="

    context {
      foo = "bar"
    }
  }
}

resource "aws_rds_cluster" "rds" {
  master_username = "root"
  master_password = "${data.aws_kms_secret.db.master_password}"

  # ...
}

谢谢你的回答!我已经尝试了aws_kms_secret,但这并没有像预期的那样起作用,我要求开发人员在这里澄清文档:。这确实是我在使用Terraform时的首选方式。我还在研究如果这对你不起作用的话,您可以运行一个shell脚本,从加密文件中获取解密后的明文,并将其导出为环境变量,供Terraform在运行时使用。但有趣的是:您不能简单地将加密密码和密钥ID一起传递给RDS,并期望RDS对相应用例透明地解密,正确?正确,但那是因为AWS的API还不支持这一点。