创建Vault Terraform提供程序令牌的权限被拒绝



我在Terraform IaC代码中使用Vault提供程序:

provider "vault" {
address = var.vault_address
auth_login {
path = "auth/approle/login"
parameters = {
role_id   = var.role_id
secret_id = var.secret_id
}
}
}

传递一个地址,如:https://www.vault.organization.com正确填写role_idsecret_id。当我通过HTTP请求请求令牌时,它工作,但在这个提供程序的情况下,我得到403 permission denied error,如下所示:

│ Error: failed to create limited child token: Error making API request.
│ 
│ URL: POST https://vault.organization.com/v1/auth/token/create
│ Code: 403. Errors:
│ 
│ * 1 error occurred:
│   * permission denied
│ 
│ 
│ 
│   with provider["registry.terraform.io/hashicorp/vault"],
│   on providers.tf line 23, in provider "vault":
│   23: provider "vault" {

我的配置有什么问题?

Terraform version ">= 0.13"
Vault provider version "3.7.0"

这个问题源于Vault Provider需要创建一个中间/子令牌,由于策略在Terraform Provider中的设置方式,它没有权限,因此它总是会失败。

在最近的版本中,他们为skip_child_token引入了解决这个问题的选项。(https://github.com/hashicorp/terraform-provider-vault/issues/29 # issuecomment - 988121638)

此外,似乎有一个未记录的要求,将名称空间放置在providerauth_login块中,如果我不同时添加它们,我会得到403错误。

provider "vault" {
address = var.vault_address
namespace = "admin"
skip_child_token = true
auth_login {
path = "auth/approle/login"
namespace = "admin"
parameters = {
role_id   = var.cms_vault_role_id
secret_id = var.cms_vault_secret_id
}
}
}

403错误不是来自路径auth/approle/login,而是来自路径auth/token/create

Terraform将尝试创建一个子令牌,如果在环境中找到现有令牌。我认为你的脚本捡起了一个旧的令牌,它在到达你的代码之前就失败了。

试试这个(调整到你的环境):

  1. 从令牌助手(rm -v ~/.vault-token)中删除令牌
  2. 清除令牌环境变量(unset VAULT_TOKEN)
  3. vault print token
  4. 调试配置

相关内容

  • 没有找到相关文章

最新更新