Amazon SES의 Identity and Access Management - Amazon Simple Email Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon SES의 Identity and Access Management

Amazon Simple 이메일 서비스 AWS Identity and Access Management (Amazon SES) 와 함께 (IAM) 을 사용하여 사용자, 그룹 또는 역할이 수행할 수 있는 SES API 작업을 지정할 수 있습니다. (이 주제에서는 이러한 엔터티를 모두 사용자라고 칭합니다.) 또한 사용자가 이메일의 "From", 수신자 및 "Return-Path" 주소에 사용할 수 있는 이메일 주소를 제어할 수 있습니다.

예를 들어, 조직의 사용자가 이메일은 보낼 수 있지만 전송 통계 확인 등의 관리 작업은 수행하지 못하도록 하는 IAM 정책을 만들 수 있습니다. 또 다른 예를 들면, 사용자가 계정에서 SES를 통해 이메일을 보낼 수 있지만 특정 "From" 주소를 사용하는 경우에만 허용하는 정책을 작성할 수 있습니다.

IAM을 사용하려면 권한을 명시적으로 정의하는 문서인 IAM 정책을 정의하고 사용자에게 해당 정책을 연결합니다. IAM 정책을 생성하는 방법을 알아보려면 IAM 사용 설명서를 참조하십시오. 정책에서 설정하는 제한 사항의 적용 외에는 사용자가 SES와 상호 작용하는 방법 또는 SES에서 요청을 수행하는 방법이 변경되지 않습니다.

참고
  • 계정이 SES 샌드박스에 있는 경우 해당 제한으로 인해 일부 정책을 구현하지 못합니다. 프로덕션 액세스 권한 요청 단원을 참조하세요.

  • 또한 전송 권한 부여 정책을 사용하여 SES에 대한 액세스를 제어할 수 있습니다. IAM 정책은 개별 사용자가 수행할 수 있는 작업을 제한하지만 전송 권한 부여 정책은 확인된 개별 ID를 사용할 수 있는 방법을 제한합니다. 또한 전송 권한 부여 정책만 교차 계정 액세스 권한을 부여할 수 있습니다. 권한 부여 전송에 대한 자세한 내용은 Amazon SES에서 전송 권한 부여 사용 단원을 참조하세요.

기존 사용자의 SES SMTP 보안 인증 정보를 생성하는 방법에 대한 자세한 내용은 Amazon SES SMTP 자격 증명 가져오기 섹션을 참조하세요.

SES에 액세스하기 위한 IAM 정책 생성

이 단원에서는 특히 SES에서 IAM 정책을 사용하는 방법을 설명합니다. 일반적으로 IAM 정책을 생성하는 방법을 알아보려면 IAM 사용 설명서를 참조하십시오.

다음 세 가지 이유로 SES에서 IAM을 사용할 수 있습니다.

  • 이메일 전송 작업을 제한하기 위해

  • 사용자가 전송하는 이메일의 "From", 수신자 및 "Return-Path" 주소를 제한하기 위해

  • 일반적인 API 사용을 제어하기 위해(예: 사용자가 사용 권한이 있는 API를 호출할 수 있는 시간)

작업 제한

사용자가 수행할 수 있는 SES 작업을 제어하려면 IAM 정책의 Action 요소를 사용합니다. API 이름에 소문자 문자열 ses:를 접두사로 추가하여 Action 요소를 모든 SES API 작업으로 설정할 수 있습니다. 예를 들어, Action을 (모든 작업에 대해) ses:SendEmail, ses:GetSendStatistics 또는 ses:*로 설정할 수 있습니다.

그런 다음 Action에 따라 Resource 요소를 다음과 같이 지정합니다.

Action 요소가 이메일 전송 API(즉 ses:SendEmail 및/또는 ses:SendRawEmail)에 대한 액세스만 허용하는 경우:

  • 사용자가 내 모든 자격 증명을 통해 전송할 수 있게 Resource 하려면 AWS 계정*로 설정합니다.

  • 사용자가 전송할 수 있는 자격 증명을 제한하려면 Resource를 사용자가 사용할 수 있도록 허용한 자격 증명의 ARN으로 설정합니다.

Action 요소가 모든 API에 대한 액세스를 허용하는 경우:

  • 사용자가 전송할 수 있는 자격 증명을 제한하지 않으려면 Resource를 *로 설정합니다.

  • 사용자가 전송할 수 있는 자격 증명을 제한하려면 다음과 같은 두 가지 정책(또는 한 정책 안에 두 가지 문)을 만들어야 합니다.

    • 하나는 허용된 non-email-sending API의 명시적 목록으로 Action 설정되고 *로 Resource 설정되어 있습니다.

    • 이메일 전송 API(ses:SendEmail 및/또는 ses:SendRawEmail) 중 하나로 설정된 Action과 사용자가 사용할 수 있도록 허용한 자격 증명의 ARN으로 설정된 Resource가 포함된 정책

사용 가능한 SES 작업 목록은 Amazon Simple Email Service API 참조를 참조하세요. 사용자가 SMTP 인터페이스를 사용할 경우 ses:SendRawEmail에 대한 액세스를 최소로 허용해야 합니다.

이메일 주소 제한

