¿Cómo puedo rotar las claves de acceso de un usuario existente de SMTP IAM de Amazon SES?

3 minutos de lectura
0

Quiero rotar mis credenciales del Protocolo simple de transferencia de correo (SMTP) de Amazon Simple Email Service (Amazon SES) en AWS Identity and Access Management (IAM). ¿Cómo puedo crear un nombre de usuario y una contraseña compatibles con Amazon SES?

Resolución

Las claves de acceso que usted crea en la consola de IAM para un usuario de SMTP funcionan cuando el cliente se conecta al punto final de la API de SES, pero no funcionan con la interfaz SMTP de Amazon SES. Las claves generadas en la consola de IAM tienen un formato diferente al requerido para las credenciales requeridas para los servidores SMTP de Amazon SES.

Se recomienda crear nuevas credenciales SMTP de Amazon SES en lugar de convertir una clave de acceso secreta existente. 

Para configurar las credenciales de la interfaz SMTP de Amazon SES, realice una de las siguientes acciones:

Crear nuevas credenciales SMTP de Amazon SES (recomendado)

1.    Utilice la consola de Amazon SES para crear nuevas credenciales SMTP de Amazon SES.

2.    Tras obtener las nuevas credenciales, puede eliminar las credenciales de Amazon SES existentes en IAM si no las necesita.

Convierta su clave de acceso secreta existente al formato SMTP de Amazon SES

Nota: Debe utilizar Python 3 o versiones posteriores con los siguientes pasos.

1.    Actualice la política del usuario de IAM existente para conceder permisos a ses:SendraWEmail como mínimo.

2.    Pegue el siguiente código de Python en un editor de texto y, a continuación, guarde el archivo como 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.    Para ejecutar el script de Python, introduzca su clave de acceso secreta existente. A continuación, introduzca un espacio y la región de AWS en la que utiliza la contraseña SMTP. Utilice el siguiente comando:

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

Importante: Asegúrese de introducir sus credenciales y ejecutar este script en un equipo seguro y de confianza.

4.    El script genera una nueva clave de acceso secreta que usted puede utilizar con Amazon SES. Guarde las credenciales SMTP generadas en su aplicación y, a continuación, utilícelas para conectarse a los puntos de conexión SMTP de SES.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años