【发布时间】:2017-02-01 09:22:55
【问题描述】:
所以我的项目在 ec2 实例的服务器上运行,它使用 SES 发送电子邮件。当 SES 可供公众访问时,我能够发送电子邮件,但是当我尝试实施安全性时,它开始出现问题。我已将以下身份策略附加到 SES 电子邮件地址,一个阻止公开访问,另一个允许 ec2 访问 SES 电子邮件地址。但我总是被错误阻止:
The email was not sent.Error message: User `arn_of_ec2_role' is not authorized to perform
`ses:SendEmail' on resource `arn_of_email_address' (Service: AmazonSimpleEmailService;
Status Code: 403; Error Code: AccessDenied;
Request ID: b92h2a02-4502-32g8-8334-9504941fdefd4e35)
我的政策是:
允许 ec2:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "stmt8473824324",
"Effect": "Allow",
"Principal": {
"AWS": "arn_of_role_used_by_ec2"
},
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "arn_of_email"
}
]
}
拒绝公开:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "arn_of_email"
}
]
}
编辑 1: 原来我只需要将封装 {} 添加到“AWS”:“arn_of_role_used_by_ec2”。但即便如此,我也没有获得许可。我仍然遇到同样的错误。为了验证,我什至使用了用户策略并尝试使用该用户访问它,但即便如此我也得到了同样的错误,只是现在拒绝了不同的 arn。我的政策如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"NotPrincipal": {
"AWS": "arn_of_role_used_by_ec2"
},
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "arn_of_email"
}
]
}
编辑2:
抱歉回复晚了,以下是我根据您的更新所做的:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "stmt1476011587135",
"Effect": "Allow",
"Principal": "*",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "arn_of_email",
"Condition": {
"StringEquals": {
"aws:SourceArn": "arn_of_ecs_instance"
}
}
}
]
}
和
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "stmt1476011639899",
"Effect": "Deny",
"Principal": "*",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "arn_of_email",
"Condition": {
"StringNotEquals": {
"aws:SourceArn": "arn_of_ecs_instance"
}
}
}
]
}
使用 arn_of_ecs_instance 因为我只是在与 IAM 用户进行验证,并且只需要 ec2 实例的访问权限。但我仍然可以通过 java API 发送电子邮件地址,同时使用 My IAM 用户凭据发送邮件。
【问题讨论】:
-
尝试将所有政策中的资源发送至
*。 -
@MattHouser 我试过了,但我得到了错误 应用策略时出错:无效的 ARN:ARN 必须以 'arn:' 开头:*(请求 ID:4b922926-83e8-11e6- 8845-5946c19d3615) 因为我将政策附加到特定的电子邮件地址。我什至尝试过 "Resource": "arn:aws:ses:us-east-1:453679034254:identity/*" 我收到错误 应用策略时出错:预期资源是'arn_of_email' 但是 'arn:aws:ses:us-east-1:453679034254:identity/*'。
标签: amazon-web-services amazon-ec2 policy amazon-ses