mysql secretkeyspec,mysql – AWS:使用KMS加密的主密码创建RDS实例

我问,因为我不想在我的开发环境(使用terraform或云形成)中存储明文密码,而是由相应的AWS组件透明地解密的加密值.

解决方法:

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

所以像这样的东西可能有效:

aws rds create-instance ... \

--master-username admin-user \

--master-user-password `aws kms decrypt --ciphertext-blob fileb://path/to/kms/encrypted/file/with/password --output text --query Plaintext | base64 --decode`

如果您仍想使用Terraform创建数据库实例,那么我就是previously answered a question along similar lines.虽然这个问题更关注数据库存储在远程状态文件中.

同样,您可以使用aws_kms_secret data source动态解密密码.这会将密码泄露给日志和状态文件,但:

$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==

然后在Terraform中:

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}"

# ...

}

标签:terraform,mysql,amazon-web-services,amazon-rds,amazon-kms

来源: https://codeday.me/bug/20190828/1753198.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们需要计算出字符串的长度,也就是 n=9。 接下来,我们需要根据 KMP 算法的思想,求出字符串的 next 数组。KMP 算法 next 数组的含义是: next[i] 表示当第 i 个字符失配时,模式串需要跳转到的位置。 我们从模式串的第二个字符开始计算 next 值,因为 next[0]=-1 是一个特殊值。我们可以将模式串看成两个部分:前缀和后缀。其前缀表示除了最后一个字符以外,字符串的全部头部组合;后缀表示除了第一个字符以外,字符串的全部尾部组合。 以 aaaaaababc 为例,我们可以得到如下的 next 数组: | i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |----|---|---|---|---|---|---|---|---|---| | s | a | a | a | a | a | b | a | b | c | | next[i] | -1 | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 0 | 计算 next 数组的过程如下: 1. next[0]=-1,next[1]=0 2. 对于 i=2,s[0] 和 s[1] 相同,所以 next[2]=1 3. 对于 i=3,s[0] 和 s[2] 相同,所以 next[3]=2 4. 对于 i=4,s[0] 和 s[3] 相同,所以 next[4]=3 5. 对于 i=5,s[0] 和 s[4] 不同,但是 s[1] 和 s[5] 相同,所以需要回退到 next[1] 的位置,即 0,所以 next[5]=0 6. 对于 i=6,s[0] 和 s[5] 不同,但是 s[1] 和 s[6] 不同,但是 s[2] 和 s[6] 不同,但是 s[3] 和 s[6] 不同,但是 s[4] 和 s[6] 不同,但是 s[5] 和 s[6] 相同,所以需要回退到 next[0] 的位置,即 -1,所以 next[6]=-1 7. 对于 i=7,s[0] 和 s[6] 不同,但是 s[1] 和 s[7] 相同,所以需要回退到 next[1] 的位置,即 0,所以 next[7]=0 8. 对于 i=8,s[0] 和 s[7] 不同,但是 s[1] 和 s[8] 不同,但是 s[2] 和 s[8] 相同,所以需要回退到 next[2] 的位置,即 1,所以 next[8]=1 所以,aaaaaababc 的 next 数组为:-1,0,1,2,3,0,1,2,0。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值