web-dev-qa-db-fra.com

Dockerfile copie des fichiers depuis Amazon s3 ou une autre source qui a besoin d'informations d'identification

J'essaie de créer une image Docker et je dois copier certains fichiers de S3 vers l'image.

Dans le Dockerfile que j'utilise:

Dockerfile

FROM library/ubuntu:16.04
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

# Copy files from S3 inside docker
RUN aws s3 COPY s3://filepath_on_s3 /tmp/

Cependant, aws nécessite AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY. Je sais que je peux probablement les passer en utilisant ARG. Mais, est-ce une mauvaise idée de les passer à l'image au moment de la construction?

Comment puis-je y parvenir sans stocker les clés secrètes dans l'image?

8
CentAu

À mon avis, les rôles sont les meilleurs pour déléguer des autorisations S3 à des conteneurs Docker.

  1. Créer un rôle à partir d'IAM -> Rôles -> Créer un rôle -> Choisissez le service qui utilisera ce rôle, sélectionnez EC2 -> Suivant -> sélectionnez s3policies et le rôle doit être créé.

  2. Attacher un rôle à une instance en cours d'exécution/arrêtée dans Actions-> Paramètres d'instance -> Attacher/Remplacer un rôle

Cela a fonctionné avec succès dans Dockerfile:

RUN aws s3 cp s3://bucketname/favicons /var/www/html/favicons --recursive

5
Ankita Dhandha

Beaucoup de gens transmettent les détails par le biais de args, ce que je vois bien et comme je le ferais personnellement. Je pense que vous pouvez surpasser certains processus et cela, je pense que c'est l'un d'entre eux.

Exemple de docker avec args

docker run -e AWS_ACCESS_KEY_ID=123 -e AWS_SECRET_ACCESS_KEY=1234

Dire que je peux voir pourquoi certaines entreprises veulent cacher cela et l'obtenir à partir d'une API privée ou quelque chose. C'est pourquoi AWS a créé des rôles IAM - https://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-Amazon-ec2.html .

Les détails pourraient être récupérés à partir de l'adresse IP privée à laquelle le S3 ne peut accéder que ce qui signifie que vous n'auriez jamais à stocker vos informations d'identification dans votre image elle-même.

Personnellement, je pense que c'est exagéré pour ce que vous essayez de faire, si quelqu'un pirate votre image, il peut consolider les informations d'identification et toujours accéder à ces détails. Les passer en tant que args est sûr tant que vous vous protégez comme vous le devriez de toute façon.

3
Josh Stevens