Amazon SES SMTP 자격 증명 받기 - Amazon Simple Email Service

Amazon SES SMTP 자격 증명 받기

Amazon SES SMTP 인터페이스에 액세스하려면 Amazon SES SMTP 사용자 이름과 암호가 필요합니다. SMTP 인터페이스를 사용하여 여러 AWS 리전에서 이메일을 전송하려면 각 리전에 대해 고유한 SMTP 자격 증명 세트를 얻어야 합니다.

중요

SMTP 암호는 AWS 보안 액세스 키와 다릅니다. 자격 증명에 대한 자세한 내용은 Amazon SES에서 자격 증명 사용을 참조하십시오.

Amazon SES 콘솔을 사용하여 Amazon SES SMTP 자격 증명 받기

Amazon SES 콘솔을 사용하여 SMTP 자격 증명을 생성하면 Amazon SES 콘솔은 Amazon SES를 호출하기 위한 적절한 정책과 함께 IAM 사용자를 생성하고 해당 사용자와 연결된 SMTP 자격 증명을 제공합니다.

참고

IAM 사용자는 Amazon SES SMTP 자격 증명을 생성할 수 있지만 IAM을 사용하여 Amazon SES SMTP 자격 증명을 생성하기 때문에 IAM 사용자의 정책이 사용자에게 IAM 자체를 사용할 권한을 부여해야 합니다. IAM 정책은 사용자가 iam:ListUsers, iam:CreateUser, iam:CreateAccessKeyiam:PutUserPolicy라는 IAM 작업을 수행할 수 있도록 허용해야 합니다. 콘솔을 사용하여 Amazon SES SMTP 자격 증명을 생성하려는 경우 IAM 사용자에게 이러한 권한이 없으면 사용자 계정은 "iam:ListUsers를 수행할 권한이 없다"는 오류가 표시됩니다.

SMTP 자격 증명을 만들려면

  1. AWS Management 콘솔에 로그인하고 https://console.aws.amazon.com/ses/에서 Amazon SES 콘솔을 엽니다.

  2. 탐색 창에서 [SMTP Settings]을 선택합니다.

  3. 콘텐츠 창에서 [Create My SMTP Credentials]를 선택합니다.

  4. Create User for SMTP(SMTP에 대해 사용자 생성)에 해당 SMTP 사용자의 이름을 입력합니다. 또는 이 필드에 입력된 기본값을 사용할 수 있습니다. 마쳤으면 [Create]를 선택합니다.

    
                        SMTP 사용자 생성
  5. [Show User SMTP Credentials]를 선택합니다. SMTP 자격 증명이 화면에 표시됩니다. 이 자격 증명을 복사하여 안전한 곳에 저장하십시오. [Download Credentials]를 선택하여 자격 증명이 포함된 파일을 다운로드할 수도 있습니다.

    
                        SMTP 사용자 생성
    중요

    이때가 SMTP 자격 증명을 볼 수 있는 유일한 시간입니다. 이 자격 증명을 다운로드하여 삭제되지 않을 위치에 보관하는 것이 좋습니다. 이 자격 증명을 분실한 경우 SMTP 사용자 생성 프로세스를 다시 시작해야 합니다.

  6. [Close Window]를 선택합니다.

IAM 콘솔(https://console.aws.amazon.com/iam/)로 이동하여 이 절차를 사용하여 만든 기존 SMTP 자격 증명의 목록을 볼 수 있습니다. 탐색 창의 액세스 관리에서 사용자를 선택합니다. 검색 창을 사용하여 "ses-smtp-user"라는 텍스트가 포함된 모든 사용자를 찾습니다.

IAM 콘솔을 사용하여 기존 SMTP 사용자를 삭제할 수도 있습니다. 사용자 삭제에 대한 자세한 내용은 IAM 시작 안내서https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM 사용자 관리를 참조하십시오 .

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

기존 AWS 자격 증명을 변환하여 Amazon SES SMTP 자격 증명 받기

IAM 인터페이스를 사용하여 설정한 IAM 사용자가 있는 경우 AWS 자격 증명에서 사용자의 Amazon SES SMTP 자격 증명을 만들 수 있습니다.

중요

SMTP 자격 증명을 만들 목적으로 임시 AWS 자격 증명을 사용해서는 안 됩니다. Amazon SES SMTP 인터페이스는 임시 보안 자격 증명에서 생성된 SMTP 자격 증명을 지원하지 않습니다.

IAM 사용자가 Amazon SES SMTP 인터페이스를 사용하여 이메일을 보낼 수 있도록 하려면 다음 두 단계를 수행해야 합니다.

  • 이 단원에 제공된 알고리즘을 사용하여 AWS 자격 증명에서 사용자의 SMTP 자격 증명을 만듭니다. AWS 자격 증명에서 시작하므로 SMTP 사용자 이름이 AWS 액세스 키 ID와 같습니다. 따라서 SMTP 암호만 생성하면 됩니다.

  • 다음 정책을 IAM 사용자에 적용합니다.

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

    IAM과 함께 Amazon SES를 사용하는 방법에 대한 자세한 내용은 Amazon SES에 대한 액세스 제어를 참조하십시오.

참고

IAM 사용자의 Amazon SES SMTP 자격 증명을 생성할 수 있지만 SMTP 자격 증명을 생성할 때 별도의 IAM 사용자를 생성하는 것이 좋습니다. 특정 용도로 사용자를 생성하는 것이 좋은 이유에 대한 자세한 내용은 IAM 모범 사례를 참조하십시오.

다음 유사 코드는 AWS 보안 액세스 키를 Amazon 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"; versionInBytes = 0x04; kDate = HmacSha256(date, "AWS4" + key); kRegion = HmacSha256(region, kDate); kService = HmacSha256(service, kRegion); kTerminal = HmacSha256(terminal, kService); kMessage = HmacSha256(message, kTerminal); signatureAndVersion = Concatenate(versionInBytes, kMessage); smtpPassword = Base64(signatureAndVersion);

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

Python
#!/usr/bin/env python3 import hmac import hashlib import base64 import argparse # Values that are required to calculate the signature. These values should # never change. 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 calculateKey(secretAccessKey, region): signature = sign(("AWS4" + secretAccessKey).encode('utf-8'), DATE) signature = sign(signature, region) signature = sign(signature, SERVICE) signature = sign(signature, TERMINAL) signature = sign(signature, MESSAGE) signatureAndVersion = bytes([VERSION]) + signature smtpPassword = base64.b64encode(signatureAndVersion) print(smtpPassword.decode('utf-8')) def main(): parser = argparse.ArgumentParser(description='Convert a Secret Access Key for an IAM user to an SMTP password.') parser.add_argument('--secret', help='The Secret Access Key that you want to convert.', required=True, action="store") parser.add_argument('--region', help='The name of the AWS Region that the SMTP password will be used in.', required=True, choices=['us-east-1','us-west-2','ap-south-1','ap-southeast-2','ca-central-1','eu-central-1','eu-west-1','eu-west-2','sa-east-1','us-gov-west-1'], action="store") args = parser.parse_args() calculateKey(args.secret,args.region) main()