【问题标题】:Hashicorp Terraform - Storing Azure Storage account access key in Azure Key VaultHashicorp Terraform - 在 Azure Key Vault 中存储 Azure 存储帐户访问密钥
【发布时间】:2019-07-28 16:37:36
【问题描述】:

作为免责声明,我对 Terraform 还很陌生,我正在尝试弄清楚如何将我的 Azure 存储帐户访问密钥存储在我的 Azure Key Vault 中。 (参考here)。

引用的具体命令是:

export ARM_ACCESS_KEY=$(az keyvault secret show --name terraform-backend-key --vault-name myKeyVault --query value -o tsv)

我知道 --vault 值应该替换为我的 Key Vault 的名称,但我应该用什么替换 --name 值?

同样重要的是,我应该将整个导出 ARM_ACCESS_KEY 字符串放在哪个文件/配置中?

非常感谢大家!

【问题讨论】:

  • 这个答案对你有用吗?如果它有效,你可以接受它。

标签: azure azure-storage terraform azure-keyvault terraform-provider-azure


【解决方案1】:

要将 Terraform 状态存储在 Azure 存储帐户中,必要的资源是存储帐户,但对您而言,您希望将存储访问密钥存储在 Azure Key Vault 中。所以你需要创建一个新的 Key Vault 或者使用现有的。

您可以使用 CLI 命令将存储访问密钥存储在密钥保管库中,如下所示:

az keyvault secret set --name secret_name --vault-name yourKeyvault_name --value yourStorageAccessKey

然后使用你提供的命令导出环境变量ARM_ACCESS_KEY

export ARM_ACCESS_KEY=$(az keyvault secret show --name secret_name --vault-name yourKeyvault_name --query value -o tsv)

那么您只需要按照您在问题中提到的文档中的步骤进行操作即可。

更新

如果你想在 Windows 中设置environment variables,你可以这样做:

$env:VAR_NAME='vaule'

在您的问题中,您可以像这样导出存储访问密钥:

$env:ARM_ACCESS_KEY=(az keyvault secret show --name secret_name --vault-name yourKeyvault_name --query value -o tsv)

将 secret_name 和 yourKeyvault_name 更改为您的资源。我这边的结果:

【讨论】:

  • 感谢您的回复!所以我确实输入了秘密名称和密钥库名称,以及我的存储访问密钥,但是当我运行命令(您引用的第一个命令)时,我收到了拒绝访问的消息。我确定我使用了正确的存储访问密钥。知道为什么会发生这种情况吗?
  • 另外,其次,每当我尝试运行导出命令时,它都无法识别该命令。我假设我需要将该行插入到某个配置中?还是我做错了什么?
  • @Neal 好吧,许可有两个可能的原因。一是您需要root权限才能执行命令。另一种是您应该使用命令az login 登录Az。最好提供错误详细信息。
  • @Neal 导出是Linux中的shell命令,我想所有的Linux操作系统都会默认安装它。但你最好检查一下。
  • 我实际使用过 az login 命令,甚至选择了正确的订阅。我还使用我创建的服务主体进行了身份验证,并且该 SP 具有适当的权限。关于您的其他评论,我应该提到我正在 Windows 10 的命令提示符下运行这些命令。有没有办法让该导出命令从这个上下文中运行?
猜你喜欢
  • 2019-12-24
  • 2021-03-16
  • 2021-01-26
  • 2017-10-30
  • 2017-09-12
  • 2019-09-17
  • 2022-01-03
  • 1970-01-01
  • 2023-01-26
相关资源
最近更新 更多