在 AWS 中使用 Terraform 创建角色,并附加 SAML 提供程序

Posted

技术标签:

【中文标题】在 AWS 中使用 Terraform 创建角色,并附加 SAML 提供程序【英文标题】:Create ROLE with Terraform in AWS with SAML provider attached 【发布时间】:2018-01-25 16:35:05 【问题描述】:

我目前正在尝试自动化 AWS 账户预置,其中一个步骤是使用身份提供商(用于联合用户访问)创建 IAM ROLE。 我搜索并检查了 Terraform 文档,但找不到有关创建此类角色或将提供者附加到角色的任何信息。 我可以很好地创建两者,但它们是独立的。 这是部分代码:

resource "aws_iam_saml_provider" "default" 
  name                   = "ADFS-TEST"
  saml_metadata_document = "$file("../../FederationMetadata.xml")"


resource "aws_iam_role" "role" 
    name = "test-Admins"

【问题讨论】:

【参考方案1】:

想通了。这是完整的块

resource "aws_iam_saml_provider" "test" 
  name                   = "ADFS-TEST"
  saml_metadata_document = "$file("../../FederationMetadata.xml")"


resource "aws_iam_role" "role" 
    name = "ADFStest-Admins"
    assume_role_policy = <<EOF

  "Version": "2012-10-17",
  "Statement": [
    
      "Sid": "",
      "Effect": "Allow",
      "Principal": 
        "Federated": "$aws_iam_saml_provider.test.arn"
      ,
      "Action": "sts:AssumeRoleWithSAML",
      "Condition": 
        "StringEquals": 
          "SAML:aud": "https://signin.aws.amazon.com/saml"
        
      
    
  ]

EOF



resource "aws_iam_role_policy" "admins" 
    name        = "Admin-Policy"
    #description = "A test policy"
    role = "$aws_iam_role.role.id"
    policy = <<EOF

  "Version": "2012-10-17",
    "Statement": [
      
        "Effect": "Allow",
        "Action": "*",
        "Resource": "*"
      
  ]

EOF

【讨论】:

【参考方案2】:

谢谢!它对我有用。

我只是将 aws_iam_role_policy 更改为使用 aws_iam_role_policy_attachment:

resource "aws_iam_role_policy_attachment" "attach" 
    role = "$aws_iam_role.role.name"
    policy_arn = "arn:aws:iam::aws:policy/AdministratorAccess"

【讨论】:

以上是关于在 AWS 中使用 Terraform 创建角色,并附加 SAML 提供程序的主要内容,如果未能解决你的问题,请参考以下文章

Terraform aws 承担角色

仅在不存在时如何创建 terraform 资源

如何在 local-exec 配置程序中从 terraform 继承 aws 凭据

使用 terraform 创建 IAM 角色并将其附加到 EC2

Terraform:将 AWS 托管策略附加到角色的正确方法?

Terraform 依赖于 aws_iam_policy