Amazon SES SMTP 認証情報を取得 - Amazon Simple Email Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SES SMTP 認証情報を取得

SES SMTP インターフェイスにアクセスするには、Amazon SES SMTP 認証情報が必要です。

SES SMTP インターフェイスを介して E メールを送信するために使用する認証情報は、各 AWS リージョンに固有です。SES SMTP インターフェイスを使用して複数のリージョンでメールを送信する場合は、使用しようとしている各リージョンで SMTP 認証情報のセットを生成する必要があります。

SMTP パスワードは、 AWS シークレットアクセスキーとは異なります。認証情報の詳細については、「Amazon SES 認証情報の種類」を参照してください。

注記

SMTP エンドポイントは現時点では、アフリカ (ケープタウン)、アジアパシフィック (ジャカルタ)、欧州 (ミラノ)、イスラエル (テルアビブ)、中東 (バーレーン) では使用できません。

SES コンソールを使用して SES SMTP 認証情報を取得する

要件

IAM ユーザーは SES SMTP 認証情報を作成できますが、SES SMTP 認証情報の作成には IAM が使用されるため、ユーザーのポリシーによって IAM 自体を使用するアクセス許可がユーザーに付与される必要があります。IAM ポリシーで許可する必要がある IAM アクションは、iam:ListUsersiam:CreateUseriam:CreateAccessKey、およびiam:PutUserPolicyです。コンソールを使用して SES SMTP 認証情報を作成しようとしたときに、IAM ユーザーにこれらのアクセス許可がない場合、アカウントが「iam:ListUsers."

重要

上記の IAM アクションには、サービスでリソースのアクセス許可を付与または変更するアクセス許可が付与されるため、IAM レベルが最も高いアクセス許可管理アクセスレベルがあります。したがって、 AWS アカウントのセキュリティを向上させるために、アクセス許可管理アクセスレベル分類を含むこれらのポリシーを制限または定期的にモニタリングすることを強くお勧めします。

SMTP 認証情報を作成するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/ses/ で Amazon SES コンソールを開きます。

  2. 左のナビゲーションペインで [SMTP settings] (SMTP 設定) を選択します。[Simple Mail Transfer Protocol (SMTP) settings] (Simple Mail Transfer Protocol (SMTP) の設定) ページが開きます。

  3. 右上の [Create SMTP Credentials] (SMTP 認証情報の作成) を選択します。IAM コンソールが開きます。

  4. (オプション) 既に作成した SMTP ユーザーを表示、編集、または削除する必要がある場合は、右下の [Manage my existing SMTP credentials] (既存の SMTP 認証情報の管理) を選択します。IAM コンソールが開きます。SMTP 認証情報の管理の詳細は、次の手順に従って表示されます。

  5. [SMTP のユーザーを作成] で、[ユーザー名] フィールドに SMTP ユーザーの名前を入力します。または、このフィールドに提供されているデフォルト値を使用できます。完了したら、右下隅の [ユーザーを作成] を選択します。

  6. [SMTP パスワード][表示] を選択します。SMTP 認証情報が画面に表示されます。

  7. [.csv ファイルをダウンロード] を選択してこれらの認証情報をダウンロードし、安全な場所に保管します。このダイアログボックスを閉じると、認証情報の表示や保存はできなくなります。

  8. [SES コンソールに戻る] を選択します。

この手順で作成した SMTP 認証情報を一覧表示するには、IAM コンソールの [Access management] (アクセス管理) で [Users] (ユーザー) を選択し、検索バーを使用して 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 し、https://console.aws.amazon.com/iam/ で 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 ポリシーを [許可ポリシーをアタッチ] テーブルから選択してアタッチし、[ユーザーグループを作成] をクリックします。

IAM での SES の使用の詳細については、「Amazon SESでの Identity and Access Management」を参照してください。

注記

SES SMTP 認証情報はどの IAM ユーザーに対しても生成できますが、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 文字列を使用しています。 古いバージョンでは使用できません。

現在、Python SDK (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

上記のコマンドで、次の操作を行います。

  • path/to/を保存した場所へのパスに置き換えますsmtp_credentials_generate.py

  • wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY を、SMTP パスワードに変換するシークレットアクセスキーに置き換えます。

  • 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 し、https://console.aws.amazon.com/iam/ で 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 グループを選択してから、[ユーザーをグループに追加] をクリックします。

  13. [許可] タブをクリックして、[ポリシー名] 列に AmazonSesSendingAccess が 2 行表示されており、1 つはインラインで、もう 1 つには [次を経由してアタッチ] 列に AWSSESSendingGroupDoNotRename グループが表示されていることを確認します。

  14. [ポリシー名] 列に AmazonSesSendingAccess が含まれ、[次を経由してアタッチ] 列にインラインが含まれている行のみを選択して、[削除] をクリックし、[ポリシーを削除] をクリックして確定します。

    [次を経由してアタッチ] 列に AWSSESSendingGroupDoNotRename グループが含まれる行が残っているかを検証します。

  15. [タグ] タブをクリックして、[タグを管理] をクリックします。

  16. [キー] 列に「InvokedBy」が含まれ、[値] 列に「SESConsole」が含まれる行の横にある [削除] をクリックしてから、[変更を保存] をクリックします。

重要

送信に影響が及ばないように、AmazonSesSendingAccess ポリシー (インラインポリシーまたはグループポリシー、またはその両方) は、SMTP ユーザーにアタッチされたままにしておく必要があります。インラインポリシーは、グループポリシーがユーザーにアタッチされた後にのみ削除します。