aws политика доступа к API-интерфейсу через терраформ - PullRequest
0 голосов
/ 23 апреля 2020

Использование группы автоматического масштабирования aws, которая контролируется сервером, прогнозируя предстоящую загрузку и увеличивая / уменьшая ее до требуемых. Серверу нужны разрешения для автомасштабирования API с наименьшим количеством необходимых привилегий.

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

data "aws_iam_policy_document" "default" {
  statement {
    sid    = "S3PolicyStmtNodeAutoscalingApiCalls"
    effect = "Allow"

    actions   = [
      "autoscaling:DescribeAutoScalingGroups",
      "autoscaling:SetDesiredCapacity",
      "autoscaling:TerminateInstanceInAutoScalingGroup"
    ]

    resources = [ var.autoscaling_group_arn ]
  }
}

Реализовано с помощью terraform, это переводит в следующую политику json (группа автоматического масштабирования arn obfuscated):

resource "aws_iam_policy" "aws_api_access" {
  arn    = "arn:aws:iam::123456789123:policy/aws-api-access"
  id     = "arn:aws:iam::123456789123:policy/aws-api-access"
  name   = "aws-api-access"
  path   = "/"
  policy = jsonencode({
    Statement = [
      {
        Action   = [
          "autoscaling:TerminateInstanceInAutoScalingGroup",
          "autoscaling:SetDesiredCapacity",
          "autoscaling:DescribeAutoScalingGroups",
        ]
        Effect   = "Allow"
        Resource = "arn:aws:autoscaling:region:acountid:autoScalingGroup:id:autoScalingGroupName/name"
        Sid      = "S3PolicyStmtAutoscalingApiCalls"
      }
    ]
    Version   = "2012-10-17"
  })
}

Ошибка AccessDenied: Пользователь: arn: aws: sts: : id: предполагаемая роль / role_name / i-instance-id не разрешено выполнять: autoscaling: DescribeAutoScalingGroups

До сих пор я только запускал его, используя подстановочный знак внутри атрибута ресурса, любые подсказки приветствуются.

1 Ответ

0 голосов
/ 23 апреля 2020

Решение находится в комментариях, разделяющих автомасштабирование: DescribeAutoScalingGroups от остальных решает проблему невозможности указать группу автомасштабирования в поле ресурса.

data "aws_iam_policy_document" "default" {
  statement {
    sid    = "S3PolicyStmtNodeAutoscalingApiCalls"
    effect = "Allow"

    actions   = [
      "autoscaling:SetDesiredCapacity",
      "autoscaling:TerminateInstanceInAutoScalingGroup"
    ]

    resources = [ var.autoscaling_group_arn ]
  }

  statement {
    sid    = "S3PolicyStmtNodeAutoscalingDescribe"
    effect = "Allow"

    actions   = [
      "autoscaling:DescribeAutoScalingGroups"
    ]

   resources = [ "*" ]
  }
}
...