Comment renouveler mes clés d'accès pour un utilisateur IAM SMTP Amazon SES existant ?

Dernière mise à jour : 18/02/2021

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

Solution

Les clés d'accès créées dans la console IAM pour un utilisateur SMTP 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 de celui requis pour les informations d'identification sur les serveurs SMTP Amazon SES.

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

Créer de nouvelles informations d'identification SMTP Amazon SES

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 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.    Copiez le code Python pour convertir une clé d'accès secrète en mot de passe SMTP Amazon SES.

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

4.    Pour exécuter le script Python, utilisez la commande suivante :
Pour --secret, saisissez votre clé d'accès secrète existante. Entrez un espace et la région AWS où vous utilisez le mot de passe SMTP.

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

5.    Le script génère une nouvelle clé d'accès secrète que vous pouvez utiliser avec Amazon SES :

#!/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()

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


Besoin d'aide pour une question technique ou de facturation ?