Bien qu’injecter les variables AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY via les variables GitLab soit une pratique très courante, il s’agit d’une approche sous-optimale, même en utilisant le drapeau Protected. À la place, le protocole OIDC devrait être utilisé pour construire des pipelines bien plus sécurisés. Ce tutoriel sera très concret et pratique.

Obtenir le jeton OIDC

C’est déjà bien documenté dans la documentation officielle, mais en résumé : vous pouvez demander à GitLab de générer un ou plusieurs jetons pour l’exécution d’un job. Le nom du jeton peut être librement choisi — idéalement, utilisez un nom parlant. Le champ audience doit représenter le système externe auquel le jeton est destiné. Dans ce cas, STS fait référence à AWS Secure Token Service.


Responsive Image


Échanger le jeton OIDC

L’étape suivante consiste à échanger le jeton OIDC contre des identifiants temporaires AWS. Cela se fait via STS (Secure Token Service). La syntaxe est un peu particulière, mais l’opération reste assez simple. Une fois l’échange effectué, vous pourrez utiliser l’AWS CLI comme d’habitude.


Responsive Image


Configuration côté AWS

La partie qui pose le plus souvent problème est la configuration côté AWS. Dans la console AWS, allez dans IAM > Fournisseurs d'identité (Identity providers) et créez-en un nouveau.


Responsive Image

Si vous avez un doute sur l’URL à utiliser, ajoutez /.well-known/openid-configuration à la fin de l’URL — cela doit retourner un JSON. Tous les fournisseurs OIDC exposent leur configuration à ce point d’entrée. Pour GitLab, l’URL est https://gitlab.com

Notez que le champ audience est en réalité arbitraire — il suffit simplement qu’il corresponde entre GitLab et AWS, et qu’il ait une valeur significative pour vous.


Responsive Image


Créer un rôle IAM

C’est la partie intéressante — vous pouvez maintenant créer un rôle IAM qui utilise le fournisseur d’identité que nous venons de créer comme entité de confiance.


Responsive Image

Respectez toujours le principe du moindre privilège lors de l’ajout des permissions !


Responsive Image

GitLab inclut une valeur sub dans le jeton OIDC qui contient des informations sur le groupe, le projet et la branche. C’est extrêmement puissant ! Cela signifie que vous pouvez créer des rôles IAM qui ne sont utilisables que lors de l’exécution depuis une branche spécifique.


Responsive Image

Par exemple, le rôle IAM responsable du déploiement vers production devrait inclure une condition limitant son usage à la branche prod. Dans GitLab, vous pouvez ensuite appliquer des protections sur cette branche, comme l’exigence de revues de code. En combinant la granularité des rôles IAM avec les protections de branches GitLab, vous pouvez construire un pipeline DevOps à la fois très sécurisé et conforme.

Autres Articles

Solutions numériques

contact@thirdbridge.ca

+1 514 316 5399

1751 Rue Richardson Bureau 5.120, Montréal, QC H3K 1G6

330 Rue Saint-Vallier E suite 330, Québec, QC G1K

1475 North Scottsdale Road, Suite 200, Scottsdale, AZ 85257

Solutions numériques

contact@thirdbridge.ca

+1 514 316 5399

1751 Rue Richardson Bureau 5.120, Montréal, QC H3K 1G6

330 Rue Saint-Vallier E suite 330, Québec, QC G1K

1475 North Scottsdale Road, Suite 200, Scottsdale, AZ 85257

Solutions numériques

contact@thirdbridge.ca

+1 514 316 5399

1751 Rue Richardson Bureau 5.120, Montréal, QC H3K 1G6

330 Rue Saint-Vallier E suite 330, Québec, QC G1K

1475 North Scottsdale Road, Suite 200, Scottsdale, AZ 85257