Blog | WeScale

Comment mettre en place une politique de tagging sur AWS ?

Rédigé par Antoine Mayer | 18/12/2023

La façon dont nous déployons, gérons et mettons à l'échelle nos ressources informatiques a radicalement changé avec l’adoption du Cloud. AWS (Amazon Web Services) est l'un des principaux acteurs de cette transformation, offrant des services et des ressources en constante évolution.

Cependant, avec la flexibilité et la puissance du cloud viennent également des défis de gestion. La multiplication des instances, des bases de données et des services peut rapidement complexifier le suivi des ressources. C'est là qu'intervient la politique de tagging.

Les tags, ce sont des petites étiquettes numériques, souvent négligées, mais ils jouent un rôle capital dans la gestion des ressources AWS. Ils permettent de marquer et de classifier nos ressources de manière logique. Ils offrent une plus grande visibilité, une gestion des coûts, une automatisation simplifiée et un renforcement de la sécurité. Dans cet article, nous découvrons la mise en place de tags sur AWS et les avantages qu'ils apportent à nos infrastructures cloud.

 

Comprendre les tags AWS

On l’a vu, en introduction, un tag AWS est une étiquette ou un libellé qui peut être attaché à une ressource spécifique, telle qu'une instance EC2, une base de données RDS, un bucket S3 ou tout autre élément de notre infrastructure cloud. Chaque tag se compose de deux parties : une clé (key) et une valeur (value). La clé est un nom que vous attribuez au tag, tandis que la valeur est une description ou une caractéristique spécifique associée à cette clé. Par exemple, vous pourriez avoir un tag avec la clé "Environnement" et la valeur "Développement" pour indiquer que la ressource est utilisée dans un environnement de développement.

Les tags sont souvent comparés aux métadonnées, mais il existe une distinction claire entre les deux. Les métadonnées sont des informations intégrées à une ressource pour la décrire, tandis que les tags sont des informations additionnelles que nous pouvons ajouter pour organiser, classifier et gérer nos ressources. Par exemple, une instance EC2 peut avoir des métadonnées telles que le type d'instance ou bien l'ID de l'instance. Tandis qu'un tag pourrait être utilisé pour indiquer le nom du projet auquel cette instance est associée.

Les tags AWS peuvent être associés à presque toutes les ressources que nous déployons. Il est possible de les ajouter lors de la création ou de les attacher ultérieurement. AWS prend en charge les tags sur de nombreux services, ce qui signifie que nous pouvons les utiliser de manière cohérente dans toute notre infrastructure cloud. Ils peuvent également être modifiés ou supprimés à tout moment en fonction de l'évolution de nos besoins.

 

Les avantages d’une politique de tagging

L'un des premiers et des plus grands bénéfices de l'utilisation de tags est la visibilité sur notre infrastructure. En associant des tags cohérents à chaque ressource, on identifie rapidement à quelle application, projet ou équipe appartient chaque élément. On peut faire l’analogie suivante : 

Imaginez une bibliothèque où chaque livre serait étiqueté avec des mots-clés pour en faciliter la recherche : c'est exactement ce que font les tags AWS pour votre environnement cloud.

Cette approche nous permet de suivre précisément les dépenses cloud. Il est ensuite possible d’utiliser ces données pour optimiser les coûts, allouer efficacement les ressources et prendre des décisions budgétaires réfléchies.

Les tags AWS sont un élément essentiel de l'automatisation. On peut les utiliser pour déclencher des actions spécifiques ou des politiques de gestion. Par exemple, créons une politique qui met automatiquement hors service les instances EC2 portant le tag "Environnement" avec la valeur "Développement" en dehors des heures de bureau pour diminuer les coûts. 

Cependant, ils ne se limitent pas à la gestion opérationnelle. Ils peuvent également contribuer à renforcer la sécurité et la conformité de notre infrastructure. En associant des tags à des ressources sensibles ou à des données réglementées, vous pouvez mettre en place des politiques de sécurité granulaires et des contrôles d'accès basés sur ces tags. Ainsi, vous pouvez garantir que seules les personnes autorisées ont accès aux ressources appropriées, renforçant ainsi la sécurité globale de votre environnement.

 

Mise en place d’une politique de tagging efficace

