我嘗試使用 Amazon Simple Email Service (Amazon SES) 傳送電子郵件,但一直收到「未經授權」的錯誤。
簡短描述
由於以下原因,可能會出現「未經授權」錯誤:
- 您使用不正確的 AWS Identity and Access Management (IAM) 使用者或角色傳送電子郵件。
- 您使用的 IAM 身分沒有 ses:SendEmail 或 ses:SendRawEmail 許可。
- IAM 政策或授權政策拒絕您對 ses:SendEmail 或 ses:SendRawEmail 操作的 IAM 身分許可。
- IAM 許可邊界不允許存取 Amazon SES。
- AWS Organizations 服務控制政策 (SCP) 不允許 Amazon SES 存取。
- 對於跨帳戶傳送:傳送身分的授權政策不允許 IAM 身分傳送電子郵件。
若要解決授權錯誤,請按照以下步驟操作:
- 確認您使用正確的 IAM 身分傳送電子郵件。
- 確認 IAM 身分具有 ses:SendEmail 和 ses:SendRawEmail 許可以傳送電子郵件。
- 檢查 IAM 政策或授權政策中是否有任何封鎖存取的拒絕陳述式。
- 檢查是否某個動作在您的 IAM 政策中得到允許,而在許可界限中未得到允許。
- 使用 IAM 主控台在許可界限內包含所有必需的動作。
- 如果您使用 AWS Organizations,請確認您沒有任何明確拒絕 Amazon SES 操作的 SCP。
- 對於跨帳戶傳送,請檢查傳送身分的授權政策是否有授予 IAM 身分所需的許可。
解決方案
檢查 IAM 身分是否具有 ses:SendEmail 和 ses:SendRawEmail 許可
確認您的 IAM 身分具有傳送電子郵件的正確許可。
請按照以下步驟操作:
- 開啟 IAM 主控台。
- 選取用於傳送電子郵件的 IAM 使用者或角色。
- 選取用於傳送電子郵件的 IAM 身分名稱。
- 在您的 IAM 身分的 Permissions (許可) 標籤,展開每個政策以檢視其 JSON 政策文件。
- 搜尋與 Amazon SES 存取相關的政策。然後,確認您具有 ses:SendEmail 或 ses:SendRawEmail 操作的許可。
下列 IAM 政策範例可讓 IAM 身分傳送電子郵件:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "*"
}
]
}
**注意:**請檢閱 SendEmail 和 SendRawEmail,了解您分別可以用其來執行哪個傳送操作。如果 IAM 政策不存在,請建立 IAM 政策以授予您傳送電子郵件的存取權。
檢查是否有任何封鎖存取的拒絕陳述式
檢查 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。如需詳細資訊,請參閱使用許可邊界將責任委派給其他人。
檢查是否有任何不允許 Amazon SES 存取的 AWS Organizations SCP
如果您使用 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 端點,與您用於驗證身分的端點相同。您必須從沙盒中刪除自己 (身分擁有者) 和委派寄件者,以將電子郵件傳送到未驗證的地址。若要檢視、編輯或移除政策,請參閱管理您的傳送授權政策。