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 :

Texte
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 ❌

Texte
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 :

Texte
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 :

Texte
sensitive data
customer data
production logs
secrets
tokens
private information

La 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 ❌

Texte
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 ✅

Texte
Write a Python example that connects to PostgreSQL using environment variables.
Do not hardcode secrets.
Use placeholders and explain the required variables.

Exemple :

py
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 :

Texte
Here is my AWS secret access key. Generate a boto3 script.

Bon prompt :

Texte
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 :

Texte
/payment-service
  /src
  /docs
  /secrets
  /fraud-rules
  /internal-pricing

Tu peux exclure :

Texte
/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 :

Texte
internal-pricing-rules.md

Tu ne veux pas que Copilot l’utilise pour générer du code ou répondre à des questions.

Tu configures une exclusion :

Texte
/internal-pricing-rules.md

ou :

Texte
/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 :

Texte
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.

SurfaceContent exclusions
Inline suggestions dans Visual Studio, VS Code, JetBrains, Vim/Neovim, Xcode, EclipseSupporté
Inline suggestions dans Azure Data StudioNon supporté
Copilot Chat dans VS Code, Visual Studio et les IDE JetBrainsSupporté
Edit mode et Agent mode de Copilot Chat dans VS CodeNon supporté
Copilot Chat et agents dans Xcode et EclipseNon supporté
Copilot Chat sur GitHub.com et dans GitHub MobileSupporté (public preview)
Copilot Code Review (GitHub.com)Supporté
Copilot CLISupporté (Copilot Business et Enterprise, selon la documentation actuelle)
GitHub Copilot appSupporté (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

Texte
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 :

Texte
github.com/acme/payment-service

L’admin du repo veut exclure :

Texte
/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 :

YAML
# 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.