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



使用 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,并将assume_role_policy设置为文档的 json 结果。

如果空的代入角色策略不是解决方案,那么如何使用适合 MediaConvert 的地形创建 IAM 角色?

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

您似乎对需要在哪里定义代入角色策略感到困惑。这不是由策略本身使用的,而是由角色使用它来确定允许哪些服务或帐户使用该角色。

该角色需要一个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 不会执行您不希望它执行的任何操作。

相关内容

  • 没有找到相关文章

最新更新