傳送政策範例 - Amazon Simple Email Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

傳送政策範例

傳送授權可讓您指定精確的條件,需符合這些條件才可允許委託寄件者代表您傳送。

發送授權的特定條件

條件是關於陳述式內許可的任何限制。指定條件的陳述式部分可能是所有部分中最詳細的。金鑰是做為存取限制基準的特定特性,例如請求的日期和時間。

您同時使用條件和金鑰來表達限制。例如,若您希望限制委派寄件者代表您在 2019 年 7 月 30 日後向 Amazon SES 發出請求,您可以使用稱為 DateLessThan 的條件。您可以使用稱為 aws:CurrentTime的金鑰並將其設定為 2019-07-30T00:00:00Z 的值。

您可以使用《IAM 使用者指南》中的可用金鑰裡列出的任何全 AWS 金鑰,也可以使用下列在傳送授權政策中很有用的 SES 特定金鑰:

條件金鑰

描述

ses:Recipients

限制收件人地址,包括:「收件人」、「副本」和「密件副本」地址。

ses:FromAddress

限制「寄件人」地址。

ses:FromDisplayName

限制用於「寄件人」顯示名稱的字串內容 (有時稱為「方便從」)。例如,"John Doe <johndoe@example.com>" 的顯示名稱為 John Doe。

ses:FeedbackAddress

限制「傳回路徑」地址,此地址可使用電子郵件意見回饋轉送功能來接收退信和投訴。如需關於電子郵件意見轉送功能的詳細資訊,請參閱 透過電子郵件接收 Amazon SES 通知

您可以搭配 Amazon SES 金鑰使用 StringEqualsStringLike 條件。這些條件用於區分大小寫字串的比對。針對 StringLike,其值可以在字串中的任何位置包含多字元比對萬用字元 (*) 或單一字元比對萬用字元 (?)。例如,以下條件會指定委派寄件者只能從以 invoicing 為開頭、以 @example.com 為結尾的 "From" 地址傳送:

"Condition": { "StringLike": { "ses:FromAddress": "invoicing*@example.com" } }

您也可以使用 StringNotLike 條件,防止委託寄件者從特定電子郵件地址傳送電子郵件。例如,您可以在政策陳述式中包含以下條件,禁止從 admin@example.com 以及類似地址進行傳送,例如 "admin"@example.comadmin+1@example.comsender@admin.example.com

"Condition": { "StringNotLike": { "ses:FromAddress": "*admin*example.com" } }

如需指定條件的詳細資訊,請參閱 IAM 使用者指南中的 IAM JSON 政策元素:條件

指定委託寄件者

委託人 (也就是您授予許可的實體) 可以是 AWS 帳戶 帳戶、AWS Identity and Access Management (IAM) 使用者、或 AWS 服務。

以下範例示範一個簡單的政策,允許 AWS ID 123456789012 從驗證身分 example.com 傳送電子郵件 (該身分為 AWS 帳戶 888888888888 所有)。此政策中的 Condition 陳述式只允許委派 (即 AWS ID 123456789012) 從地址 marketing+.*@example.com 傳送電子郵件。其中,* 是寄件者想要在 marketing+. 之後新增的任何字串。

{ "Id":"SampleAuthorizationPolicy", "Version":"2012-10-17", "Statement":[ { "Sid":"AuthorizeMarketer", "Effect":"Allow", "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com", "Principal":{ "AWS":[ "123456789012" ] }, "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Condition":{ "StringLike":{ "ses:FromAddress":"marketing+.*@example.com" } } } ] }

以下範例政策授予兩個 IAM 使用者從身分 example.com 傳送的許可。IAM 使用者由他們的 Amazon Resource Name (ARN) 指定。

{ "Id":"ExampleAuthorizationPolicy", "Version":"2012-10-17", "Statement":[ { "Sid":"AuthorizeIAMUser", "Effect":"Allow", "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com", "Principal":{ "AWS":[ "arn:aws:iam::111122223333:user/John", "arn:aws:iam::444455556666:user/Jane" ] }, "Action":[ "ses:SendEmail", "ses:SendRawEmail" ] } ] }

以下範例政策將許可授予 Amazon Cognito,允許其從身分 example.com 傳送。

{ "Id":"ExampleAuthorizationPolicy", "Version":"2012-10-17", "Statement":[ { "Sid":"AuthorizeService", "Effect":"Allow", "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com", "Principal":{ "Service":[ "cognito-idp.amazonaws.com" ] }, "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Condition": { "StringEquals": { "aws:SourceAccount": "888888888888", "aws:SourceArn": "arn:aws:cognito-idp:us-east-1:888888888888:userpool/your-user-pool-id-goes-here" } } } ] }

以下範例政策將許可授予 AWS Organizations 中的所有帳戶,允許其從身分 example.com 傳送。AWS Organizations 是使用 PrincipalOrgID 全域條件索引鍵所指定。

