Amazon SES SMTP 자격 증명 가져오기 - Amazon Simple Email Service

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

Amazon SES SMTP 자격 증명 가져오기

SES SMTP 인터페이스에 액세스하려면 Amazon SES SMTP 보안 인증 정보가 필요합니다.

SES SMTP 인터페이스를 통해 이메일을 보내는 데 사용하는 보안 인증 정보는 각 AWS 리전마다 고유합니다. SES SMTP 인터페이스를 사용하여 둘 이상의 리전에서 이메일을 보내는 경우 사용하려는 각 리전에 대한 SMTP 자격 증명 세트를 생성해야 합니다.

SMTP 암호가 AWS 보안 액세스 키와 다릅니다. 자격 증명에 대한 자세한 내용은 Amazon SES 자격 증명 유형 단원을 참조하세요.

참고

SMTP 엔드포인트는 현재 아프리카(케이프타운), 아시아 태평양(자카르타), 유럽(밀라노), 이스라엘(텔아비브) 및 중동(바레인)에서 사용할 수 없습니다.

SES 콘솔을 사용하여 SES SMTP 보안 인증 획득

요구 사항

IAM 사용자는 SES SMTP 보안 인증 정보를 생성할 수 있지만 보안 SES SMTP 인증 정보는 를 사용하여 생성되므로 사용자 정책은 IAM 자체적으로 사용할 수 있는 권한을 부여해야 합니다IAM. IAM 정책을 통해 iam:ListUsers, iam:CreateUser, 및 IAM 작업을 수행할 수 있어야 합니다iam:CreateAccessKeyiam:PutUserPolicy. 콘솔을 사용하여 SES SMTP 보안 인증 정보를 생성하려고 하는데 IAM 사용자에게 이러한 권한이 없는 경우 계정이 'iam을 수행할 권한이 없음:.'이라는 오류가 표시됩니다ListUsers.

SMTP 자격 증명을 생성하려면
  1. 에 로그인 AWS Management Console 하고 에서 Amazon SES 콘솔을 엽니다https://console.aws.amazon.com/ses/.

  2. 왼쪽 탐색 창에서 SMTP 설정을 선택합니다. 그러면 Simple Mail Transfer Protocol(SMTP) 설정 페이지가 열립니다.

  3. 오른쪽 상단 모서리에서 SMTP 자격 증명 생성을 선택하면 IAM 콘솔이 열립니다.

  4. (선택 사항) 이미 생성한 SMTP 사용자를 보거나 편집하거나 삭제해야 하는 경우 오른쪽 하단 모서리에서 기존 SMTP 보안 인증 정보 관리를 선택하면 IAM 콘솔이 열립니다. SMTP 자격 증명 관리에 대한 세부 정보는 다음 절차에 따라 제공됩니다.

  5. 용 사용자 생성SMTP의 사용자 이름 필드에 SMTP 사용자 이름을 입력합니다. 또는 이 필드에 입력된 기본값을 사용할 수 있습니다. 마쳤으면 오른쪽 하단에서 사용자 생성을 선택합니다.

  6. SMTP 암호 아래에 표시를 선택합니다. 보안 SMTP 인증 정보가 화면에 표시됩니다.

  7. 이 대화 상자를 닫은 후에는 보안 인증 정보를 보거나 저장할 수 없으므로 .csv 파일 다운로드를 선택하여 이러한 보안 인증 정보를 다운로드하거나 복사하여 안전한 장소에 저장하세요.

  8. SES 콘솔로 돌아가기를 선택합니다.

IAM 콘솔의 액세스 관리에서 이 절차를 사용하여 생성한 SMTP 자격 증명 목록을 보고 사용자를 선택한 다음 검색 창을 사용하여 자격 SMTP 증명을 할당한 모든 사용자를 찾을 수 있습니다.

IAM 콘솔을 사용하여 기존 SMTP 사용자를 삭제할 수도 있습니다. 사용자 삭제에 대한 자세한 내용은 시작하기 안내서의 IAM 사용자 관리를 참조하세요. IAM

SMTP 암호를 변경하려면 IAM 콘솔에서 기존 SMTP 사용자를 삭제합니다. 그런 다음 새 SMTP 자격 증명 세트를 생성하려면 이전 절차를 완료합니다.

기존 SES SMTP 보안 인증 정보를 변환하여 AWS 보안 인증 정보 획득

IAM 인터페이스를 사용하여 설정한 사용자가 있는 경우 해당 사용자의 SES SMTP 보안 인증 정보에서 사용자의 AWS 보안 인증을 추출할 수 있습니다.

중요

임시 AWS 자격 증명을 사용하여 SMTP 자격 증명을 추출하지 마세요. SES SMTP 인터페이스는 임시 보안 SMTP 자격 증명에서 생성된 자격 증명을 지원하지 않습니다.

