如何使用Terraform创建无假设角色策略的AWS IAM角色?

拉蒙·J·罗梅罗和维吉尔

使用AWS MediaConvert时,说明提供了一个IAM策略示例,其中没有假定角色部分。同样,在AWS IAM控制台中创建默认MediaConvert角色时,所得的IAM角色也没有信任策略。

在Terraform中,如何创建带有空assume_role_policy参数的IAM角色

我尝试了以下解决方案并导致各种错误:

  1. assume_role_policy = ""
  2. assume_role_policy = "{}"
  3. 创建一个空文件,data aws_iam_policy_document然后将hypok_role_policy设置为文档的json结果。

如果没有空的承担角色策略不是解决方案,那么如何使用适合MediaConvert的Terraform创建IAM角色?

预先感谢您的考虑和回应。

ydaetskcoR

您似乎对于需要在何处定义假定角色策略感到困惑。策略本身不使用此功能,而是角色使用它来确定允许哪些服务或帐户使用该角色。

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

您的假定角色策略应如下所示:

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

您用来创建角色和策略的Terraform代码如下所示:

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不会做任何您不想做的事情感到高兴。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章