本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
向 Amazon 授予接收电子邮件SES的权限
当您在中收到电子邮件时可以执行的某些任务SES,例如向亚马逊简单存储服务 (Amazon S3) 存储桶发送电子邮件或调用 AWS Lambda 函数,需要特殊权限。本节包含几个常用案例的示例策略。
本节中的主题:
为 “传送到 S3 存储桶” 操作设置IAM角色权限
以下几点适用于此IAM角色:
-
它只能用于交付到 S3 存储桶操作。
-
如果要写入存在于不可用的区域中的 S3 存储桶,则必须使用该存储SES电子邮件接收桶。
如果要写入 S3 存储桶,您可以为IAM角色提供访问相关资源的权限交付到 S3 存储桶操作。您还需要SES授予权限才能代入该角色才能通过IAM信任策略执行操作,如下一节所述。
必须将此权限策略粘贴到IAM角色的内联策略编辑器中,请参阅交付到 S3 存储桶操作并按照角色项目中给出的步骤进行操作。IAM(以下示例还包括可选权限,供您使用SNS主题通知时使用,或者在 S3 操作中使用客户托管密钥。)
{ "Version": "2012-10-17", "Statement": [ // Required: allows SES to write in the bucket { "Sid": "S3Access", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
my-bucket
/*" }, // Optional: use if an SNS topic is used in the S3 action { "Sid": "SNSAccess", "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:region
:111122223333
:my-topic
" }, // Optional: use if a customer managed key is used in the S3 action { "Sid": "KMSAccess", "Effect": "Allow", "Action": "kms:GenerateDataKey*", "Resource": "arn:aws:kms:region
::111122223333
:key/key-id
" } ] }
对前面的策略示例进行以下更改:
-
Replace(替换)
my-bucket
使用您要写入的 S3 存储桶的名称。 -
Replace(替换)
region
以及您创建接收规则 AWS 区域 的位置。 -
Replace(替换)
111122223333
使用您的 AWS 账户 ID。 -
Replace(替换)
my-topic
以及您要向其发布通知的SNS主题的名称。 -
Replace(替换)
key-id
附上您的KMS密钥的 ID。
S3 操作IAM角色的信任策略
应将以下信任策略添加到IAM角色的信任关系中,SES以允许担任该角色。
注意
仅当您未使用交付到 S3 存储桶操作工作流程角色项目中给出的步骤从SES控制台创建IAM角色时,才需要手动添加此信任策略。IAM当您从控制台创建IAM角色时,系统会自动生成此信任策略并将其应用于该角色,因此无需执行此步骤。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSESAssume", "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "AWS:SourceAccount":"
111122223333
", "AWS:SourceArn": "arn:aws:ses:region
:111122223333
:receipt-rule-set/rule_set_name
:receipt-rule/receipt_rule_name
" } } } ] }
对前面的策略示例进行以下更改:
-
Replace(替换)
region
以及您创建接收规则 AWS 区域 的位置。 -
Replace(替换)
111122223333
使用您的 AWS 账户 ID。 -
Replace(替换)
rule_set_name
使用包含接收规则的规则集的名称,该规则包含传送到 Amazon S3 存储桶操作。 -
Replace(替换)
receipt_rule_name
使用包含传送到 Amazon S3 存储桶操作的接收规则的名称。
SES授予写入 S3 存储桶的权限
当您将以下策略应用于 S3 存储桶时,只要该存储桶存在于可以接收SES电子邮件的区域,它就会授予写入该存储桶的SES权限,如果您想写入电子邮件接收区域之外的存储桶,请参阅。为 “传送到 S3 存储桶” 操作设置IAM角色权限有关创建接收规则,向 Amazon S3 传输传入电子邮件的更多信息,请参阅交付到 S3 存储桶操作。
有关将策略附加到 S3 的存储桶的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用存储桶策略和用户策略。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowSESPuts", "Effect":"Allow", "Principal":{ "Service":"ses.amazonaws.com" }, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::
myBucket
/*", "Condition":{ "StringEquals":{ "AWS:SourceAccount":"111122223333
", "AWS:SourceArn": "arn:aws:ses:region
:111122223333
:receipt-rule-set/rule_set_name
:receipt-rule/receipt_rule_name
" } } } ] }
对前面的策略示例进行以下更改:
-
Replace(替换)
myBucket
使用您要写入的 S3 存储桶的名称。 -
Replace(替换)
region
以及您创建接收规则的 AWS 区域。 -
Replace(替换)
111122223333
使用您的 AWS 账户 ID。 -
Replace(替换)
rule_set_name
使用包含接收规则的规则集的名称,该规则包含传送到 Amazon S3 存储桶操作。 -
Replace(替换)
receipt_rule_name
使用包含传送到 Amazon S3 存储桶操作的接收规则的名称。
SES授予使用您的 AWS KMS 密钥的权限
SES为了加密您的电子邮件,它必须有权使用您在设置接收规则时指定的 AWS KMS 密钥。您可以在账户中使用默认KMS密钥 (aws/ses),也可以使用您创建的客户托管密钥。如果您使用默认KMS密钥,则无需执行任何其他步骤即可授予使用该密钥的SES权限。如果您使用客户管理的密钥,则需要通过在密钥的政策中添加声明来授予使用SES权限。
使用以下政策声明作为密钥政策,SES允许客户在您的域名上收到电子邮件时使用您的客户托管密钥。
{ "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", "Effect": "Allow", "Principal": { "Service":"ses.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*" ], "Resource": "*", "Condition":{ "StringEquals":{ "AWS:SourceAccount":"
111122223333
", "AWS:SourceArn": "arn:aws:ses:region
:111122223333
:receipt-rule-set/rule_set_name
:receipt-rule/receipt_rule_name
" } } }
对前面的策略示例进行以下更改:
-
Replace(替换)
region
以及您创建接收规则的 AWS 区域。 -
Replace(替换)
111122223333
使用您的 AWS 账户 ID。 -
Replace(替换)
rule_set_name
使用包含您与电子邮件接收关联的接收规则的规则集的名称。 -
Replace(替换)
receipt_rule_name
使用您与电子邮件接收关联的接收规则的名称。
如果您使用 AWS KMS 向启用服务器端加密的 S3 存储桶发送加密消息,则需要添加策略操作。"kms:Decrypt"
使用前面的示例,将此操作添加到策略中,如下所示:
{ "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", "Effect": "Allow", "Principal": { "Service":"ses.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition":{ "StringEquals":{ "AWS:SourceAccount":"
111122223333
", "AWS:SourceArn": "arn:aws:ses:region
:111122223333
:receipt-rule-set/rule_set_name
:receipt-rule/receipt_rule_name
" } } }
有关为 AWS KMS 密钥附加策略的更多信息,请参阅《AWS Key Management Service 开发人员指南》AWS KMS中的使用密钥策略。
授SES予调用 AWS Lambda 函数的权限
SES要启用调用 AWS Lambda 函数,可以在SES控制台中创建接收规则时选择该函数。当你这样做时,SES会自动向函数添加必要的权限。
或者,您可以使用中的AddPermission
操作将策略附加 AWS Lambda
API到函数。以下对的调用SES授AddPermission
API予了调用您的 Lambda 函数的权限。有关向 Lambda 函数附加策略的更多信息,请参阅《AWS Lambda 开发人员指南》中的 AWS Lambda
权限。
{ "Action": "lambda:InvokeFunction", "Principal": "ses.amazonaws.com", "SourceAccount": "
111122223333
", "SourceArn": "arn:aws:ses:region
:111122223333
:receipt-rule-set/rule_set_name
:receipt-rule/receipt_rule_name
" "StatementId": "GiveSESPermissionToInvokeFunction" }
对前面的策略示例进行以下更改:
-
Replace(替换)
region
以及您创建接收规则的 AWS 区域。 -
Replace(替换)
111122223333
使用您的 AWS 账户 ID。 -
Replace(替换)
rule_set_name
使用包含您在其中创建 Lambda 函数的接收规则的规则集的名称。 -
Replace(替换)
receipt_rule_name
使用包含您的 Lambda 函数的接收规则的名称。
授SES予发布属于不同 AWS 账户的 Amazon SNS 主题的权限
要在单独的 AWS 账户中发布针对某个主题的通知,您必须在 Amazon SNS 主题中附加政策。该SNS主题必须与域名和接收规则集位于同一区域。
以下政策SES允许使用单独的 AWS 账户向 Amazon SNS 主题发布内容。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"ses.amazonaws.com" }, "Action":"SNS:Publish", "Resource":"arn:aws:sns:
topic_region
:sns_topic_account_id
:topic_name
", "Condition":{ "StringEquals":{ "AWS:SourceAccount":"aws_account_id
", "AWS:SourceArn": "arn:aws:ses:receipt_region
:aws_account_id
:receipt-rule-set/rule_set_name
:receipt-rule/receipt_rule_name
" } } } ] }
对前面的策略示例进行以下更改:
-
Replace(替换)
topic_region
而 AWS 区域 且 Amazon SNS 话题是在其中创建的。 -
Replace(替换)
sns_topic_account_id
使用拥有 Amazon SNS 话题的 AWS 账户的 ID。 -
Replace(替换)
topic_name
使用您要向其发布通知的 Amazon SNS 主题的名称。 -
Replace(替换)
aws_account_id
使用配置为接收电子邮件的 AWS 帐户的 ID。 -
Replace(替换)
receipt_region
以及您创建接收规则 AWS 区域 的位置。 -
Replace(替换)
rule_set_name
使用包含您在其中创建 “发布到 Amazon” SNS 主题操作的接收规则的规则集的名称。 -
Replace(替换)
receipt_rule_name
包含发布到 Amazon SNS 主题操作的接收规则名称。
如果您的 Amazon SNS 主题 AWS KMS 用于服务器端加密,则必须向 AWS KMS 密钥策略添加权限。您可以通过将以下策略附加到 AWS KMS 密钥策略来添加权限:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSESToUseKMSKey", "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" } ] }