向 Amazon 授予接收电子邮件SES的权限 - Amazon Simple Email Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

向 Amazon 授予接收电子邮件SES的权限

当您在中收到电子邮件时可以执行的某些任务SES,例如向亚马逊简单存储服务 (Amazon S3) 存储桶发送电子邮件或调用 AWS Lambda 函数,需要特殊权限。本节包含几个常用案例的示例策略。

为 “传送到 S3 存储桶” 操作设置IAM角色权限

以下几点适用于此IAM角色:

如果要写入 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授AddPermissionAPI予了调用您的 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": "*" } ] }