代码之家  ›  专栏  ›  技术社区  ›  Ramón J Romero y Vigil

如何使用Terraform创建没有假定角色策略的AWS IAM角色?

  •  0
  • Ramón J Romero y Vigil  · 技术社区  · 5 年前

    使用AWS MediaConvert时,说明提供了 sample IAM policy 没有“承担角色”部分。同样,在AWS IAM控制台中创建默认MediaConvert角色时,生成的IAM角色也没有信任策略。

    在地形中,我该怎么做 create an IAM role 空空荡荡的 assume_role_policy 论点

    我尝试了以下解决方案,但出现了各种错误:

    1. 设置 assume_role_policy = ""
    2. 设置 assume_role_policy = "{}"
    3. 创建一个空的 data aws_iam_policy_document 并将“假定角色”策略设置为文档的json结果。

    如果空的假定角色策略不是解决方案,那么我如何使用terraform创建适合MediaConvert的IAM角色?

    提前感谢您的考虑和回复。

    0 回复  |  直到 5 年前
        1
  •  11
  •   ydaetskcoR    5 年前

    您似乎对需要定义“承担角色”策略的位置感到困惑。这不是策略本身使用的,而是角色使用它来确定哪些服务或帐户可以使用角色。

    这个角色需要 assume_role_policy 允许 mediaconvert 服务能够承担这个角色。之后,角色可以使用附加到角色的策略提供的任何权限(作为托管策略或内联策略)。

    然后,您的假定角色策略应该如下所示:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "Service": "mediaconvert.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    创建角色和策略的地形代码将如下所示:

    data "aws_iam_policy_document" "mediaconvert_assume_role_policy" {
      statement {
        actions = ["sts:AssumeRole"]
    
        principals {
          type        = "Service"
          identifiers = ["mediaconvert.amazonaws.com"]
        }
      }
    }
    
    resource "aws_iam_role" "mediaconvert" {
      name               = "example"
      path               = "/system/"
      assume_role_policy = data.aws_iam_policy_document.mediaconvert_assume_role_policy.json
    }
    
    resource "aws_iam_role_policy_attachment" "mediaconvert_s3" {
      role       = aws_iam_role.mediaconvert.name
      policy_arn = "arn:aws:iam::aws:policy/AmazonS3FullAccess"
    }
    
    resource "aws_iam_role_policy_attachment" "mediaconvert_api_gateway" {
      role       = aws_iam_role.mediaconvert.name
      policy_arn = "arn:aws:iam::aws:policy/AmazonAPIGatewayInvokeFullAccess"
    }
    

    这将创建一个可以由MediaConvert服务承担的角色,然后允许MediaConvert服务使用S3或API网关执行任何操作。您可能希望为该角色提供更细粒度的权限,或者您可能很高兴MediaConvert不会做任何您不希望它做的事情。