Voici comment vous pouvez élaborer et déployer une politique de tagging efficace.

Avant de commencer à taguer vos ressources, il est essentiel de définir une stratégie claire et cohérente. Cela implique de déterminer quelles clés seront utilisées, quelles valeurs elles prendront et quelles ressources seront taguées. Il est important d'impliquer les différentes parties prenantes, comme les équipes opérationnelles, dev, data et financières, pour élaborer une stratégie qui répond à vos besoins.

Assurez-vous que la stratégie est bien documentée et communiquée à tous les membres de l'équipe.

Voici un exemple de tableau qui peut servir de référence :

Name Key Mandatory Category Possible Values Example Comment
Application Name AppName No FinOps/Ops   myApp  
Project Name ProjectName No FinOps/Ops   project1  
Environment EnvironmentType Yes FinOps DEV / QA / INT / PREPROD / PROD    
CostCenter CostCenter Yes FinOps BUILD / RUN / DATA / MARKETING / IT   Team Responsible
Source StackSource Yes Ops   https://gitlab.my-compagny.com/SRE/eks-tf  

Les noms de clés et de valeurs doivent être intuitifs et compréhensibles pour tout le personnel impliqué. Il faut éviter les noms trop génériques ou ésotériques qui pourraient entraîner de la confusion. Ils doivent être cohérents dans toute l'organisation afin de garantir une utilisation uniforme.

AWS fournit une documentation de bonnes pratiques, que vous pouvez suivre afin de tagger correctement vos ressources.

Pour que la politique de tagging fonctionne, elle doit être intégrée dans les workflows de déploiement et de gestion. Cela signifie que chaque fois qu'une nouvelle ressource est créée, les tags appropriés doivent être ajoutés automatiquement. Nous pouvons utiliser des outils d’Infrastructure as Code comme AWS CloudFormation ou Terraform pour automatiser ce processus. 

Une politique de tagging efficace n'est pas statique. Elle doit évoluer en même temps que l’infrastructure et les besoins. En prévoyant des revues régulières, nous pouvons ajuster les tags au fil du temps.

Surveiller l'utilisation des tags pour garantir la conformité avec la stratégie établie permet d'éviter les dérives et de s’assurer que notre politique de tagging est respectée.

 

Outils et ressources pour la gestion des tags

Maintenant que nous avons discuté de l'importance d'une politique de tagging efficace, il est temps de découvrir les outils et les ressources disponibles pour nous aider à gérer nos tags de manière automatisée au sein de notre infrastructure.

Terraform est un outil puissant pour la gestion de l'infrastructure sur AWS. On peut l’utiliser pour définir des ressources et appliquer des tags de manière cohérente. De plus, il permet de définir des tags au niveau du fournisseur (provider) pour toutes les ressources créées, garantissant ainsi que chacune d’entre elles aura les tags requis. Voici comment cela peut être fait :

provider "aws" {
region = "eu-west-3"
default_tags {
tags = {
  "Environment" = "Production"
  "Owner" = "WeScale"
}
}
}

resource "aws_instance" "example" {
  ami       = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
  tags = {
"Name" = "MyInstance"
}
}

Cet exemple définit des tags par défaut ("Environment" et "Owner") au niveau du fournisseur, et nous spécifions un tag supplémentaire ("Name") pour l'instance. Cela assure que chaque ressource créée par Terraform disposera des tags requis.

Voici un exemple pour CloudFormation :

AWSTemplateFormatVersion: "2010-09-09"
Metadata:
AWS::CloudFormation::Interface:
  ParameterGroups:
   - Label:
  default: "AWS Tags"
   Parameters:
  - DefaultEnvironment
  - DefaultOwner
Parameters:
    DefaultEnvironment:
  Type: String
  Default: "Production"
  Description: "Default environment tag for resources."

DefaultOwner:
  Type: String
  Default: "WeScale"
  Description: "Default owner tag for resources."

  Resources:
    MyInstance:
    Type: "AWS::EC2::Instance"
    Properties:
    ImageId: "ami-0c55b159cbfafe1f0"
    InstanceType: "t2.micro"
    Tags:
    - Key: "Name"
    Value: "MyInstance"

