You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

测试GuardDuty Slack告警时EventBridge报NotAuthorizedForSourceException如何解决?

问题描述

已完成AWS GuardDuty通过Slack发送告警的配置,测试时尝试向事件总线发送以下模拟事件:

{
  "version": "0",
  "detail-type": "GuardDuty Finding",
  "source": "aws.guardduty",
  "account": "187760472520",
  "time": "2024-02-28T16:46:43Z",
  "region": "us-west-2",
  "resources": [],
  "detail": {
    "severity": 3.5,
    "description": "Example GuardDuty finding"
  }
}

收到错误:Error. NotAuthorizedForSourceException. Not authorized for the source.
该错误含义为:无权限使用该源向此事件总线发布事件

当前使用的事件总线模板资源基础策略如下:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "AllowAccountToPutEvents",
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::<Account ID>:root"
    },
    "Action": "events:PutEvents",
    "Resource": "arn:aws:events:us-west-2:<Account ID>:event-bus/default"
  }, {
    "Sid": "AllowAllAccountsFromOrganizationToPutEvents",
    "Effect": "Allow",
    "Principal": "*",
    "Action": "events:PutEvents",
    "Resource": "arn:aws:events:us-west-2:<Account ID>:event-bus/default",
    "Condition": {
      "StringEquals": {
        "aws:PrincipalOrgID": "<Org ID>"
      }
    }
  }, {
    "Sid": "AllowAccountToManageRulesTheyCreated",
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::<Account ID>:root"
    },
    "Action": ["events:PutRule", "events:PutTargets", "events:DeleteRule", "events:RemoveTargets", "events:DisableRule", "events:EnableRule", "events:TagResource", "events:UntagResource", "events:DescribeRule", "events:ListTargetsByRule", "events:ListTagsForResource"],
    "Resource": "arn:aws:events:us-west-2:<Account ID>:rule/default",
    "Condition": {
      "StringEqualsIfExists": {
        "events:creatorAccount": "<Account ID>"
      }
    }
  }]
}

已确认控制台用户具备events:PutEvents的IAM权限,需修复该错误。

修复方案

原因分析

错误源于事件总线的资源策略未明确允许当前IAM主体使用aws.guardduty作为事件源发送事件。即便IAM用户拥有PutEvents权限,事件总线仍需额外授权指定的事件源。

具体修复步骤

  • 修改事件总线资源策略,添加事件源授权
    在允许events:PutEvents的语句中加入events:source条件,明确允许aws.guardduty作为事件源:

    1. 若使用本账户内用户测试,修改第一个Statement:
      {
        "Sid": "AllowAccountToPutEvents",
        "Effect": "Allow",
        "Principal": {
          "AWS": "arn:aws:iam::<Account ID>:root"
        },
        "Action": "events:PutEvents",
        "Resource": "arn:aws:events:us-west-2:<Account ID>:event-bus/default",
        "Condition": {
          "StringEquals": {
            "events:source": "aws.guardduty"
          }
        }
      }
      
    2. 若需允许组织内所有账户发送GuardDuty事件,修改第二个Statement:
      {
        "Sid": "AllowAllAccountsFromOrganizationToPutEvents",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "events:PutEvents",
        "Resource": "arn:aws:events:us-west-2:<Account ID>:event-bus/default",
        "Condition": {
          "And": [
            {
              "StringEquals": {
                "aws:PrincipalOrgID": "<Org ID>"
              }
            },
            {
              "StringEquals": {
                "events:source": "aws.guardduty"
              }
            }
          ]
        }
      }
      
  • 针对非root用户的额外配置
    若使用的是IAM用户而非root账户操作,需将该用户ARN添加到事件总线策略的Principal列表中,示例:

    "Principal": {
      "AWS": [
        "arn:aws:iam::<Account ID>:root",
        "arn:aws:iam::<Account ID>:user/your-test-user"
      ]
    }
    
  • 验证修复
    策略修改完成后,重新发送模拟事件,确认错误消失。


内容的提问来源于stack exchange,提问作者Luke Muther

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 22:25:44