Come posso ruotare le mie chiavi di accesso per un utente IAM SMTP Amazon SES esistente?

3 minuti di lettura
0

Voglio ruotare le mie credenziali Simple Mail Transfer Protocol (SMTP) di Amazon Simple Email Service (Amazon SES) in AWS Identity and Access Management (IAM). Come posso creare un nome utente e una password compatibili con Amazon SES?

Risoluzione

Le chiavi di accesso create nella console IAM per un utente SMTP funzionano quando il cliente si connette all'endpoint dell'API SES, ma non funzionano con l'interfaccia SMTP di Amazon SES. Le chiavi generate nella console IAM hanno un formato diverso da quello delle credenziali richieste per i server SMTP Amazon SES.

È consigliabile creare nuove credenziali SMTP di Amazon SES invece di convertire una chiave di accesso segreta esistente.

Per configurare le credenziali per l'interfaccia SMTP di Amazon SES, esegui una delle seguenti operazioni:

Crea nuove credenziali SMTP di Amazon SES (consigliato)

1.    Usa la console Amazon SES per creare nuove credenziali SMTP di Amazon SES.

2.    Dopo aver ottenuto le nuove credenziali, puoi eliminare le credenziali Amazon SES esistenti in IAM se non ti servono.

Converti la tua chiave di accesso segreta esistente nel formato SMTP di Amazon SES

**Nota:**Devi utilizzare Python 3 o versioni successive attraverso i seguenti passaggi.

1.    Aggiorna la policy dell'utente IAM esistente per concedere almeno l'autorizzazione per ses:SendRawEmail.

2.    Incolla il seguente codice Python in un editor di testo, quindi salva il file come 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.    Per eseguire lo script Python, inserisci la tua chiave di accesso segreta. Quindi, inserisci uno spazio e la Regione AWS in cui stai utilizzando la password SMTP. Usa il seguente comando:

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

Importante: Assicurati di inserire le tue credenziali ed eseguire questo script su un computer sicuro e affidabile.

4.    Lo script emette una nuova chiave di accesso segreta che puoi usare con Amazon SES. Memorizza le credenziali SMTP generate nell'applicazione e quindi utilizzale per connetterti agli endpoint SES SMTP.


AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa