![](/img/trans.png)
[英]how to create an iam role with policy that grants access to the SQS created
[英]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?
在root 帐户中,我有一个经过验证的域身份,用于为交易电子邮件创建email 身份。
现在,我创建了一个新的 IAM 帐户。
我想向这个IAM 账户附加一个策略,允许它使用根账户中经过验证的域身份创建经过验证的 email 身份。
并且他不能在 root 帐户中列出或使用经过验证的 email 身份。
我应该为此使用内联策略(我知道应该避免并作为最后的手段)还是正常的权限配置?
如果是这样,我应该如何编写或选择这样的政策?
编辑 1:当我尝试使用IAM 帐户创建 email 时,只是为了看看 AWS 会说什么,这是通知中写的:
您没有足够的访问权限来执行此操作。
用户:arn:aws:iam::122443365328:user/iam-user-name 无权执行:ses:CreateEmailIdentity on resource:
arn:aws:ses:us-region:122443365328:identity/test@dmain_name.com 因为没有基于身份的策略允许 ses:CreateEmailIdentity 操作
当我在内联策略创建仪表板中搜索CreateEmailIdentity
时,没有找到:
编辑2:
当我选择SES-v2
作为服务时,我实际上已经找到了它:
我已授予 IAM 用户以下权限:
我添加了已验证域名的ARN :
这是结果:
但是,当我尝试使用IAM 帐户创建email 身份时,我仍然得到这个:
您没有足够的访问权限来执行此操作。 用户:arn:aws:iam::12xxxxxx5328:user/iam-user-name 无权执行:ses:CreateEmailIdentity on resource:arn:aws:ses:us-west-2:122443365328:identity/dev@domain_name。 com 因为没有基于身份的策略允许 ses:CreateEmailIdentity 操作
我在这里不明白的是没有被授权在我试图创建的资源上执行ses:CreateEmailIdentity
的含义,即新的 email。
如何授权我在仍然不存在的email 身份上执行此操作。
编辑 3:
即使在使用root 用户创建了 email 并授予IAM 用户使用此策略使用该 email 发送电子邮件的特权之后:
{
"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": {}
}
]
}
当我在后端发送 email 时,会记录以下内容:
~ 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上发送 email ,但应用于Domain Identity 。
现在,可以使用 IAM 用户凭证发送电子邮件。
问题是他可以使用所有经过验证的 email 身份发送电子邮件。
但是,我希望他能够通过仅使用专门为该IAM 用户创建的相应 email 身份来做到这一点。
注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
等创建 email 身份,因为 '*' 是通配符。 如果要将其限制为特定的 email 身份,还可以将"arn:aws:ses:us-west-2:12xxxxxxxx28:identity/test@domain_name.com"
指定为资源。
如果出现以下情况,我可以复制该问题:
domain_name.com
email 身份已正确创建和验证sesv2 CreateEmailIdentity
创建test@domain_name.com
email 身份,但实际上并没有通过单击 AWS 发送的验证 Z0C83F57C786A0B4A39EFAB23731C7EBC 中的确认链接来验证它。 控制台会说 email 身份已验证(因为 email 身份domain_name.com
已验证整个域),但这是不正确的。 aws sesv2 list-email-identities
提供所有 email 身份的实际验证状态。 In scenarios where the domain identity ( domain_name.com
) is verified but not the specific email identity ( test@domain_name.com
), AWS tries to use the domain_name.com
email identity to send the email, which is blocked by your IAM policy. 如果您尝试强制它使用test@domain_name.com
email身份(SES SendEmail 中的SourceArn ,SES V2 SendEmail 中的 FromEmailAddressIdentityArn),它会给您正确的“电子邮件身份未验证”错误。
如果test@domain_name.com
email 身份确实经过验证,则它可以正常工作。
我应该为此使用内联策略(我知道应该避免并作为最后的手段)还是正常的权限配置?
我不知道您所说的“正常权限配置”是什么意思,但是您可以将三种类型的策略附加到 IAM 用户:
如何授权我在仍然不存在的 email 身份上执行此操作。
ARN 格式完全取决于 email 或正在验证的域,这就是为什么即使事先不存在资源也可以将其添加到 IAM 策略中的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.