{ "Id":"ExampleAuthorizationPolicy", "Version":"2012-10-17", "Statement":[ { "Sid":"AuthorizeOrg", "Effect":"Allow", "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com", "Principal":"*", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Condition":{ "StringEquals":{ "aws:PrincipalOrgID":"o-xxxxxxxxxxx" } } } ] }

限制「寄件人」地址

如果您使用驗證網域,可以會想要建立一個政策,只允許委託寄件者從指定的電子郵件地址中傳送。若要限制「寄件人」的地址,您需要在鍵上設定一個稱為 ses:FromAddress 的條件。以下政策可讓 AWS 帳戶 ID 123456789012 從身分 example.com 傳送,但只能從電子郵件地址 sender@example.com 傳送。

{ "Id":"ExamplePolicy", "Version":"2012-10-17", "Statement":[ { "Sid":"AuthorizeFromAddress", "Effect":"Allow", "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com", "Principal":{ "AWS":[ "123456789012" ] }, "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Condition":{ "StringEquals":{ "ses:FromAddress":"sender@example.com" } } } ] }

限制受委託者可傳送電子郵件的時間

您也可以設定您的寄件者授權政策,因讓委託寄件者僅可於一天中的特定時間或者在特定日期範圍內傳送電子郵件。例如,如果您計劃在 2021 年 9 月傳送電子郵件行銷活動,您可以使用以下政策來限制受委託人僅能在該月份內傳送電子郵件。

{ "Id":"ExamplePolicy", "Version":"2012-10-17", "Statement":[ { "Sid":"ControlTimePeriod", "Effect":"Allow", "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com", "Principal":{ "AWS":[ "123456789012" ] }, "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Condition":{ "DateGreaterThan":{ "aws:CurrentTime":"2021-08-31T12:00Z" }, "DateLessThan":{ "aws:CurrentTime":"2021-10-01T12:00Z" } } } ] }

限制電子郵件傳送動作

寄件者可使用兩種動作來透過 Amazon SES 傳送電子郵件:SendEmailSendRawEmail,取決於寄件者想要對電子郵件格式擁有多少控制權。傳送授權政策可讓您限制委託寄件者為以下兩種動作之一。但是,許多身分擁有者會在政策中啟用兩種動作,以讓委派寄件者決定電子郵件傳送呼叫的詳細資訊。

注意

如果您想要讓委派寄件者透過 SMTP 界面存取 Amazon SES,您必須至少選擇 SendRawEmail

如果您的使用案例是想要限制動作,可以只在傳送授權政策中加入一個動作。以下範例說明如何對 SendRawEmail 限制動作。

{ "Id":"ExamplePolicy", "Version":"2012-10-17", "Statement":[ { "Sid":"ControlAction", "Effect":"Allow", "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com", "Principal":{ "AWS":[ "123456789012" ] }, "Action":[ "ses:SendRawEmail" ] } ] }

限制電子郵件寄件者的顯示名稱

部分電子郵件用戶端顯示電子郵件寄件者的「方便」名稱 (若電子郵件標題提供),而非實際的「寄件人」地址。例如,"John Doe <johndoe@example.com>" 的顯示名稱為 John Doe。例如,您可能會從 user@example.com 傳送電子郵件,但是您想讓收件人看到該電子郵件是來自 Marketing (行銷),而非來自 user@example.com。以下政策可讓 AWS 帳戶 ID 123456789012 從身分 example.com 傳送,但只能在 "From" 地址的顯示名稱包含 Marketing 的情況下才能。

{ "Id":"ExamplePolicy", "Version":"2012-10-17", "Statement":[ { "Sid":"AuthorizeFromAddress", "Effect":"Allow", "Resource":"arn:aws:ses:us-east-1:888888888888:identity/example.com", "Principal":{ "AWS":[ "123456789012" ] }, "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Condition":{ "StringLike":{ "ses:FromDisplayName":"Marketing" } } } ] }

使用多個陳述式

您的傳送授權政策可以包含多個陳述式。以下範例政策有兩個陳述式。第一種陳述式授權兩個 AWS 帳戶 從 sender@example.com 傳送,只要「寄件人」地址和回饋地址都使用了網域 example.com。第二個陳述式授權 IAM 使用者從 sender@example.com 傳送,只要在收件人的電子郵件地址位於 example.com 網域內就能傳送。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AuthorizeAWS", "Effect":"Allow", "Resource":"arn:aws:ses:us-east-1:999999999999:identity/sender@example.com", "Principal":{ "AWS":[ "111111111111", "222222222222" ] }, "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Condition":{ "StringLike":{ "ses:FromAddress":"*@example.com", "ses:FeedbackAddress":"*@example.com" } } }, { "Sid":"AuthorizeInternal", "Effect":"Allow", "Resource":"arn:aws:ses:us-east-1:999999999999:identity/sender@example.com", "Principal":{ "AWS":"arn:aws:iam::333333333333:user/Jane" }, "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Condition":{ "ForAllValues:StringLike":{ "ses:Recipients":"*@example.com" } } } ] }