如何解决在 Amazon SES 中发送电子邮件时出现的“未授权”错误?

2 分钟阅读
0

我正在尝试使用 Amazon Simple Email Service(Amazon SES)发送电子邮件,但我一直收到“未授权”错误。

简短描述

由于以下原因,可能会出现“未授权”错误:

  • 您使用了错误的 AWS Identity and Access Management(IAM)用户或角色发送电子邮件。
  • 您正在使用的 IAM 身份不具有 ses:SendEmailses:SendRawEmail 权限。
  • IAM policy 或授权策略拒绝您获得 ses:SendEmailses:SendRawEmail 操作的 IAM 身份权限。
  • IAM 权限边界不允许访问 Amazon SES。
  • AWS Organizations 服务控制策略(SCP)不允许 Amazon SES 访问。
  • 对于跨账户发送:发送身份的授权策略不允许 IAM 身份发送电子邮件。

要对授权错误进行故障排除,请执行这些步骤:

  • 验证您是否使用正确的 IAM 身份发送电子邮件。
  • 确保 IAM 身份拥有发送电子邮件的 ses:SendEmailses:SendRawEmail 权限。
  • 检查 IAM policy 或授权策略中是否有任何阻止访问的拒绝语句。
  • 检查您的 IAM policy 中允许的某项操作在权限边界内是否不被允许。
  • 使用 IAM 控制台将所有必需的操作包括在权限边界中。
  • 如果您使用 AWS Organizations,请确认您没有任何显式拒绝 Amazon SES 操作的 SCP。
  • 对于跨账户发送,请检查发送身份的授权策略是否向 IAM 身份授予了所需的权限。

解决方法

检查 IAM 身份是否拥有 ses:SendEmail 和 ses:SendRawEmail 权限

确保您的 IAM 身份拥有发送电子邮件的正确权限。

请遵循以下步骤:

  1. 打开 IAM 控制台
  2. 选择用于发送电子邮件的 IAM 用户或角色。
  3. 选择您用于发送电子邮件的 IAM 身份名称。
  4. 在您的 IAM 身份的 Permissions(权限)选项卡中,展开每个策略以查看其 JSON 策略文档。
  5. 搜索与 Amazon SES 访问相关的策略。然后,确认您拥有 ses:SendEmailses:SendRawEmail 操作的权限。

以下示例 IAM policy 允许 IAM 身份发送电子邮件:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ses:SendEmail",
        "ses:SendRawEmail"
      ],
      "Resource": "*"
    }
  ]
}

**注意:**查看 SendEmailSendRawEmail,了解您可以使用每种操作采取哪些发送操作的相关信息。如果 IAM policy 不存在,则创建一个 IAM policy 以授予您发送电子邮件的权限。

检查是否有任何阻止访问的拒绝语句

查看 IAM 策略中是否存在任何可能拒绝发送电子邮件的拒绝语句。

如果有拒绝语句,则根据以下各项检查阻止访问的条件:

  • ses:Recipients
  • ses:FromAddress
  • ses:FromDisplayName
  • ses:FeedbackAddress
  • aws:CurrentTime
  • aws:EpochTime
  • aws:SecureTransport
  • aws:SourceIp
  • aws:UserAgent

确认 IAM 权限边界允许访问 Amazon SES

查看在尝试访问 Amazon SES 的 IAM 身份上设置的 IAM 权限边界。确认 IAM 权限边界允许访问 Amazon SES。有关更多信息,请参阅使用权限边界将责任委派给其他人

检查是否有任何 AWS Organizations SCP 不允许 Amazon SES 访问

如果您使用的是 AWS Organizations,请查看 SPC 中是否有显式拒绝 ses:SendEmail 和 ses:SendRawEmail 或任何其他 Amazon SES 操作的语句。删除根据贵组织的安全策略显式拒绝 Amazon SES 操作的服务控制策略。

例如,以下策略拒绝对所有 Amazon SES 操作的访问:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": “ses:*”,
      "Resource": "*"
    }
  ]
}

检查 Amazon SES 中的发送授权策略是否向委托发件人授予权限

当您授权其他用户使用您拥有的身份发送电子邮件时,请检查授权策略是否具有正确的权限。此外,请检查是否存在任何显式拒绝语句。确保发件人在您验证身份所在的 AWS 区域中使用相同的 Amazon SES 端点。您必须将自己(身份所有者)和委托发件人从沙盒中移除,才能向未经验证的地址发送电子邮件。要查看、编辑或删除策略,请参阅管理您的发送授权策略


AWS 官方
AWS 官方已更新 1 年前