Amazon SES에 이메일 수신을 위한 권한 부여 - Amazon Simple Email Service

Amazon SES에 이메일 수신을 위한 권한 부여

Amazon Simple Storage Service(Amazon S3) 버킷으로 이메일을 보내거나 AWS Lambda 함수를 호출하는 등 Amazon SES에서 이메일을 받을 때 수행할 수 있는 일부 작업에는 특별한 권한이 필요합니다. 이 단원에서는 일반 사용 사례에 대한 정책 예제를 보여줍니다.

Amazon SES에 S3 버킷에 작성할 수 있는 권한 부여

S3 버킷에 다음 정책을 적용하면 Amazon SES에서 해당 버킷에 작성할 수 있는 권한을 부여합니다. 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" } } } ] }

이전 정책 예제에서 다음과 같이 변경합니다.

  • myBucket을 작성하려는 S3 버킷의 이름으로 바꿉니다.

  • region을 수신 규칙을 생성한 AWS 리전으로 바꿉니다.

  • 111122223333을 AWS 계정 ID로 바꿉니다.

  • rule_set_name을 Amazon S3 버킷 작업에 대한 전송을 포함하는 수신 규칙이 포함된 규칙 세트의 이름으로 바꿉니다.

  • receipt_rule_name을 Amazon S3 버킷 작업에 대한 전송을 포함하는 수신 규칙 이름으로 바꿉니다.

Amazon SES에 AWS KMS 키 사용 권한 부여하기

Amazon SES가 이메일을 암호화하기 위해서는 수신 규칙을 설정할 때 지정한 AWS KMS 키에 대한 사용 권한이 있어야 합니다. 계정의 기본 KMS 키(aws/ses)를 사용하거나, 직접 생성하는 사용자 지정 괸리형 키를 사용할 수 있습니다. 기본 KMS 키를 사용하는 경우 Amazon SES에 사용 권한을 부여하는 추가 절차가 필요하지 않습니다. 사용자 지정 관리형 키를 사용하는 경우 키의 정책에 설명을 추가하여 Amazon SES에 사용 권한을 부여해야 합니다.

다음 정책 설명을 키 정책에 사용하여 이 도메인에서 이메일을 수신할 때 Amazon 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" } } }

이전 정책 예제에서 다음과 같이 변경합니다.

  • region을 수신 규칙을 생성한 AWS 리전으로 바꿉니다.

  • 111122223333을 AWS 계정 ID로 바꿉니다.

  • rule_set_name을 이메일 수신과 연결한 수신 규칙이 포함된 규칙 세트의 이름으로 바꿉니다.

  • receive_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에서 키 정책 사용을 참조하십시오.

Amazon SES에 AWS Lambda 함수를 호출할 수 있는 권한을 부여합니다.

Amazon SES에서 AWS Lambda 함수를 호출할 수 있도록 하기 위해 Amazon SES 콘솔에서 수신 규칙을 생성할 때 함수를 선택할 수 있습니다. 이렇게 하면 Amazon SES가 자동으로 함수에 필요한 권한을 추가합니다.

또는 AWS Lambda API에서 AddPermission 작업을 사용하여 정책을 함수에 연결할 수 있습니다. 다음 AddPermission API 호출은 Amazon SES에 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" }

이전 정책 예제에서 다음과 같이 변경합니다.

  • region을 수신 규칙을 생성한 AWS 리전으로 바꿉니다.

  • 111122223333을 AWS 계정 ID로 바꿉니다.

  • 규칙 세트 이름을 Lambda 함수를 생성한 수신 규칙을 포함하는 규칙 세트 이름으로 바꿉니다.

  • receipt_rule 이름을 Lambda 함수를 포함하는 수신 규칙 이름으로 바꿉니다.

Amazon SES에서 다른 AWS 계정에 속한 Amazon SNS 주제에 게시할 수 있는 권한 부여

별도의 AWS 계정의 주제에 알림을 게시하려면 Amazon SNS 주제에 정책을 연결해야 합니다. SNS 주제는 도메인 및 수신 규칙 세트와 같은 리전에 있어야 합니다.

다음 정책은 Amazon 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" } } } ] }

이전 정책 예제에서 다음과 같이 변경합니다.

  • topic_region을 Amazon SNS 주제가 생성된 AWS 리전로 바꿉니다.

  • sns_topic_account_id를 Amazon SNS 주제를 소유한 AWS 계정의 ID로 바꿉니다.

  • topic_name을 알림을 게시할 Amazon SNS 주제의 이름으로 바꿉니다.

  • aws_account_id를 이메일을 수신하도록 구성된 AWS 계정의 ID로 바꿉니다.

  • receipt_region을 수신 규칙을 생성한 AWS 리전로 바꿉니다.

  • rule_set_name을 Amazon SNS 주제 작업에 대한 게시를 생성한 수신 규칙을 포함하는 규칙 세트 이름으로 바꿉니다.

  • 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": "*" } ] }