适用于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 回答
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
专家
已回答 3 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则