【问题标题】:Terraform assume role despite correct IAM setup尽管 IAM 设置正确,Terraform 仍承担角色
【发布时间】:2021-10-21 15:17:37
【问题描述】:

我已经能够通过使用带有给定配置文件的 CLI 假设它来测试这个角色。但是,我仍然在应用时收到此错误:

│ Error: error configuring Terraform AWS Provider: IAM Role (arn:aws:iam::<omitted>:role/<omitted>) cannot be assumed.
│ 
│ There are a number of possible causes of this - the most common are:
│   * The credentials used in order to assume the role are invalid
│   * The credentials do not have appropriate permission to assume the role
│   * The role ARN is not valid
│ 
│ Error: NoCredentialProviders: no valid providers in chain. Deprecated.
│       For verbose messaging see aws.Config.CredentialsChainVerboseErrors
│ 
│ 
│   with provider["registry.terraform.io/hashicorp/aws"],
│   on providers.tf line 3, in provider "aws":
│    3: provider "aws" {
│ 

提供者配置如下:

provider "aws" {
  region  = var.aws_region
  profile = var.aws_profile
  assume_role {
    role_arn     = var.assume_role_arn
    session_name = "assume-role-${timestamp()}"
  }
}

假设所有变量都是正确的 - 我做错了什么?

我能够在一个简单的存储库中重新创建它: https://github.com/SparkPost/tf-recreate-assume-role-bug

您显然必须在角色的假设角色策略和执行假设的用户/角色的策略中创建正确的假设角色设置。

编辑: 已请求,因此这是假定角色的信任策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::<omitted>:user/<my username>"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

另外,需要注意的是,我是管理员用户,有权承担所有角色。

这是我用来从 CLI 测试承担角色的命令:

aws sts --profile <profile used in module> assume-role --role-arn <role arn from error message> --role-session-name test

返回成功。

【问题讨论】:

  • 什么是角色的信任策略?
  • 我的用户名包含在信任策略中,我是管理员用户。我已经能够使用 CLI 中的给定配置文件成功担任该角色。我已经检查并三次检查了所有变量。
  • 在没有assume_role 的情况下您的 TF 代码是否有效?换句话说,唯一的问题是担任这个角色?
  • 是的,这是我正在更新的一个模块,以使用以前没有使用过的假设角色,如果我删除了假设角色,它就可以正常工作。

标签: amazon-web-services terraform amazon-iam terraform-provider-aws


【解决方案1】:

您的 timestamp() 将为会话名称返回非法字符。您必须将其格式化为只有好的字符,例如:

session_name = "assume-role-${formatdate("MMM-DD-YYYY", timestamp())}"

【讨论】:

    猜你喜欢
    • 2018-01-15
    • 2020-04-29
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    相关资源
    最近更新 更多