Comment effectuer une rotation (renouveler) mes clés d'accès pour un utilisateur IAM SMTP Amazon SES existant ?

Date de la dernière mise à jour : 18/05/2022

Je souhaite effectuer une rotation (renouveler) mes informations d'identification du protocole SMTP d'Amazon Simple Email Service (Amazon SES) sur AWS Identity and Access Management (IAM). Comment puis-je créer un nom d'utilisateur et un mot de passe compatibles avec Amazon SES ?

Résolution

Les clés d'accès d’utilisateur SMTP que vous créez dans la console IAM fonctionnent lorsque le client se connecte au point de terminaison de l'API SES. Cependant, ces clés 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 sur les serveurs SMTP Amazon SES.

Une bonne pratique consiste à créer des informations d'identification SMTP Amazon SES plutôt que de convertir une clé d'accès secrète existante. 

Pour définir les informations d'identification de l'interface SMTP Amazon SES, procédez de l'une des manières suivantes :

Créer des 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 obtention des nouvelles informations d'identification, vous pouvez supprimer les informations d'identification Amazon SES existantes dans IAM si vous n'en avez pas besoin.

Convertir 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 procédant comme suit.

1.    Modifiez la stratégie de l'utilisateur IAM existant afin d'accorder au minimum l'autorisation ses:SendRawEmail.

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)
]

# Ces valeurs sont requises pour calculer la signature. Ne les modifiez pas.
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"La Région {region} n\'a pas de point de terminaison SMTP.")

    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='Convertir une clé d\'accès secrète pour un utilisateur IAM en un mot de passe SMTP.')
    parser.add_argument(
        'secret', help='La clé d\'accès secrète à convertir.')
    parser.add_argument(
        'region',
        help='La région AWS où le mot de passe SMTP sera utilisé.',
        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. Saisissez 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 : assurez-vous de saisir vos informations d'identification et d'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.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?