适用于API Gateway 的 Cloudwatch Logs 的最小权限策略

0

【以下的问题经过翻译处理】 我正在尝试通过Terraform设置一个新的API Gateway,并且在为CloudWatch日志角色设置IAM策略方面遇到一些问题。我已经创建了日志组,并将保留期设置为1天,但是我无法创建一个能够被AWS控制台接受的策略。

我的当前(匿名化的)工作如下:

{
    "Statement": [
        {
            "Action": "logs:DescribeLogGroups",
            "Effect": "Allow",
            "Resource": "*",
            "Sid": "LogGroups"
        },
        {
            "Action": [
                "logs:PutLogEvents",
                "logs:GetLogEvents",
                "logs:DescribeLogStreams",
                "logs:CreateLogStream"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:logs:eu-west-1:123456789:log-group:API-Gateway-Execution-Logs_alphanum/stage:log-stream:*",
            "Sid": "LogStreams"
        }
    ],
    "Version": "2012-10-17"
}

当我尝试在控制台中设置CloudWatch日志的ARN时,出现错误消息:"The role ARN does not have required permissions configured. Please grant trust permission for API Gateway and add the required role policy." 如果我尝试在可视化编辑器中编辑策略,似乎不喜欢资源的格式,但我已经反复检查了这些资源与文档的匹配。

信任关系是直接的。

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

1 Antwort
0

【以下的回答经过翻译处理】 我认为它正在寻找基于AWS托管策略AmazonAPIGatewayPushToCloudWatchLogs中列出的所有所需权限,这些权限在此文档中列出:https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-logging.html#set-up-access-logging-permissions。然后,我认为您不能指定日志组,因为API Gateway在该地区使用相同的CloudWatch日志IAM角色(例如,该地区中的其他REST API将使用相同的IAM角色)。

以下示例应该有效:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "CloudWatchAccess1",
            "Effect": "Allow",
            "Action": [
                "logs:GetLogEvents",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:<<aws_region>>:<<aws_account>>:log-group:*:log-stream:*"
        },
        {
            "Sid": "CloudWatchAccess2",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:FilterLogEvents",
                "logs:CreateLogGroup"
            ],
            "Resource": "arn:aws:logs:<<aws_region>>:<<aws_account>>:log-group:*"
        }
    ]
}
profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen