Como posso rotacionar minhas chaves de acesso para um usuário do IAM existente do Amazon SES SMTP?

3 minuto de leitura
0

Quero alternar minhas credenciais do Simple Mail Transfer Protocol (SMTP) do Amazon Simple Email Service (Amazon SES) no AWS Identity and Access Management (IAM). Como posso criar um nome de usuário e senha compatíveis com o Amazon SES?

Solução

As chaves de acesso que você cria no console do IAM para um usuário SMTP funcionam quando o cliente está se conectando ao endpoint de API do SES, mas não funcionam com a interface SMTP do Amazon SES. As chaves geradas no console do IAM estão em um formato diferente do formato exigido para as credenciais obrigatórias dos servidores SMTP do Amazon SES.

É uma prática recomendada criar novas credenciais SMTP do Amazon SES em vez de converter uma chave de acesso secreta existente.

Para configurar credenciais para a interface SMTP do Amazon SES, faça o seguinte:

Crie novas credenciais SMTP do Amazon SES (recomendado)

1.    Use o console do Amazon SES para criar novas credenciais SMTP do Amazon SES.

2.    Depois de obter as novas credenciais, você pode excluir as credenciais existentes do Amazon SES no IAM se não precisar delas.

Converta a sua chave de acesso secreta existente no formato SMTP do Amazon SES

Observação: você deve usar o Python 3 ou versões posteriores com as etapas a seguir.

1.    Atualize a política existente do usuário do IAM para conceder permissão para ses:SendRawEmail no mínimo.

2.    Cole o código Python a seguir em um editor de texto e salve o arquivo 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 executar o script Python, insira a sua chave de acesso secreta existente. Em seguida, insira um espaço e a região da AWS em que você está usando a senha SMTP. Use o comando a seguir:

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

Importante: certifique-se de inserir suas credenciais e executar esse script em uma máquina segura e confiável.

4.    O script gera uma nova chave de acesso secreta que você pode usar com o Amazon SES. Armazene as credenciais SMTP geradas em sua aplicação e, em seguida, use as credenciais para se conectar aos endpoints SMTP do SES.


AWS OFICIAL
AWS OFICIALAtualizada há 2 anos