En 2011, Amazon a annoncé la disponibilité de la prise en charge de AWF Identity & Access Management (IAM) pour CloudFront. IAM a été lancé en 2010 et comprenait le support S3. AWS Identity & Access Management (IAM) vous permet d'avoir plusieurs utilisateurs au sein d'un compte AWS. Si vous avez utilisé Amazon Web Services (AWS), vous savez que le seul moyen de gérer le contenu dans AWS consiste à fournir votre nom d'utilisateur et votre mot de passe ou vos clés d'accès. C'est un réel problème de sécurité pour la plupart d'entre nous. IAM élimine le besoin de partager des mots de passe et des clés d'accès.
La modification constante de notre mot de passe AWS principal ou la génération de nouvelles clés n'est qu'une solution compliquée lorsqu'un membre du personnel quitte notre équipe. AWS Identity & Access Management (IAM) était un bon début en permettant des comptes d'utilisateur individuels avec des clés individuelles. Cependant, nous sommes un utilisateur de S3 / CloudFront, nous avons donc surveillé l'ajout de CloudFront à IAM, ce qui s'est finalement produit.
J'ai trouvé la documentation sur ce service un peu éparse. Il existe quelques produits tiers offrant une gamme de prise en charge de la gestion des identités et des accès (IAM). Mais les développeurs sont généralement économes et j'ai donc cherché une solution gratuite pour gérer IAM avec notre service Amazon S3.
Cet article décrit le processus de configuration de l'interface de ligne de commande prenant en charge IAM et la configuration d'un groupe / utilisateur disposant d'un accès S3. Vous devez avoir un compte Amazon AWS S3 configuré avant de commencer à configurer Identity & Access Management (IAM). Mon article, Utilisation du service Amazon Simple Storage Service (S3), vous guidera tout au long du processus de configuration d'un compte AWS S3.
Voici les étapes à suivre pour configurer et implémenter un utilisateur dans IAM. Ceci est écrit pour Windows mais vous pouvez le modifier pour une utilisation sous Linux, UNIX et / ou Mac OSX.
- Installer et configurer l'interface de ligne de commande (CLI)
- Créer un groupe
- Donner un accès de groupe à S3 Bucket et CloudFront
- Créer un utilisateur et ajouter au groupe
- Créer un profil de connexion et créer des clés
- Test d'accès
Installer et configurer l'interface de ligne de commande (CLI)
IAM Command Line Toolkit est un programme Java disponible dans les outils de développement AWS d'Amazon. L'outil vous permet d'exécuter des commandes API IAM à partir d'un utilitaire shell (DOS pour Windows).
- Vous devez exécuter Java 1.6 ou supérieur. Vous pouvez télécharger la dernière version de Java.com. Pour voir quelle version est installée sur votre système Windows, ouvrez l'invite de commande et tapez java -version. Cela suppose que java.exe est dans votre PATH.
- Téléchargez la boîte à outils IAM CLI et décompressez quelque part sur votre disque local.
- Il y a 2 fichiers à la racine de la boîte à outils CLI que vous devez mettre à jour.
- aws-credential.template: Ce fichier contient vos informations d'identification AWS. Ajoutez votre AWSAccessKeyId et votre AWSSecretKey, enregistrez et fermez le fichier.
- client-config.template: Vous devez uniquement mettre à jour ce fichier si vous avez besoin d’un serveur proxy. Supprimez les signes # et mettez à jour ClientProxyHost, ClientProxyPort, ClientProxyUsername et ClientProxyPassword. Enregistrez et fermez le fichier.
- L'étape suivante consiste à ajouter des variables d'environnement. Aller au panneau de configuration | Propriétés du système | Paramètres système avancés | Variables d'environnement. Ajoutez les variables suivantes:
- AWS_IAM_HOME: Définissez cette variable dans le répertoire où vous avez dézippé le toolkit CLI. Si vous utilisez Windows et que vous l'avez décompressé à la racine de votre lecteur C, la variable serait C: IAMCli-1.2.0.
- JAVA_HOME: Définissez cette variable dans le répertoire où Java est installé. Ce serait l'emplacement du fichier java.exe. Dans une installation Java normale de Windows 7, il s’agirait de quelque chose comme C: Program Files (x86) Java jre6.
- AWS_CREDENTIAL_FILE: Définissez cette variable sur le chemin et le nom du fichier aws-credential.template que vous avez mis à jour ci-dessus. Si vous utilisez Windows et que vous l'avez décompressé à la racine de votre lecteur C, la variable serait C: IAMCli-1.2.0 aws-credential.template.
- CLIENT_CONFIG_FILE: Vous devez uniquement ajouter cette variable d’environnement si vous avez besoin d’un serveur proxy. Si vous exécutez Windows et que vous l'avez décompressé à la racine de votre lecteur C, la variable serait C: IAMCli-1.2.0 client-config.template. N'ajoutez pas cette variable sauf si vous en avez besoin.
- Testez l'installation en accédant à l'invite de commande et en entrant iam-userlistbypath. Tant que vous ne recevez pas d'erreur, vous devriez être prêt à partir.
Toutes les commandes IAM peuvent être exécutées à partir de l'invite de commande. Toutes les commandes commencent par "iam-".
Créer un groupe
Il est possible de créer un maximum de 100 groupes pour chaque compte AWS. Bien que vous puissiez définir des autorisations dans IAM au niveau de l'utilisateur, l'utilisation de groupes constitue la meilleure pratique. Voici le processus de création d'un groupe dans IAM.
- La syntaxe de création d'un groupe est la suivante: iam-groupcreate -g GROUPNAME -p PATH -v où -p et -v sont des options. Une documentation complète sur l'interface de ligne de commande est disponible sur AWS Docs.
- Si vous souhaitez créer un groupe appelé "awesomeusers", vous devez entrer iam-groupcreate -g awesomeusers à l'invite de commande.
- Vous pouvez vérifier que le groupe a été créé correctement en entrant iam-grouplistbypath à l'invite de commande. Si vous n'aviez créé que ce groupe, le résultat serait quelque chose comme "arn: aws: iam :: 123456789012: group / awesomeusers", où le numéro correspond à votre numéro de compte AWS.
Donner un accès de groupe à S3 Bucket et CloudFront
Les stratégies contrôlent ce que votre groupe est capable de faire dans S3 ou CloudFront. Par défaut, votre groupe n'a accès à rien dans AWS.J'ai trouvé que la documentation sur les politiques était correcte, mais en créant quelques règles, j'ai fait quelques essais et erreurs pour que les choses fonctionnent comme je le voulais.
Vous avez plusieurs options pour créer des politiques. Une option est que vous pouvez les entrer directement dans l'invite de commande. Étant donné que vous créez peut-être une stratégie et que vous la modifiez, il me semblait plus facile d'ajouter la stratégie dans un fichier texte, puis de télécharger le fichier texte en tant que paramètre à l'aide de la commande iam-groupuploadpolicy. Voici le processus utilisant un fichier texte et le téléchargement sur IAM.
- Utilisez quelque chose comme Notepad, entrez le texte suivant et enregistrez le fichier:
- {
- "Déclaration":{
- "Effet": "Autoriser",
- "Action": "s3: *",
- "Ressource":
- "arn: aws: s3 ::: BUCKETNAME",
- "arn: aws: s3 ::: BUCKETNAME / *"
- },
- {
- "Effet": "Autoriser",
- "Action": "s3: ListAllMyBuckets",
- "Ressource": "arn: aws: s3 ::: *"
- },
- {
- "Effet": "Autoriser",
- "Action": "cloudfront: *",
- "Ressource":"*"
- }
- }
- Il y a 3 sections à cette politique. L'effet est utilisé pour autoriser ou refuser un type d'accès. L'action est ce que le groupe peut faire de particulier. La ressource serait utilisée pour donner accès à des compartiments individuels.
- Vous pouvez limiter les actions individuellement. Dans cet exemple, "Action": "s3: GetObject", "s3: ListBucket", "s3: GetObjectVersion", le groupe pourrait lister le contenu d'un compartiment et télécharger des objets.
- La première section "Autorise" le groupe à effectuer toutes les actions S3 du compartiment "BUCKETNAME".
- La deuxième section "Permet" au groupe de répertorier tous les compartiments de S3. Vous en avez besoin pour pouvoir voir la liste des compartiments si vous utilisez quelque chose comme la console AWS.
- La troisième section donne au groupe un accès complet à CloudFront.
Il existe de nombreuses options pour les stratégies IAM. Amazon dispose d'un outil vraiment génial appelé AWS Policy Generator. Cet outil fournit une interface utilisateur graphique dans laquelle vous pouvez créer vos stratégies et générer le code dont vous avez besoin pour implémenter la stratégie. Vous pouvez également consulter la section Langue de la stratégie d'accès de la documentation en ligne Utilisation d'AWS Identity and Access Management.
Créer un utilisateur et ajouter au groupe
Le processus de création d’un nouvel utilisateur et d’ajout à un groupe pour lui fournir un accès implique deux étapes.
- La syntaxe pour créer un utilisateur est: iam-usercreate -u USERNAME -p CHEMIN -g GROUPES … -k -v où les options -p, -g, -k et -v sont. Une documentation complète sur l'interface de ligne de commande est disponible sur AWS Docs.
- Si vous souhaitez créer un utilisateur "bob", vous devez saisir iam-usercreate -u bob -g awesomeusers à l'invite de commande.
- Vous pouvez vérifier que l'utilisateur a été créé correctement en entrant iam-grouplistusers -g awesomeusers à l'invite de commande. Si vous n'aviez créé que cet utilisateur, le résultat serait quelque chose comme "arn: aws: iam :: 123456789012: user / bob", où le numéro correspond à votre numéro de compte AWS.
Créer un profil de connexion et créer des clés
À ce stade, vous avez créé un utilisateur, mais vous devez lui fournir un moyen d’ajouter et de supprimer des objets de S3. Deux options sont disponibles pour fournir à vos utilisateurs un accès à S3 via IAM. Vous pouvez créer un profil de connexion et fournir un mot de passe à vos utilisateurs. Ils peuvent utiliser leurs informations d'identification pour se connecter à la console Amazon AWS. L'autre option consiste à donner à vos utilisateurs une clé d'accès et une clé secrète. Ils peuvent utiliser ces clés dans des outils tiers tels que S3 Fox, CloudBerry S3 Explorer ou S3 Browser.
Créer un profil de connexion
La création d'un profil de connexion pour vos utilisateurs S3 leur fournit un nom d'utilisateur et un mot de passe qu'ils peuvent utiliser pour se connecter à la console Amazon AWS.
- La syntaxe permettant de créer un profil de connexion est iam-useraddloginprofile -u USERNAME -p PASSWORD. Une documentation complète sur l'interface de ligne de commande est disponible sur AWS Docs.
- Si vous souhaitez créer un profil de connexion pour l'utilisateur "bob", vous devez saisir iam-useraddloginprofile -u bob -p PASSWORD à l'invite de commande.
- Vous pouvez vérifier que le profil de connexion a été créé correctement en entrant iam-usergetloginprofile -u bob à l'invite de commande. Si vous aviez créé un profil de connexion pour bob, le résultat serait quelque chose comme "Le profil de connexion existe pour l'utilisateur bob".
Créer des clés
La création d'une clé d'accès secrète AWS et de l'ID de clé d'accès AWS correspondant permettra à vos utilisateurs d'utiliser un logiciel tiers, tel que ceux mentionnés précédemment. N'oubliez pas que, par mesure de sécurité, vous ne pouvez obtenir ces clés que lors de l'ajout du profil d'utilisateur. Assurez-vous de copier et coller la sortie à partir de l'invite de commande et de l'enregistrer dans un fichier texte. Vous pouvez envoyer le fichier à votre utilisateur.
- La syntaxe permettant d'ajouter des clés à un utilisateur est iam-useraddkey -u USERNAME. Une documentation complète sur l'interface de ligne de commande est disponible sur AWS Docs.
- Si vous souhaitez créer des clés pour l'utilisateur "bob", vous devez saisir iam-useraddkey -u bob à l'invite de commande.
- La commande affichera les clés qui ressembleraient à ceci:
- AKIACOOB5BQVEXAMPLE
- BvQW1IpqVzRdbwPUirD3pK6L8ngoX4PTEXAMPLE
- La première ligne est l'identifiant de la clé d'accès et la seconde ligne est la clé d'accès secrète. Vous avez besoin des deux logiciels tiers.
Test d'accès
Maintenant que vous avez créé des groupes / utilisateurs IAM et que les groupes ont accès à l'aide de stratégies, vous devez tester l'accès.
Accès à la console
Vos utilisateurs peuvent utiliser leur nom d'utilisateur et leur mot de passe pour se connecter à la console AWS. Cependant, il ne s'agit pas de la page de connexion habituelle à la console utilisée pour le compte AWS principal. Vous pouvez utiliser une URL spéciale qui fournira un formulaire de connexion pour votre compte Amazon AWS uniquement. Voici l'URL de connexion à S3 pour vos utilisateurs IAM.
https://AWS-ACCOUNT-NUMBER.signin.aws.amazon.com/console/s3
AWS-ACCOUNT-NUMBER est votre numéro de compte AWS habituel. Vous pouvez l'obtenir en vous connectant au formulaire de connexion Amazon Web Service. Connectez-vous et cliquez sur Compte | L'activité du compte. Votre numéro de compte est dans le coin supérieur droit. Assurez-vous de supprimer les tirets. L'URL ressemblerait à quelque chose comme https://123456789012.signin.aws.amazon.com/console/s3.
Utilisation des touches d'accès
Vous pouvez télécharger et installer n’importe quel outil tiers déjà mentionné dans cet article. Entrez votre ID de clé d'accès et la clé d'accès secrète conformément à la documentation de l'outil tiers.
Je vous recommande fortement de créer un utilisateur initial et de le laisser tester complètement qu'il peut faire tout ce qu'il doit faire dans S3. Après avoir vérifié l'un de vos utilisateurs, vous pouvez configurer tous vos utilisateurs S3.