IAM 사용자가 SES SMTP 인터페이스를 사용하여 이메일을 보내도록 활성화하려면
  1. 다음 절차에 따라 이 섹션에 제공된 알고리즘을 사용하여 자격 SMTP 증명에서 사용자의 AWS 자격 증명을 파생합니다.

    자격 AWS 증명부터 시작하므로 SMTP 사용자 이름은 AWS 액세스 키 ID와 동일하므로 SMTP 암호만 생성하면 됩니다.

  2. 에 로그인 AWS Management Console 하고 에서 IAM 콘솔을 엽니다https://console.aws.amazon.com/iam/.

  3. 액세스 관리에서 정책을 선택한 다음 정책 생성을 선택합니다.

  4. 정책 편집기 에서 편집기의 예제 코드를 JSON 선택하고 제거합니다.

  5. 편집기에 다음 권한 정책을 붙여넣습니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ses:SendRawEmail", "Resource": "*" } ] }
  6. 다음을 선택하고 정책 이름 필드에 AmazonSesSendingAccess 를 입력한 다음 정책 생성 을 입력합니다.

  7. 액세스 관리에서 사용자 그룹을 선택한 다음 그룹 생성 을 선택합니다.

  8. 사용자 그룹 이름 AWSSESSendingGroupDoNotRename 필드에 를 입력합니다.

  9. 그룹에 SMTP 사용자 추가 테이블에서 사용자를 선택하여 그룹에 사용자를 추가합니다.

  10. 권한 정책 연결 테이블에서 정책을 선택한 다음 사용자 그룹 생성 을 선택하여 이전에 AmazonSesSendingAccess 생성한 정책을 연결합니다.

SES 와 함께 를 사용하는 방법에 대한 자세한 내용은 섹션을 IAM참조하세요Amazon SES의 Identity and Access Management.

참고

모든 IAM 사용자의 SES SMTP 보안 인증 정보를 생성할 수 있지만 보안 SMTP 인증 정보를 생성할 때 별도의 IAM 사용자를 생성하는 것이 좋습니다. 특정 목적으로 사용자를 생성하는 것이 좋은 이유에 대한 자세한 내용은 IAM 모범 사례 를 참조하세요.

다음 의사 코드는 AWS 보안 액세스 키를 SES SMTP 암호로 변환하는 알고리즘을 보여줍니다.

// Modify this variable to include your AWS secret access key key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"; // Modify this variable to refer to the AWS Region that you want to use to send email. region = "us-west-2"; // The values of the following variables should always stay the same. date = "11111111"; service = "ses"; terminal = "aws4_request"; message = "SendRawEmail"; version = 0x04; kDate = HmacSha256(date, "AWS4" + key); kRegion = HmacSha256(region, kDate); kService = HmacSha256(service, kRegion); kTerminal = HmacSha256(terminal, kService); kMessage = HmacSha256(message, kTerminal); signatureAndVersion = Concatenate(version, kMessage); smtpPassword = Base64(signatureAndVersion);

일부 프로그래밍 언어에는 IAM 보안 액세스 키를 SMTP 암호로 변환하는 데 사용할 수 있는 라이브러리가 포함됩니다. 이 섹션에는 Python을 사용하여 AWS 보안 액세스 키를 SES SMTP 암호로 변환하는 데 사용할 수 있는 코드 예제가 포함되어 있습니다.

참고

다음 예에는 Python 3.6에 도입된 f-strings가 사용됩니다. 이전 버전을 사용하면 작동하지 않습니다.

현재 PythonSDK(Boto3)은 공식적으로 2.7 및 3.6 이상(또는 이상)을 지원합니다. 그러나 2.7 지원은 더 이상 사용되지 않으며 2021년 7월 15일부로 사용 중단되므로 3.6으로 업그레이드해야 합니다.

Python
#!/usr/bin/env python3 import hmac import hashlib import base64 import argparse SMTP_REGIONS = [ "us-east-2", # US East (Ohio) "us-east-1", # US East (N. Virginia) "us-west-2", # US West (Oregon) "ap-south-1", # Asia Pacific (Mumbai) "ap-northeast-2", # Asia Pacific (Seoul) "ap-southeast-1", # Asia Pacific (Singapore) "ap-southeast-2", # Asia Pacific (Sydney) "ap-northeast-1", # Asia Pacific (Tokyo) "ca-central-1", # Canada (Central) "eu-central-1", # Europe (Frankfurt) "eu-west-1", # Europe (Ireland) "eu-west-2", # Europe (London) "eu-south-1", # Europe (Milan) "eu-north-1", # Europe (Stockholm) "sa-east-1", # South America (Sao Paulo) "us-gov-west-1", # AWS GovCloud (US) "us-gov-east-1", # AWS GovCloud (US) ] # These values are required to calculate the signature. Do not change them. DATE = "11111111" SERVICE = "ses" MESSAGE = "SendRawEmail" TERMINAL = "aws4_request" VERSION = 0x04 def sign(key, msg): return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest() def calculate_key(secret_access_key, region): if region not in SMTP_REGIONS: raise ValueError(f"The {region} Region doesn't have an SMTP endpoint.") signature = sign(("AWS4" + secret_access_key).encode("utf-8"), DATE) signature = sign(signature, region) signature = sign(signature, SERVICE) signature = sign(signature, TERMINAL) signature = sign(signature, MESSAGE) signature_and_version = bytes([VERSION]) + signature smtp_password = base64.b64encode(signature_and_version) return smtp_password.decode("utf-8") def main(): parser = argparse.ArgumentParser( description="Convert a Secret Access Key to an SMTP password." ) parser.add_argument("secret", help="The Secret Access Key to convert.") parser.add_argument( "region", help="The AWS Region where the SMTP password will be used.", choices=SMTP_REGIONS, ) args = parser.parse_args() print(calculate_key(args.secret, args.region)) if __name__ == "__main__": main()

