【问题标题】:How to get private key from secret manager?如何从秘密经理那里获得私钥?
【发布时间】:2020-12-01 14:32:55
【问题描述】:

我需要在 AWS 中存储一个私钥。因为当我从 AWS 创建一个 ec2 实例时,我需要使用这个主键在配置器“remote-exec”中进行身份验证。我不想保存在 repo AWS 中。

在 Secret Manager 中保存私钥是个好主意吗?然后吃掉它?

在肯定的情况下,如何在Secret Manager中保存主键,然后在TF中检索 aws_secretsmanager_secret_version?

在我的情况下,如果我从 file() 验证,它可以工作,但如果我从字符串验证,则会失败。

connection {
    host = self.private_ip
    type = "ssh"
    user = "ec2-user"
    #private_key = file("${path.module}/key")   <-- Is working
    private_key = jsondecode(data.aws_secretsmanager_secret_version.secret_terraform.secret_string)["ec2_key"]    <-- not working. Error: Failed to read ssh private key: no key found
}

【问题讨论】:

    标签: amazon-web-services terraform terraform-provider-aws aws-secrets-manager


    【解决方案1】:

    我认为原因在于您存储它的方式。我使用我自己的沙盒帐户验证 aws_secretsmanager_secret_version 的使用,它可以工作。但是,我将其存储为痛苦文本,而不是 json:

    然后我成功使用了如下的一个实例:

    
    resource "aws_instance" "public" {
      ami           =  "ami-02354e95b39ca8dec" 
      instance_type = "t2.micro" 
      key_name      = "key-pair-name"
      security_groups = [aws_security_group.ec2_sg.name]
      
      provisioner "remote-exec" {
      
        connection {
          type     = "ssh"
          user     = "ec2-user"
          private_key = data.aws_secretsmanager_secret_version.example.secret_string
          host     = "${self.public_ip}"
        }
      
        inline = [
          "ls -la"
        ]
      }
      
      depends_on = [aws_key_pair.key]
      
    }
    

    【讨论】:

    • data.aws_secretsmanager_secret_version.example在使用前你在terraform中定义了吗?
    • @MauroBaraldi 没有。对于这个例子,我是在控制台中完成的。
    • 问题是否也可以将私钥与一些混合?比如 {"public": "some-public--string", "private": "private-key-here"}
    • @Alex 是的。我建议针对您的查询提出一个特定的问题。
    • @Marcin 我已经创建了一个stackoverflow.com/questions/67571435/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 2021-11-11
    • 2023-01-20
    • 2011-11-30
    相关资源
    最近更新 更多