On peut également citer AWS Config. C’est un service offrant des informations sur les ressources de votre compte AWS. On peut créer une règle AWS Config personnalisée pour s’assurer que toutes les ressources sont taguées conformément à notre stratégie. Il est également possible de mettre en place une stratégie de remédiation si la politique de tags n’est pas respectée. Dans ce cas, toutes ressources non compliantes ne pourra être créée.

AWS Security Hub est un autre service de sécurité permettant d'agréger et d'inspecter les résultats des contrôles de sécurité pour nos ressources AWS. On peut tout à fait l’utiliser pour surveiller la conformité de ces dernières.

AWS Organizations permet de gérer plusieurs comptes AWS et de définir des politiques organisationnelles. Vous pouvez configurer des politiques de tagging au niveau de l'organisation pour imposer des directives cohérentes sur tous les comptes et les ressources. Cela garantit une application uniforme des tags à travers toute l'organisation AWS.

Enfin, Tfsec, qui est un outil open source pour détecter les vulnérabilités et les problèmes de sécurité dans les fichiers Terraform. Vous pouvez l'intégrer à vos pipelines de CI/CD pour empêcher le déploiement de ressources non-conformes en termes de tags. Pour cela, il va falloir créer une règle personnalisée. Voici de la documentation à ce sujet. Cela garantit que les ressources ne peuvent pas être déployées sans les tags appropriés, renforçant ainsi la conformité avec votre politique de tagging. Les outils côtés IaC tels que Terraform permettent de vérifier le code avant qu’il ne soit appliqué. Checkov peut être une alternative à Tfsec.

En utilisant ces outils et méthodes, vous automatisez la gestion des tags, vous renforcez la conformité et vous vous assurez que les ressources dans votre environnement AWS sont toujours correctement étiquetées. 

De plus, dans le cadre d'AWS, il est essentiel de mentionner la capacité de mettre en place un du tag-based policy access. Concrètement, cela signifie que vous pouvez définir des politiques d'accès spécifiques en fonction des tags. Par exemple, vous pouvez restreindre l'accès à certaines ressources uniquement pour les utilisateurs ou les équipes associés à un tag particulier. Cela ajoute une couche supplémentaire de sécurité et une gestion fine des autorisations.

Le tag-based policy access, permet d'aligner vos stratégies de sécurité sur la structure organisationnelle de votre entreprise. Renforçant ainsi la sécurité, la conformité et l'optimisation des ressources dans votre environnement AWS.

 

Conclusion 

La gestion des ressources dans le cloud est une tâche complexe qui peut rapidement devenir un défi de taille. Cependant, grâce à une politique de tagging, on peut gérer notre infrastructure de manière fluide, économique et sécurisée. Les tags ne sont pas simplement des étiquettes numériques. On l’a vu, tout au long de cet article, ce sont des outils stratégiques offrant de multiples avantages. Rappelons brièvement les points clés de cet article.

  • Les tags sont des étiquettes numériques composées de clés et de valeurs qui peuvent être associées à presque toutes les ressources AWS. Ils facilitent la catégorisation, l'organisation et la gestion des ressources dans le cloud.
  • Les avantages d'une politique de tagging bien conçue sont multiples. Vous améliorez la visibilité, optimisez la gestion des coûts, simplifiez l'automatisation et renforcez la sécurité de votre infrastructure AWS.
  • Pour mettre en place une politique de tagging efficace, il faut définir une stratégie cohérente, créer des tags significatifs, intégrer cette politique dans nos workflows et s’assurer de la gouvernance dans le temps.
  • Terraform permet de définir des tags au niveau du provider pour garantir la cohérence.
  • Des services tels que AWS Config et Security Hub peuvent être utilisés pour surveiller la conformité des tags, tandis que des outils comme tfsec vous permettent d'empêcher le déploiement de ressources non-conformes.

Nous terminons cet article sur le fait qu’il est important que la gestion des tags soit un processus évolutif. La politique de tagging peut et doit s'adapter aux besoins changeants des organisations et des infrastructures cloud.

La gestion des tags AWS n'est pas seulement une affaire de technologie, mais aussi de stratégie et de discipline. En investissant dans la création et dans la mise en œuvre d'une politique de tagging, vous maximisez l'efficacité opérationnelle de votre infrastructure cloud, tout en gardant le contrôle sur les coûts et en renforçant la sécurité.