On connait tous les avantages qu’offre l’adoption du Cloud AWS, on peut rapidement et facilement concevoir une architecture et commencer à l’exploiter, mais rapidement on se retrouve avec une multitude de services activés et ressources créées, sans pour autant maîtriser leurs cycles de vie ni leurs rôles exacts.
AWS Config vient répondre à cette problématique en offrant plusieurs possibilités :
Fournir l’inventaire complet de services et ressources par compte et par région. Il y a la possibilité de faire des agrégations, et en plus, l’inventaire affiche les relations entre les ressources, ce qui est très utile pour la détection des dépendances et pour faire du re-engineering.
Détecter les changements effectués aux configurations des ressources et les enregistrer. Du coup, on peut connaitre même les ressources supprimées.
Définir des règles de conformité et auditer les ressources selon ces règles.
Déclencher des notifications ou des actions si une règle n’est pas respectée.
Dans cet article, on va faire des actions simples comme l'activation du service et l'exploration des données.
Configuration et activation du service
Configuration de AWS Cli
Pour activer le service, on peut utiliser la console comme AWS Cli, pour le reste de l'article on utilisera les commandes awscli.
Ci-dessous deux articles intéressants pour configurer AWS Cli sous Windows et Linux:
Configurer son AWS Cli sous LinuxWindows Subsystem Linux et SDK Cloud
Configuration d'un bucket S3 pour le stockage des historiques
Ci-dessous la commande pour créer un bucket S3 pour l’enregistrement des actions, il peut agréger plusieurs comptes et plusieurs régions :
aws s3api create-bucket --bucket "config-recording-easyteam-123" --region us-east-1
Le service a besoin des droits pour écrire dans le nouveau bucket S3, ci-dessous les actions pour le faire.
Ajout d’une policy pour lire et écrire depuis le service Config :
aws s3api put-bucket-policy --bucket "config-recording-easyteam-123" --policy file://bucket-policy.json --region us-east-1
Voici le contenu de bucket-policy.json, config-recording-easyteam-123 est le nom du bucket S3 et 826065621341est l'accound ID :
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AWSConfigBucketPermissionsCheck",
"Effect":"Allow",
"Principal":{
"Service":"config.amazonaws.com"
},
"Action":"s3:GetBucketAcl",
"Resource":"arn:aws:s3:::config-recording-easyteam-123"
},
{
"Sid":"AWSConfigBucketDelivery",
"Effect":"Allow",
"Principal":{
"Service":"config.amazonaws.com"
},
"Action":"s3:PutObject",
"Resource":"arn:aws:s3:::config-recording-easyteam-123/AWSLogs/826065621341/*",
"Condition":{
"StringEquals":{
"s3:x-amz-acl":"bucket-owner-full-control"
}}}]}
Création du rôle adossé au service
Si le rôle attaché au service configservice n'existe pas encore, on peut le créer avec cette commande :
aws iam create-service-linked-role --aws-service-name config.amazonaws.com
Création d'une notification
Le service qui gère les notification chez AWS est SNS (Simple Notification Service), on peut facilement créer un topic avec la commande suivante, qui envoie un mail vers l'adresse email renseignée :
aws sns subscribe --topic-arn arn:aws:sns:us-east-2:826065621341:config-easyteam-blog --protocol email --notification-endpoint tonmail@provider.com
Il faut ensuite accéder à la boite de réception du mail et accepter la souscription aux notifications.
Activation de config service
La commande suivante activera le service avec les paramètres par défaut pour la région en cours, avec les dépendances qu'on a créé plus tôt :
aws configservice subscribe --s3-bucket config-recording-easyteam-123 --iam-role arn:aws:iam::826065621341:role/aws-service-role/config.amazonaws.com/AWSServiceRoleForConfig --sns-topic config-easyteam-blog
C’est tout pour la partie configuration, à présent toutes les actions effectuées sur toutes les ressources seront détectées, enregistrées et historisées, en plus une notification mail sera envoyée.
Dans le tableau de bord, on retrouve l’inventaire des ressources :
Historique de configuration
Ici, un exemple de l’historique complet d’une instance EC2 créée, modifiée, redémarrée puis supprimée.
Chaque case correspond à une nouvelle configuration, les événements associés sont récupérés depuis CloudTrail :
En cliquant sur "Changes" on retrouve tout ce qui changé durant cette action, on découvre aussi les autres ressources en relation avec celle-ci :
Inventaire et audit via ligne de commande
Pour récupérer la liste des ressources en ligne de commande :
aws configservice list-discovered-resources --resource-type AWS::EC2::SecurityGroup --include-deleted-resources
Il faut renseigner le type de ressources à lister. En plus, si on veut récupérer les ressources supprimées, il suffit d'ajouter --include-deleted-resources
Pour récupérer le détail de configuration de plusieurs ressources en mode batch :
aws configservice batch-get-resource-config --resource-keys resourceType=AWS::EC2::SecurityGroup,resourceId=sg-0590af2068b01b542 resourceType=AWS::EC2::SecurityGroup,resourceId=sg-0663570520a0c9b58 resourceType=AWS::EC2::SecurityGroup,resourceId=sg-b7b8a3df
Maintenant, pour récupérer l’historique des configurations d’une ressource, même après l’avoir supprimée :
aws configservice get-resource-config-history --resource-type AWS::EC2::Instance --resource-id i-0f797d447ba187e13
Et si vous souhaitez vous former sur Amazon Web Services, découvrez notre offre de formations AWS.
Partage
Gardez un oeil sur tout
Recevez des notifications dès la publication d’un nouvel article et restez informé de l’actualité Cloud !
Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations des appareils. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines caractéristiques et fonctions.
Fonctionnel
Toujours activé
L’accès ou le stockage technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
L’accès ou le stockage technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’internaute.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
L’accès ou le stockage technique est nécessaire pour créer des profils d’internautes afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.