Comment puis-je alterner mes clés d'accès pour un utilisateur Amazon SES SMTP IAM existant ?

Lecture de 3 minute(s)
0

Je souhaite alterner mes informations d'identification Amazon Simple Email Service (Amazon SES) Simple Mail Transfer Protocol (SMTP) dans AWS Identity and Access Management (IAM). Comment créer un nom d'utilisateur et un mot de passe compatibles avec Amazon SES ?

Résolution

Les clés d'accès que vous créez dans la console IAM pour un utilisateur SMTP fonctionnent lorsque le client se connecte au point de terminaison de l'API SES, mais ne fonctionnent pas avec l'interface SMTP Amazon SES. Le format des clés générées dans la console IAM est différent du format requis pour les informations d'identification des serveurs SMTP Amazon SES.

Il est recommandé de créer de nouvelles informations d'identification SMTP Amazon SES au lieu de convertir une clé d'accès secrète existante. 

Pour configurer les informations d'identification pour l'interface SMTP Amazon SES, effectuez l'une des opérations suivantes :

Création de nouvelles informations d'identification SMTP Amazon SES (recommandé)

1.    Utilisez la console Amazon SES pour créer de nouvelles informations d'identification SMTP Amazon SES.

2.    Après avoir obtenu les nouvelles informations d'identification, vous pouvez supprimer les informations d'identification Amazon SES existantes dans IAM si elles ne vous servent plus à rien.

Convertissez votre clé d'accès secrète existante au format SMTP Amazon SES

**Remarque :**Vous devez utiliser Python 3 ou une version ultérieure en suivant les étapes suivantes.

1.    Mettez à jour la politique de l'utilisateur IAM existant pour accorder l'autorisation à SES:SendRawEmail au minimum.

2.    Collez le code Python suivant dans un éditeur de texte, puis enregistrez le fichier sous le nom seskey.py.

#!/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)
    'sa-east-1',       # South America (Sao Paulo)
    'us-gov-west-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 for an IAM user 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()

3.    Pour exécuter le script Python, entrez votre clé d'accès secrète existante. Entrez ensuite un espace et la région AWS dans laquelle vous utilisez le mot de passe SMTP. Utilisez la commande suivante :

python3 seskey.py YOURKEYrrpg/JHpyvtStUVcAV9177EAKKmDP37P us-east-1

Important : veillez à saisir vos informations d'identification et à exécuter ce script sur une machine sécurisée et fiable.

4.    Le script génère une nouvelle clé d'accès secrète que vous pouvez utiliser avec Amazon SES. Stockez les informations d'identification SMTP générées dans votre application, puis utilisez-les pour vous connecter aux points de terminaison SMTP SES.


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans