2017-08-25 2 views
0

J'utilise python pour envoyer des e-mails via un service de messagerie AWS Simple.AWS SES - Connexion au jeu de bots sans exposer les touches d'accès au code

En essayant d'avoir la meilleure sécurité possible je voudrais faire une connexion boto SES sans exposer mes clés d'accès dans le code.

En ce moment j'établissement d'une connexion comme celui-ci

ses = boto.ses.connect_to_region(
    'us-west-2', 
    aws_access_key_id='<ACCESS_KEY>', 
    aws_secret_access_key='<SECRET_ACCESS_KEY>' 
) 

Est-il possible de le faire sans exposer mes clés d'accès à l'intérieur du script?

+0

Je vous recommande d'utiliser boto3. Vous pouvez voir comment configurer cela [ici] (http://boto3.readthedocs.io/en/latest/guide/configuration.html). –

+0

Exécutez-vous le code python sur une machine EC2 ou une machine non-EC2? – helloV

Répondre

2

La solution la plus simple est d'utiliser des variables d'environnement que vous pouvez récupérer dans votre code Python avec os.environ.

export AWS_ACCESS_KEY_ID=<YOUR REAL ACCESS KEY> 
export AWS_SECRET_ACCESS_KEY=<YOUR REAL SECRET KEY> 

Et dans le code Python:

from os import environ as os_env 

ses = boto.ses.connect_to_region(
    'us-west-2', 
    aws_access_key_id=os_env['AWS_ACCESS_KEY_ID'], 
    aws_secret_access_key=os_env['AWS_SECRET_ACCESS_KEY']' 
) 
1

Méthode préférée d'authentification est d'utiliser la capacité de boto3 lire votre fichier d'informations d'identification AWS.

Configurez votre AWS CLI à l'aide de la commande aws configure.

Ensuite, dans votre script, vous pouvez utiliser le Session appel pour obtenir les informations d'identification: session = boto3.Session(profile_name='default')

2

Deux options sont à définir une variable d'environnement nommée ACCESS_KEY et un autre nom SECRET_ACCESS_KEY, puis dans votre code que vous auriez:

import os 
ses = boto.ses.connect_to_region(
'us-west-2', 
aws_access_key_id=os.environ['ACCESS_KEY'], 
aws_secret_access_key=os.environ['SECRET_ACCESS_KEY'] 
) 

ou utilisez un fichier JSON:

import json 
path_to_json = 'your/path/here.json' 

with open(path_to_json, 'r') as f: 
    keys = json.load(f) 

ses = boto.ses.connect_to_region(
'us-west-2', 
aws_access_key_id=keys['ACCESS_KEY'], 
aws_secret_access_key=keys['SECRET_ACCESS_KEY'] 
) 

le fichier json contiendrait: {'ACCESS_KEY':<ACCESS_KEY>, 'SECRET_ACCESS_KEY':<SECRET_ACCESS_KEY>}