이 스크립트를 사용하여 SMTP 암호를 얻으려면 이전 코드를 로 저장합니다smtp_credentials_generate.py. 그런 다음 명령줄에서 다음 명령을 실행합니다.

python path/to/smtp_credentials_generate.py wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY us-east-1

위의 명령에서 다음을 수행합니다.

  • Replace path/to/ 를 저장한 위치의 경로가 있습니다smtp_credentials_generate.py.

  • Replace wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY SMTP 암호로 변환하려는 보안 액세스 키가 있습니다.

  • Replace us-east-1 보안 SMTP 인증 정보를 사용하려는 AWS 리전을 사용합니다.

이 스크립트가 성공적으로 실행되면 유일한 출력은 SMTP 암호입니다.

기존 인라인 정책에서 그룹 정책으로 SMTP 사용자 마이그레이션(보안 권장 사항)

중요

2024년 9월 6일 이전에 SES SMTP 보안 인증 정보를 생성한 경우 인라인 정책과 태그가 SMTP 사용자에게 연결되었습니다. SES 는 인라인 정책에서 벗어나 보안 권장 사항과 동일하게 수행할 것을 권장합니다.

기존 인라인 정책의 SMTP 사용자를 그룹 정책으로 마이그레이션하기 전에 먼저 SES 권한 정책이 있는 IAM 사용자 그룹을 생성하여 인라인 정책을 대신해야 합니다. 이 IAM 사용자 그룹을 이미 생성했거나 2024년 9월 6일부터 생성한 SMTP 자격 증명에 대해 자동으로 생성된 경우 다음 절차의 10단계로 직접 건너뛸 수 있습니다.

기존 인라인 정책에서 관리형 그룹으로 마이그레이션하려면
  1. 에 로그인 AWS Management Console 하고 에서 IAM 콘솔을 엽니다https://console.aws.amazon.com/iam/.

  2. 액세스 관리에서 정책을 선택한 다음 정책 생성을 선택합니다.

  3. 정책 편집기 에서 편집기의 예제 코드를 JSON 선택하고 제거합니다.

  4. 편집기에 다음 권한 정책을 붙여넣습니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ses:SendRawEmail", "Resource": "*" } ] }
  5. 다음을 선택하고 정책 이름 필드에 AmazonSesSendingAccess 를 입력한 다음 정책 생성 을 입력합니다.

  6. 액세스 관리에서 사용자 그룹을 선택한 다음 그룹 생성 을 선택합니다.

  7. 사용자 그룹 이름 AWSSESSendingGroupDoNotRename 필드에 를 입력합니다.

  8. 그룹에 SMTP 사용자 추가 테이블에서 사용자를 선택하여 그룹에 사용자를 추가합니다.

  9. 권한 정책 연결 테이블에서 정책을 선택한 다음 사용자 그룹 생성 을 선택하여 이전에 AmazonSesSendingAccess 생성한 정책을 연결합니다.

    이제 SES 권한 정책으로 IAM 사용자 그룹을 생성했으므로 나머지 단계에 설명된 대로 현재 인라인 정책에서 이 그룹 정책으로 SMTP 사용자를 마이그레이션할 수 있습니다.

  10. 액세스 관리에서 사용자를 선택한 다음 마이그레이션할 SMTP 사용자를 선택합니다.

  11. 그룹 탭을 선택하고 그룹에 사용자 추가를 선택합니다.

  12. AWSSESSendingGroupDoNotRename 그룹을 선택한 다음 그룹에 사용자 추가(Add user to group)를 선택합니다.

  13. 권한 탭을 선택하고 정책 이름 열에 AmazonSesSendingAccess 와 함께 나열된 행이 두 개 있는지 확인합니다. 하나는 인라인 행이고 다른 하나는 그룹을 AWSSESSendingGroupDoNotRename 통해 연결 열에 나열됩니다.

  14. 정책 이름AmazonSesSendingAccess에 가 포함된 행과 연결 경유 열의 인라인 행만 선택한 다음 제거하고 제거 정책 을 확인합니다.

    연결 방법 열에 그룹이 AWSSESSendingGroupDoNotRename 있는 행이 남아 있는지 확인합니다.

  15. 태그 탭을 선택한 다음 태그 관리 를 선택합니다.

  16. 열과 SESConsole InvokedBy에 있는 행 옆에 있는 제거를 선택한 다음 변경 사항 저장을 선택합니다.

중요

AmazonSesSendingAccess 정책(인라인 또는 그룹 정책 또는 둘 다)은 전송에 영향을 주지 않도록 SMTP 사용자에게 연결된 상태로 유지되어야 합니다. 그룹 정책이 사용자에게 연결된 후에만 인라인 정책을 제거합니다.