Aws IAM group: настройка доступа только для чтения к группе журналов на Terraform - PullRequest
0 голосов
/ 17 сентября 2018

Кто-нибудь знает, как настроить доступ только для чтения к определенным группам журналов?

resource "aws_iam_policy" "logs" {
  name        = "AWSLogs${title(var.product)}"
  description = "Logging policy for ${title(var.product)}"
  policy      = <<EOF
  {
        "Version": "2012-10-17",
        "Statement": [
              {
                "Effect": "Allow",
                "Action": [
                    "logs:Get*",
                    "logs:List*",
                    "logs:Filter*"
                ],
                "Resource": [
                    "arn:aws:logs:::log-group:${aws_cloudwatch_log_group.one.arn}:log-stream:*",
                    "arn:aws:logs:::log-group:${aws_cloudwatch_log_group.two.arn}:log-stream:*",
                    "arn:aws:logs:::log-group:${aws_cloudwatch_log_group.three.arn}:log-stream:*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "logs:DescribeLogGroups"
                ],
                "Resource": "*"
            }
        ]
   }
EOF
}


resource "aws_iam_group_policy_attachment" "logs" {
  group      = "${aws_iam_group.logs.name}"
  policy_arn = "${aws_iam_policy.logs.arn}"
}

resource "aws_iam_group" "logs" {
  name = "${title(var.product)}Logs"
}

В настоящее время я пытаюсь настроить доступ только к указанным группам журналов, но я могу получить доступ к ним, только если для моего ресурса установлено значение «*». Это невозможно, когда я настраиваю это для предопределенных групп журналов. У кого-нибудь есть хорошая практика или решение? Когда я пробую это решение выше, я получаю только

Не авторизован для выполнения: logs: FilterLogEvents когда я пытаюсь получить к нему доступ через пользователя, который входит в группу «logs» IAM.

1 Ответ

0 голосов
/ 18 сентября 2018

aws_cloudwatch_log_group.one.arn уже является полным ARN группы журналов one, то есть

arn: aws: logs: us-east-1: 123456789012: log-group: one

Так что обращайтесь только к этому в списке Resources:

resource "aws_iam_policy" "logs" {
  name        = "AWSLogs${title(var.product)}"
  description = "Logging policy for ${title(var.product)}"
  policy      = <<EOF
  {
        "Version": "2012-10-17",
        "Statement": [
              {
                "Effect": "Allow",
                "Action": [
                    "logs:Get*",
                    "logs:List*",
                    "logs:Filter*"
                ],
                "Resource": [
                    "${aws_cloudwatch_log_group.one.arn}:log-stream:*",
                    "${aws_cloudwatch_log_group.two.arn}:log-stream:*",
                    "${aws_cloudwatch_log_group.three.arn}:log-stream:*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "logs:DescribeLogGroups"
                ],
                "Resource": "*"
            }
        ]
   }
EOF
}
...