특정 이메일 주소로 사용자를 제한하려면 Condition 블록을 사용하면 됩니다. Condition 블록에서 IAM 사용 설명서의 설명과 같이 조건 키를 사용하여 조건을 지정합니다. 조건 키를 사용하여 다음과 같은 이메일 주소를 제어할 수 있습니다.

참고

이러한 이메일 주소 조건 키는 아래 표에 나와 있는 API에만 적용됩니다.

조건 키

설명

API

ses:Recipients

To:, "CC" 및 "BCC" 주소가 포함된 수신자 주소를 제한합니다.

SendEmail, SendRawEmail

ses:FromAddress

"From" 주소를 제한합니다.

SendEmail, SendRawEmail, SendBounce

ses:FromDisplayName

표시 이름으로 사용된 "From" 주소를 제한합니다.

SendEmail, SendRawEmail

ses:FeedbackAddress

이메일 피드백 전달로 반송 메일과 불만 제기를 전송할 수 있는 주소인 "Return-Path" 주소를 제한합니다. 이메일 피드백 전달에 대한 자세한 내용은 이메일을 통해 Amazon SES 알림 수신 단원을 참조하세요.

SendEmail, SendRawEmail

SES API 버전별 제한

ses:ApiVersion 조건 키를 사용하여 SES API 버전에 따라 SES에 대한 액세스를 제한할 수 있습니다.

참고

SES SMTP 인터페이스는 ses:SendRawEmail의 SES API 버전 2를 사용합니다.

일반 API 사용 제한

조건에서 AWS-wide 키를 사용하면 사용자에게 API 액세스가 허용된 날짜 및 시간과 같은 측면에 따라 SES에 대한 액세스를 제한할 수 있습니다. SES는 다음과 같은 AWS전체 정책 키만 구현합니다.

  • aws:CurrentTime

  • aws:EpochTime

  • aws:SecureTransport

  • aws:SourceIp

  • aws:SourceVpc

  • aws:SourceVpce

  • aws:UserAgent

  • aws:VpcSourceIp

이러한 키에 대한 자세한 내용은 IAM 사용 설명서를 참조하십시오.

SES에 대한 예제 IAM 정책

이 주제에서는 사용자의 SES에 대한 액세스를 특정 조건에서만 허용하는 정책 예를 다룹니다.

모든 SES 작업에 대한 모든 액세스 허용

다음 정책은 사용자가 모든 SES 작업을 호출할 수 있도록 허용합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:*" ], "Resource":"*" } ] }

SES API 버전 2에 대한 액세스만 허용

다음 정책은 사용자가 API 버전 2의 SES 작업만 호출할 수 있도록 허용합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:*" ], "Resource":"*", "Condition": { "StringEquals" : { "ses:ApiVersion" : "2" } } } ] }

이메일 전송 작업에 대한 액세스만 허용

다음 정책은 사용자가 SES를 사용하여 이메일을 전송하는 것을 허용하지만 SES 전송 통계에 액세스하는 것과 같은 관리 작업을 수행하는 것은 허용하지 않습니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*" } ] }

전송 기간 제한

다음 정책은 사용자가 2018년 9월에만 SES 이메일 전송 API를 호출하도록 허용합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*", "Condition":{ "DateGreaterThan":{ "aws:CurrentTime":"2018-08-31T12:00Z" }, "DateLessThan":{ "aws:CurrentTime":"2018-10-01T12:00Z" } } } ] }

수신자 주소 제한

다음 정책은 사용자가 SES 이메일 전송 API를 호출하도록 허용하지만 example.com 도메인(StringLike대소문자 구분)의 수신자 주소에만 호출하도록 허용합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*", "Condition":{ "ForAllValues:StringLike":{ "ses:Recipients":[ "*@example.com" ] } } } ] }

"From" 주소 제한

다음 정책은 사용자가 SES 이메일 전송 API를 호출하도록 허용하지만 "From" 주소가 marketing@example.com인 경우에만 적용됩니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*", "Condition":{ "StringEquals":{ "ses:FromAddress":"marketing@example.com" } } } ] }

다음 정책은 “From” 주소가 bounce@example.com 인 경우에만 사용자가 SendBounceAPI를 호출할 수 있도록 허용합니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendBounce" ], "Resource":"*", "Condition":{ "StringEquals":{ "ses:FromAddress":"bounce@example.com" } } } ] }

이메일 발신자의 표시 이름 제한

다음 정책은 사용자가 SES 이메일 전송 API를 호출하도록 허용하지만 "From" 주소의 표시 이름에 Marketing(StringLike대소문자 구분)이 포함된 경우에만 적용됩니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*", "Condition":{ "StringLike":{ "ses:FromDisplayName":"Marketing" } } } ] }

반송 메일 및 수신 거부 피드백 대상 제한

다음 정책은 사용자가 SES 이메일 전송 API를 호출하도록 허용하지만 이메일의 "Return-Path"가 feedback@example.com으로 설정된 경우에만 적용됩니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ses:SendEmail", "ses:SendRawEmail" ], "Resource":"*", "Condition":{ "StringEquals":{ "ses:FeedbackAddress":"feedback@example.com" } } } ] }