- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在根帐户中,我有一个经过验证的域身份,我用它来为交易电子邮件创建一个电子邮件身份。
现在,我创建了一个新的 IAM 帐户。
我想为这个 IAM 帐户 附加一个策略,允许它使用那个已验证的创建一个已验证的电子邮件身份根帐户中的域身份。
并且他必须无法列出或使用根帐户中的已验证电子邮件身份。
我应该为此使用内联策略(我知道应该避免并留作最后的手段)还是正常权限配置?
如果是这样,我应该如何编写或选择这样的策略?
编辑 1:当我尝试使用 IAM 帐户 创建电子邮件时,只是想看看 AWS 会说什么,通知中是这样写的:
You do not have sufficient access to perform this action.
User: arn:aws:iam::122443365328:user/iam-user-name is notauthorized to perform: ses:CreateEmailIdentity on resource:
arn:aws:ses:us-region:122443365328:identity/test@dmain_name.com because noidentity-based policy allows the ses:CreateEmailIdentity action
当我在内联策略创建仪表板中搜索 CreateEmailIdentity
时,找不到它:
编辑 2:
当我选择 SES-v2
作为服务时,我实际上已经找到了它:
我已授予 IAM 用户以下权限:
我添加了验证域名的ARN:
这是结果:
但是,当我尝试使用 IAM 帐户 创建一个电子邮件身份 时,我仍然得到这个:
You do not have sufficient access to perform this action. User:arn:aws:iam::12xxxxxx5328:user/iam-user-name is not authorized toperform: ses:CreateEmailIdentity on resource:arn:aws:ses:us-west-2:122443365328:identity/dev@domain_name.combecause no identity-based policy allows the ses:CreateEmailIdentityaction
我在这里不明白的是未被授权对我正在尝试创建的资源(即新电子邮件)执行 ses:CreateEmailIdentity
的含义。
我怎样才能获得授权在一个仍然不存在的电子邮件身份上执行此操作。
编辑 3:
即使在使用 root 用户 创建电子邮件并授予 IAM 用户 使用此策略使用该电子邮件发送电子邮件的特权之后:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "stmt1643366831422",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::12xxxxxx328:user/iam-user-name"
},
"Action": [
"ses:SendEmail",
"ses:SendRawEmail",
"ses:SendTemplatedEmail",
"ses:SendBulkTemplatedEmail"
],
"Resource": "arn:aws:ses:us-west-2:12xxxxxxxx28:identity/test2@domain_name.com",
"Condition": {}
}
]
}
当我在后端发送电子邮件时,记录的内容如下:
🚀 ~ file: emailServices.js ~ line 297 ~ .then ~ error AccessDenied:User
arn:aws:iam::12xxxxx5328:user/iam-user-name' is not authorized to perform
ses:SendEmail' on resource`arn:aws:ses:us-west-2:1xxxxx28:identity/domain_name.com'
然后我授权 iam 用户在 Domain Identity 上使用相同的策略发送电子邮件,但应用于 Domain Identity。
现在,可以使用 IAM 用户凭证发送电子邮件了。
问题是他可以使用所有已验证的电子邮件身份 发送电子邮件。
但是,我希望他仅使用专门为该 IAM 用户 创建的相应电子邮件身份 即可。
注意 1:
我知道我不应该使用根账户,而应该只使用 IAM 账户。
最佳答案
您的 IAM 策略需要类似于以下内容:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CreateEmailIdentity",
"Effect": "Allow",
"Action": "ses:CreateEmailIdentity",
"Resource": "arn:aws:ses:us-west-2:12xxxxxxxx28:identity/*@domain_name.com"
}
]
}
请注意,我使用的是 *@domain_name.com
而不是 domain_name.com
。这将允许您为 test@domain.com
、test2@domain.com
等创建电子邮件身份,因为“*”是通配符。如果您想将资源限制为特定的电子邮件身份,您还可以将 "arn:aws:ses:us-west-2:12xxxxxxxx28:identity/test@domain_name.com"
指定为资源。
如果出现以下情况,我可以重现该问题:
domain_name.com
电子邮件身份已正确创建和验证sesv2 CreateEmailIdentity
创建了 test@domain_name.com
电子邮件身份,但实际上并没有通过单击 AWS 发送的验证电子邮件中的确认链接来验证它。控制台会说电子邮件身份已验证(因为整个域的电子邮件身份 domain_name.com
已验证),但这是不正确的。 aws sesv2 list-email-identities
给出了所有电子邮件身份的实际验证状态。在验证域身份 (domain_name.com
) 但未验证特定电子邮件身份 (test@domain_name.com
) 的情况下,AWS 会尝试使用 domain_name.com
电子邮件身份发送电子邮件,这被您的 IAM 策略阻止。如果您尝试强制它使用 test@domain_name.com
电子邮件身份(SES SendEmail 中的 SourceArn,SES V2 SendEmail 中的 FromEmailAddressIdentityArn ),它将为您提供正确的“电子邮件身份是未验证'错误。
如果 test@domain_name.com
电子邮件身份确实经过验证,则它可以正常工作。
Should I use an inline policy for this (which I know should be avoided and left as a last resort) or normal permission configuration?
我不知道您所说的“正常权限配置”是什么意思,但是您可以将三种类型的策略附加到 IAM 用户:
How can I be authorized to do that on an email identity that still doesn't exist.
ARN 格式完全取决于要验证的电子邮件或域,这就是为什么即使资源事先不存在,您也可以将其添加到 IAM 策略中。
关于amazon-web-services - AWS : How to attach a policy to an IAM user that grants him the privilege to create a verified identity and not access root identities?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70890811/
我是一名优秀的程序员,十分优秀!