01 IA responsable
Risques de sécurité et domaines sensibles
1.6 Les risques sécurité du code généré
Copilot peut générer du code vulnérable si le contexte ou le prompt ne sont pas assez précis.
Risque 1 : Injection SQL
Mauvais code :
query = f"SELECT * FROM users WHERE id = {user_id}"Bon code :
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))Risque 2 : Command injection
Mauvais code :
import os
def ping_host(host):
os.system(f"ping -c 1 {host}")Si host vient d’un utilisateur, c’est dangereux.
Meilleure version :
import subprocess
def ping_host(host):
subprocess.run(
["ping", "-c", "1", host],
check=True
)Et encore mieux : valider l’input avant.
Risque 3 : Secrets hardcodés
Mauvais code :
API_KEY = "prod-123456789"Bon code :
import os
API_KEY = os.getenv("API_KEY")Risque 4 : Mauvaise gestion des permissions cloud
Mauvaise policy IAM :
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}Copilot peut générer ça pour aller vite.
Meilleure approche :
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::my-bucket/*"
]
}Principe :
Toujours appliquer le least privilege.
1.10 Les domaines sensibles où il faut être prudent
Copilot est utile, mais certains domaines nécessitent une validation beaucoup plus stricte.
Sécurité
Exemples :
- authentification ;
- autorisation ;
- chiffrement ;
- gestion des secrets ;
- IAM ;
- firewall rules ;
- validation d’input ;
- gestion de sessions.
Règle :
Ne jamais accepter du code sécurité sans review.
Infrastructure cloud
Les ressources cloud (AWS, Azure, GCP ou autre) sont un piège classique : une configuration qui fonctionne peut être beaucoup trop permissive.
Copilot peut générer :
- des policies trop permissives ;
- des security groups ouverts ;
- des buckets publics ;
- des rôles IAM trop larges ;
- des configurations réseau faibles ;
- des secrets en clair.
Exemple dangereux :
cidr_blocks = ["0.0.0.0/0"]Ce n’est pas toujours mauvais, mais il faut comprendre le contexte.
Données personnelles
Attention aux systèmes qui manipulent :
- noms ;
- emails ;
- adresses ;
- numéros de téléphone ;
- données de santé ;
- informations financières ;
- données RH ;
- logs utilisateurs.
Bonne pratique :
Use anonymized sample data instead of real customer data.Décisions automatisées
Très risqué si le système décide :
- qui est accepté ;
- qui est refusé ;
- qui est suspect ;
- qui est prioritaire ;
- qui reçoit un prix ;
- qui obtient un crédit ;
- qui est signalé.
Copilot peut aider à coder, mais la conception doit être très contrôlée.
À retenir pour le GH-300
- Les domaines sensibles (authentification, secrets, permissions, données personnelles) demandent une validation renforcée.
- Le bon réflexe est d’agir : corriger ou refuser, tester, faire relire, plutôt que seulement nommer la faille.
- Moindre privilège pour les permissions ; aucun secret dans le code ni dans un prompt.
- Une décision automatisée sur des personnes exige une conception très contrôlée.
Pratique : Choisir l’action responsable
Chaque exemple montre du code généré par Copilot. Choisis l’action responsable avant de l’accepter. Aucun code n’est exécuté : tu raisonnes sur ce qu’il faut vérifier, corriger ou refuser.
Chargement de la question…
Questions de la leçon
Chargement de la question…
Pour finir
À retenir
- Les domaines sensibles (authentification, secrets, permissions, données personnelles) demandent une validation renforcée.
- Le bon réflexe est d’agir : corriger ou refuser, tester, faire relire, plutôt que seulement nommer la faille.
- Moindre privilège pour les permissions ; aucun secret dans le code ni dans un prompt.
- Une décision automatisée sur des personnes exige une conception très contrôlée.
Objectif GH-300
- Préjudices et mesures d’atténuation (Identify potential harms and mitigation strategies of AI usage)
Achèvement
Il reste à faire : , .