You need to enable JavaScript to run this app.
文档中心
文档控制台
注册
复制全文
下载 pdf
老版本的 Terraform(不推荐)
使用AssumeRole管理资源
复制全文
下载 pdf
使用AssumeRole管理资源

操作场景

若您在使用 Terraform 管理云资源时,需要使用某账号对另一账号的资源进行操作的相关场景,可以参考这篇文章进行 AssumeRole 跨账号操作,实现对所有云资源的统一管理。

使用方法

Terraform 支持使用账号 A 的 AK/SK,通过 AssumeRole 管理账号 B 的相关资源。下面以创建一个 vpc 资源为例,描述具体操作步骤。

  1. 确保账号 A 拥有扮演账号 B 某个角色 RoleB 的相关权限,该操作可以通过控制台完成,也可以使用 TF 中 iam 相关资源来进行新角色创建和策略绑定操作。iam 相关资源如下:
    volcengine_iam_rolevolcengine_iam_policyvolcengine_iam_role_policy_attachment

  2. main.tf 中新增一个带有 assume_role 参数的 provider 声明。

    说明

    如果需要在一个 main.tf 文件中同时声明账号 A 和账号 B 的 provider,可以使用别名参数 alias 来进行区分。

    provider "volcengine" {
      access_key = "AK-AccountA"
      secret_key = "SK-AccountA"
      endpoint   = "YourEndpoint"
      region     = "YourRegion"
      assume_role {
        assume_role_trn          = "trn:iam::ID-AccountB:role/RoleName-AccountB"
        assume_role_session_name = "tf-test-assume-role"
      }
      alias = "volcengine-B"
    }
    
  3. 使用新增的 provider 管理账号 B 的相关资源,如 vpc。

    resource "volcengine_vpc" "foo" {
      vpc_name     = "tf-test"
      cidr_block   = "**.**.**.**/**"
      
      // 有多个 provider 声明时,显示指定该资源使用的 provider 别名
      provider = volcengine.volcengine-B
    }
    

附录

参数说明

  • assume_role_trn: 必填,角色扮演的 TRN,格式为 trn:iam::AccountID:role/RoleName

  • assume_role_session_name:必填,角色扮演的临时 Session 名称。

  • duration_seconds: 选填,角色扮演的持续时间,取值范围在 900~43200 seconds,默认为 3600 s。

  • policy: 选填,角色扮演时的一些额外策略。

参数填写方式

和 AK/SK 一样,AssumeRole 的相关参数也支持以下两种方式来设置角色扮演的访问凭证信息。

  1. 方式一:静态凭证(Static credentials) ,即在 Terraform 配置文件的 provider 声明中添加 assume_role 信息,完整的凭证内容如下:

    provider "volcengine" {
      ... ...
      assume_role {
        assume_role_trn          = "trn:iam::AccountID:role/RoleName"
        assume_role_session_name = "tf-test-assume-role"
        duration_seconds         = 3600
      }
    }
    
  2. 方式二:环境变量(Environment variables) 。您可以将如下信息添加到环境变量中进行认证鉴权:

    export VOLCENGINE_ASSUME_ROLE_TRN=trn:iam::AccountID:role/RoleName
    export VOLCENGINE_ASSUME_ROLE_SESSION_NAME=tf-test-assume-role
    export VOLCENGINE_ASSUME_ROLE_DURATION_SECONDS=7200
    

    说明

    policy 参数只能通过方式一静态指定,无法通过环境变量导入。

最近更新时间:2024.03.08 12:27:16
这个页面对您有帮助吗?
有用
有用
无用
无用