11 Confidentialité et garde-fous
Privacy, données sensibles et content exclusions
Cette leçon contient des faits datés. Dates et sources
11.1 Privacy fundamentals 🔒
Définition simple
La privacy dans GitHub Copilot concerne la manière dont les données sont :
- collectées ;
- envoyées ;
- utilisées ;
- partagées ;
- protégées ;
- exclues ;
- contrôlées par policies.
En gros :
Quelles informations Copilot peut-il utiliser, et comment éviter qu’il utilise des données sensibles ?
Données potentiellement concernées
Quand tu utilises Copilot, plusieurs types de données peuvent être impliqués :
- prompt utilisateur
- code autour du curseur
- fichier sélectionné
- fichiers ouverts
- historique de chat
- métadonnées techniques
- contexte repository
- contenu d’issue ou PR selon la surface utilisée
- instructions files
- prompt files
- Spaces
- sources MCP si configurées
Exemple simple
Tu demandes :
Explain this function.Copilot peut utiliser :
- ton prompt
- la fonction sélectionnée
- le langage
- le fichier courant
- éventuellement le contexte ouvert dans l’IDE
Donc même si ton prompt est court, le contexte envoyé ou utilisé peut être plus riche.
Principe fondamental
Ne donne à Copilot que le contexte nécessaire.
Ce n’est pas parce qu’un outil peut recevoir beaucoup de contexte qu’il faut tout lui donner.
Mauvais réflexe ❌
Je colle tout le fichier de logs de production dans Copilot Chat.Problèmes :
- emails réels
- tokens
- IPs
- IDs clients
- erreurs internes
- données personnelles
Bon réflexe ✅
Je nettoie le log. Je remplace les données sensibles par des placeholders. Je fournis uniquement l’extrait utile.
Exemple :
User <USER_ID> received error 403 when calling /api/orders.
Token: <REDACTED>
Email: <REDACTED>
Timestamp: 2026-05-19T10:00:00ZÀ retenir pour l’examen
Si une question mentionne :
sensitive data
customer data
production logs
secrets
tokens
private informationLa bonne réponse implique souvent :
- ne pas envoyer les données brutes
- anonymiser
- utiliser des placeholders
- appliquer les policies
- configurer content exclusions
- limiter le contexte
11.2 Données sensibles et secrets 🚨
Définition
Une donnée sensible est une information qui ne doit pas être exposée ou partagée sans contrôle.
Un secret est une donnée qui donne accès à un système.
Exemples de secrets
- API keys
- GitHub tokens
- AWS access keys
- GCP service account keys
- Azure client secrets
- database passwords
- SSH private keys
- JWT signing secrets
- webhook secrets
- OAuth client secrets
Exemples de données sensibles
- emails clients
- noms/prénoms
- adresses
- numéros de téléphone
- données RH
- données financières
- données de santé
- logs de production
- informations internes de sécurité
- algorithmes propriétaires
- règles anti-fraude
Mauvais prompt ❌
Here is our production database password:
p@ssw0rd-prod-123
Write a script to connect to the database.Très mauvaise idée.
Bon prompt ✅
Write a Python example that connects to PostgreSQL using environment variables.
Do not hardcode secrets.
Use placeholders and explain the required variables.Exemple :
import os
import psycopg2
connection = psycopg2.connect(
host=os.getenv("DB_HOST"),
port=os.getenv("DB_PORT", "5432"),
dbname=os.getenv("DB_NAME"),
user=os.getenv("DB_USER"),
password=os.getenv("DB_PASSWORD"),
)Exemple cloud
Mauvais prompt :
Here is my AWS secret access key. Generate a boto3 script.Bon prompt :
Generate a boto3 script that uses the default AWS credential provider chain.
Do not hardcode credentials.
Explain how to use IAM roles or environment variables.Bonnes pratiques
- Ne jamais coller de secrets dans Copilot Chat.
- Utiliser des placeholders.
- Utiliser des variables d’environnement.
- Utiliser IAM roles / workload identity quand possible.
- Nettoyer les logs avant de les partager.
- Ne pas inclure de données client réelles.
- Configurer content exclusions pour les fichiers sensibles.
- Activer secret scanning côté GitHub si disponible.
À retenir
Donnée sensible dans le prompt = risque. Secret dans le prompt = très mauvais réflexe.
11.3 Content exclusions 🧱
Définition
Les content exclusions permettent d’indiquer à Copilot quels contenus ignorer. C’est une protection administrative, qui s’applique là où la surface Copilot la prend en charge : ce n’est pas l’équivalent de tous les autres contrôles de privacy ou de sécurité.
Tu peux les utiliser pour exclure :
- fichiers ;
- dossiers ;
- patterns ;
- repositories ;
- contenus sensibles.
GitHub décrit les content exclusions comme un moyen de spécifier du contenu que Copilot doit ignorer, avec configuration possible au niveau repository, organisation ou enterprise. Elles sont proposées avec les plans Copilot Business et Copilot Enterprise.
Concrètement, quand un contenu est exclu :
- aucune inline suggestion n’est proposée dans les fichiers concernés ;
- le contenu des fichiers concernés n’alimente pas les inline suggestions dans d’autres fichiers ;
- le contenu des fichiers concernés n’alimente pas les réponses de Copilot ;
- les fichiers concernés ne sont pas relus par Copilot Code Review.
Les patterns utilisent la notation fnmatch et ne sont pas sensibles à la casse.
Exemple simple
Repository :
/payment-service
/src
/docs
/secrets
/fraud-rules
/internal-pricingTu peux exclure :
/secrets/**
/fraud-rules/**
/internal-pricing/**Objectif :
Empêcher Copilot d’utiliser ces fichiers comme contexte.
Pourquoi c’est important ?
Parce que certains fichiers contiennent :
- secrets
- logique métier sensible
- informations clients
- configuration interne
- algorithmes propriétaires
- données de conformité
Exemple
Fichier sensible :
internal-pricing-rules.mdTu ne veux pas que Copilot l’utilise pour générer du code ou répondre à des questions.
Tu configures une exclusion :
/internal-pricing-rules.mdou :
/internal-pricing/**Ce que les content exclusions peuvent aider à faire
- réduire le risque d’exposition de contexte sensible
- empêcher Copilot d’utiliser certains fichiers
- protéger des dossiers spécifiques
- appliquer une règle repository/org/enterprise
- soutenir une stratégie compliance
Très important : les limites ⚠️
Ne retiens jamais une phrase trop absolue comme :
Content exclusions protègent tout, partout, tout le temps.C’est trop simpliste.
Le support dépend de la surface Copilot utilisée et évolue. La liste ci-dessous correspond à la documentation GitHub vérifiée pour cette version du cours.
| Surface | Content exclusions |
|---|---|
| Inline suggestions dans Visual Studio, VS Code, JetBrains, Vim/Neovim, Xcode, Eclipse | Supporté |
| Inline suggestions dans Azure Data Studio | Non supporté |
| Copilot Chat dans VS Code, Visual Studio et les IDE JetBrains | Supporté |
| Edit mode et Agent mode de Copilot Chat dans VS Code | Non supporté |
| Copilot Chat et agents dans Xcode et Eclipse | Non supporté |
| Copilot Chat sur GitHub.com et dans GitHub Mobile | Supporté (public preview) |
| Copilot Code Review (GitHub.com) | Supporté |
| Copilot CLI | Supporté (Copilot Business et Enterprise, selon la documentation actuelle) |
| GitHub Copilot app | Supporté (Copilot Business et Enterprise, selon la documentation actuelle) |
| Copilot cloud agent (ex coding agent) | Inconnu : non précisé dans la documentation consultée, ne pas supposer |
Support par surface vérifié le 7 octobre 2026 (documentation GitHub). Il évolue avec le produit.
Aujourd’hui
Copilot CLI et la GitHub Copilot app respectent les content exclusions des plans Business et Enterprise : les fichiers exclus ne sont pas utilisés comme contexte. En revanche, le mode Agent (et le mode Edit) de Copilot Chat dans VS Code ne les supporte pas, et la page de configuration de GitHub indique de façon plus large que le mode Agent de Copilot Chat dans les IDE ne les supporte pas : ne mélange donc pas le comportement du CLI avec celui du mode Agent en IDE.
Pour le GH-300
Le guide d’étude demande de savoir configurer les content exclusions, mais ne liste pas les surfaces prises en charge. Du matériel de préparation plus ancien peut encore affirmer que le CLI ne les supporte pas. Retiens la règle durable : toujours vérifier la surface utilisée. Si une question nomme explicitement une surface, raisonne avec le tableau actuel ci-dessus.
Autres limites
- Copilot peut utiliser des informations sémantiques issues d’un fichier exclu lorsque l’IDE les fournit indirectement (informations de type, définitions affichées au survol, propriétés générales du projet comme la configuration de build).
- Les content exclusions ne s’appliquent pas aux liens symboliques (symlinks) ni aux repositories situés sur des systèmes de fichiers distants.
- Elles portent sur les fichiers que Copilot lit comme contexte. Elles ne nettoient pas un texte que tu colles toi-même dans un prompt : un log ou un secret collé reste ta responsabilité (voir 11.1 et 11.2).
- Après une modification, la prise en compte peut demander jusqu’à 30 minutes dans les IDE où les paramètres sont déjà chargés.
Piège d’examen
Les content exclusions s’appliquent à toutes les surfaces Copilot.Faux. Et la réponse inverse (« le CLI ne les supporte jamais ») est devenue fausse pour les plans Business et Enterprise.
Donc pour l’examen, retiens :
Les content exclusions sont importantes, mais il faut connaître les limites selon la fonctionnalité utilisée.
Content exclusions et suggestions matching public code (section 11.10) ne résolvent pas le même problème.
11.4 Exclusions au niveau repository 📁
Définition
Les exclusions au niveau repository sont configurées pour un repository précis.
Elles s’appliquent au contenu de ce repository.
GitHub indique que les repository administrators peuvent exclure du contenu pour leurs propres repositories.
Exemple
Repository :
github.com/acme/payment-serviceL’admin du repo veut exclure :
/secrets/**
/docs/internal/**
/fraud-rules/**Objectif :
Empêcher Copilot d’utiliser ces fichiers dans ce repository.
Exemple de patterns
Dans les paramètres du repository, les chemins s’écrivent sous forme de liste YAML, une entrée par chemin :
# Ignorer tout ce qui se trouve dans ou sous /secrets.
- "/secrets/**"
# Ignorer un fichier précis.
- "/docs/confidential.md"
# Ignorer les fichiers nommés secrets.json n’importe où dans ce repository.
- "secrets.json"Les listes de chemins écrites en texte simple ailleurs dans ce chapitre sont des schémas : elles montrent quels chemins on veut couvrir, pas le format exact des paramètres.
Cas d’usage
Exclusions repository utiles quand :
- un repo contient quelques fichiers sensibles
- une équipe veut protéger un dossier spécifique
- la règle ne concerne qu’un projet
- le repo admin connaît bien la structure du projet
Exemple examen
Question :
Un repository contient un dossier /secrets avec des fichiers sensibles. L’équipe veut empêcher Copilot d’utiliser ce dossier dans ce repository. Quel niveau de configuration est adapté ?
Réponse :
Configurer une content exclusion au niveau repository.
À retenir pour le GH-300
- Ne donne à Copilot que le contexte nécessaire : un log ou un secret se nettoie avant le prompt, et un secret déjà envoyé se renouvelle.
- Une content exclusion indique à Copilot quels contenus ignorer, là où la surface la prend en charge : ce n’est pas un contrôle universel.
- Raisonne par surface, avec la source et sa date. Quand la documentation ne précise rien, ne le suppose ni pris en charge ni non pris en charge.
- Les exclusions se configurent par les repository administrators, organization owners et enterprise owners ; elles ne nettoient pas ce que tu colles toi-même.
Faits datés de cette leçon
Ces points changent avec le produit. Chacun indique quand il a été vérifié et où le contrôler.
- Content exclusions : surfaces prises en charge
Pratique : Raisonner par surface
Une organisation a configuré des content exclusions. Pour chaque surface, dis ce qu’on peut attendre d’après la documentation 7 octobre 2026. Le support change avec le produit : quand la documentation ne le précise pas, la bonne réponse est de ne pas le supposer.
Chargement de la question…
Questions de la leçon
Chargement de la question…
Pour finir
À retenir
- Ne donne à Copilot que le contexte nécessaire : un log ou un secret se nettoie avant le prompt, et un secret déjà envoyé se renouvelle.
- Une content exclusion indique à Copilot quels contenus ignorer, là où la surface la prend en charge : ce n’est pas un contrôle universel.
- Raisonne par surface, avec la source et sa date. Quand la documentation ne précise rien, ne le suppose ni pris en charge ni non pris en charge.
- Les exclusions se configurent par les repository administrators, organization owners et enterprise owners ; elles ne nettoient pas ce que tu colles toi-même.
Objectif GH-300
- Exclusions et editor settings (Configure privacy and content exclusion settings)
Achèvement
Il reste à faire : , .