Amazon Simple Email Service (Amazon SES) を使用して E メールを送信しようとしていますが、「Unauthorized 」エラーが発生します。
簡単な説明
「Unauthorized 」エラーは、次の理由で発生する可能性があります。
- 間違った AWS Identity and Access Management (IAM) ユーザーまたはロールを使用して E メールを送信した。
- 使用している IAM ID には ses:SendEmail または ses:SendRawEmail のアクセス許可がない。
- IAM ポリシーまたは認証ポリシーでは、ses:SendEmail または ses:SendRawEmail アクションの IAM ID アクセス許可が拒否されている。
- IAM アクセス許可境界では、Amazon SES へのアクセスが許可されていない。
- AWS Organizations のサービスコントロールポリシー (SCP) が、Amazon SES へのアクセスを許可していない。
- クロスアカウント送信の場合: 送信アイデンティティの認証ポリシーでは、IAM アイデンティティによるメールの送信は許可されていない。
認証エラーのトラブルシューティングを行うには、次のステップに従います。
- 正しい IAM ID を使用して E メールを送信していることを確認する。
- IAM ID に E メールを送信するためのses:SendEmail および ses:SendRawEmail のアクセス許可があることを確認する。
- アクセスをブロックしている拒否ステートメントが IAM ポリシーまたは承認ポリシーにないか確認する。
- IAM ポリシーで許可されているアクションが、アクセス許可境界では許可されていないかを確認する。
- IAM コンソールを使用して、必要なすべてのアクションをアクセス許可境界に含める。
- AWS Organizations を使用している場合は、Amazon SES アクションを明示的に拒否する SCP がないことを確認する。
- クロスアカウント送信の場合、送信アイデンティティの認証ポリシーが IAM アイデンティティに必要なアクセス許可を付与していることを確認する。
解決方法
IAM アイデンティティに ses:SendEmail と ses:SendRawEmail のアクセス許可があることを確認する
IAM ID に E メールを送信するための正しいアクセス許可があることを確認してください。
次の手順を実行します。
- IAM コンソールを開きます。
- E メールの送信に使用する IAM ユーザーまたはロールを選択します。
- E メールの送信に使用している IAM ID 名を選択します。
- IAM アイデンティティの [Permissions] (アクセス許可) タブで、各ポリシーを展開し、その JSON ポリシードキュメントを表示します。
- Amazon SES アクセスに関連するポリシーを検索します。次に、 ses:SendEmail または ses:SendRawEmail アクションのアクセス許可があることを確認します。
以下の IAM ポリシーの例では、IAM ID による E メールの送信を許可しています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "*"
}
]
}
**注:**それぞれで実行できる送信アクションについては、「SendEmail」および「SendRawEmail」を参照してください。IAM ポリシーが存在しない場合は、メールを送信するためのアクセス許可を付与する IAM ポリシーを作成します。
アクセスをブロックする拒否ステートメントがないか確認する
E メール送信アクセス権を拒否している可能性のある拒否ステートメントがないか、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 ID に設定されている IAM アクセス許可境界を確認します。IAM アクセス許可境界で Amazon SES へのアクセスを許可されていることを確認します。詳細については、「Delegating responsibility to others using permissions boundaries」(アクセス許可境界を使用して他のユーザーに責任を委任する) を参照してください。
Amazon SES へのアクセスを許可しない AWS Organizations の SCP がないか確認する
AWS Organizations を使用している場合は、ses:SendEmail および ses:SendRawEmail 、またはその他の Amazon SES アクションを明示的に拒否するステートメントがないか SPC を確認してください。組織のセキュリティポリシーに従って Amazon SES アクションを明示的に拒否するサービスコントロールポリシーを削除します。
例えば、次のポリシーは、すべての Amazon SES アクションへのアクセスを拒否します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": “ses:*”,
"Resource": "*"
}
]
}
Amazon SES の送信承認ポリシーが代理の送信者にアクセス許可を付与していることを確認する
自分が所有する ID から E メール送信できるように他のユーザーに許可する場合は、承認ポリシーに正しいアクセス許可があることを確認してください。また、明示的な拒否ステートメントがないか確認してください。アイデンティティを検証した AWS リージョンで、送信者が同じ Amazon SES エンドポイントを使用していることを確認してください。未検証のアドレスに E メールを送信するには、自分自身 (アイデンティティ 所有者) と代理の送信者をサンドボックスから削除する必要があります。ポリシーを表示、編集、削除するには、「Managing your sending authorization policies」(送信承認ポリシーの管理) を参照してください。