Как использовать Terraform для создания AWS роли IAM без политики предполагаемых ролей? - PullRequest
1 голос
/ 08 января 2020

При использовании AWS MediaConvert инструкции предоставляют образец политики IAM , в которой нет раздела с предполагаемой ролью. Аналогично, при создании роли MediaConvert по умолчанию в консоли AWS IAM полученная роль IAM также не имеет политики доверия.

Как в Terraform мне создать роль IAM с пустым аргументом assume_role_policy?

Я пробовал следующие решения с различными ошибками:

  1. Set assume_role_policy = ""
  2. Set assume_role_policy = "{}"
  3. Создайте пустой data aws_iam_policy_document и задайте для accept_role_policy результат json документа.

Если пустая политика предполагаемой роли не является решением, то как мне это сделать? создать роль IAM с помощью terraform, которая подходит для MediaConvert?

Заранее благодарим вас за внимание и ответ.

1 Ответ

5 голосов
/ 08 января 2020

Вы, похоже, не понимаете, где должна быть определена политика предполагаемой роли. Это не используется самими политиками, а используется ролью, чтобы определить, каким службам или учетным записям разрешено использовать эту роль.

Роль нуждается в 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 Gateway. Возможно, вы захотите выбрать более детализированные разрешения для роли, или вы можете быть просто счастливы, что MediaConvert не собирается делать то, чего вы не хотите, в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...