Claude Architect · Les

Geheimen met omgevingsvariabelen

Verwijs naar ${GITHUB_TOKEN}; commit nooit tokens

Les 3 van 413 stappen

Geheimen met omgevingsvariabelen is een gratis Claude Architect-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Claude Architect. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Claude Architect bevat in totaal 4 lessen.

Waarom geheimen niet in configuratie thuishoren

MCP-servers verbinden Claude met echte systemen — GitHub, databases en interne API's. Elke verbinding heeft inloggegevens nodig: tokens, API-sleutels en wachtwoorden.

De regel van de architect is absoluut: geheimen staan nooit in vastgelegde bestanden. Je .mcp.json (projectniveau, gedeeld via versiebeheer) verklaart welke servers bestaan en hoe je ze start — maar een onbewerkt token dat daar wordt geschreven, staat nu voor altijd in je git-geschiedenis.

Het nette patroon is om naar een geheim te verwijzen met de naam van een omgevingsvariabele en de runtime dit te laten oplossen. In deze les zie je hoe MCP dat precies doet met ${GITHUB_TOKEN}.

De twee MCP-bereiken

MCP-configuratie bestaat in twee afzonderlijke bereiken, en dat onderscheid bepaalt waar geheimen veilig zijn:

  • Projectniveau — .mcp.json in de hoofdmap van de opslagplaats. Gedeeld via versiebeheer, zodat het hele team dezelfde servers krijgt.
  • Gebruikersniveau — ~/.claude.json. Persoonlijk, alleen op jouw machine, NIET gedeeld.

Omdat het projectniveau is vastgelegd, is alles wat je in .mcp.json zet zichtbaar voor iedereen met toegang tot de opslagplaats — ook in een gelekte kloon. Precies daarom mag de waarde van een token daar nooit staan; alleen een verwijzing naar een omgevingsvariabele is toegestaan.

Verwijzen naar een geheim met ${VAR}

In .mcp.json geef je inloggegevens door via het env-blok van de server, met expansie van ${VAR}. De letterlijke tekst ${GITHUB_TOKEN} wordt veilig vastgelegd — het echte token wordt tijdens het starten uit de omgeving opgehaald.

De GitHub MCP-server ontvangt hier zijn token zonder dat het geheim ooit het bestand aanraakt.

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}

Waar de echte waarde vandaan komt

De verwijzing ${GITHUB_TOKEN} doet niets totdat de runtime de werkelijke waarde aanlevert. Je geeft die door via je shellomgeving — meestal vanuit een lokaal, door git genegeerd .env-bestand of de geheimenopslag van je besturingssysteem.

Het token wordt buiten de repository ingesteld. De gecommitte configuratie blijft schoon; elke ontwikkelaar (en elke CI-runner) injecteert zijn of haar eigen waarde.

# .env — git-ignored, never committed
export GITHUB_TOKEN="ghp_realSecretValueLivesOnlyHere"

# load it into the shell before launching Claude Code
source .env

Doe de deur op slot: .gitignore

Een omgevingsvariabele gebruiken is slechts de helft van de beveiliging. Je moet ook garanderen dat het bestand met de echte waarde nooit wordt gecommit.

Voeg je bestanden met geheimen toe aan .gitignore. Commit een voorbeeldbestand met namen als tijdelijke aanduidingen, zodat teamgenoten weten welke variabelen ze moeten instellen — zonder de waarden ooit mee te leveren.

# .gitignore
.env
.env.local
*.secret

# .env.example  (THIS one is committed — names only, no values)
GITHUB_TOKEN=
DATABASE_URL=

Persoonlijke versus gedeelde geheimen

De scope bepaalt ook van wie de referentie wordt gebruikt:

  • Een gedeeld servicetoken dat het hele team gebruikt, kan worden opgenomen in de projectconfiguratie .mcp.json — elk teamlid levert de waarde nog steeds via zijn of haar eigen omgeving.
  • Een puur persoonlijk token (je individuele PAT) past natuurlijk bij de gebruikersscope ~/.claude.json, die toch niet wordt gedeeld.

In beide gevallen geldt hetzelfde principe: het bestand mag de naam bevatten; de omgeving levert de waarde. Draai dit nooit om.

Geef de voorkeur aan MCP-servers van de community

Geef voor standaardintegraties — GitHub, Postgres, Slack en het bestandssysteem — de voorkeur aan een onderhouden MCP-server van de community boven een aangepaste server. Ze implementeren het verwerken van geheimen op basis van env al correct, bieden de juiste Tools/Resources/Prompts aan en geven gestructureerde fouten terug.

Je eigen server schrijven om alleen GitHub aan te roepen, betekent dat je authenticatie en tokenverwerking opnieuw moet implementeren, terwijl je die veilig had kunnen overnemen. Gebruik aangepaste servers alleen voor systemen die echt bedrijfseigen zijn.

Geheimen in CI/CD

In een pipeline is er geen .env-bestand van een ontwikkelaar om in te lezen. In plaats daarvan injecteert de versleutelde geheimenopslag van je CI-platform de variabele in de omgeving van de taak, en wordt dezelfde verwijzing ${GITHUB_TOKEN} op identieke wijze ingevuld.

Daarom is het verwijzingspatroon belangrijk: één gecommitte .mcp.json werkt lokaal en in CI, waarbij de waarde op elke plek anders wordt aangeleverd — en nooit wordt afgedrukt.

# GitHub Actions — value comes from encrypted repo secrets
jobs:
  review:
    runs-on: ubuntu-latest
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    steps:
      - run: claude -p "/review" --output-format json

Minimale bevoegdheden voor tokens

Een MCP-token krijgt alle machtigingen die je eraan hebt toegekend. Een GitHub PAT met de scope repo kan code pushen; een token met de scope read:org kan dat niet.

Pas de gewoonte van de architect om minimale bevoegdheden te gebruiken ook toe op het ontwerp van tools en subagents: geef elk token alleen de scopes die de server daadwerkelijk nodig heeft. Als ${GITHUB_TOKEN} ondanks je beveiligingsmaatregelen toch uitlekt, beperkt een token met een strikt beperkte scope en korte geldigheidsduur de schade aanzienlijk.

Rotatie en reactie op lekken

Behandel elk gecommit geheim als gecompromitteerd — zelfs nadat je het hebt verwijderd, blijft het in de git-geschiedenis staan. De enige echte oplossing is de referentie bij de bron in te trekken en te roteren (in de GitHub-instellingen), en vervolgens een nieuwe in je omgeving te plaatsen.

Omdat je configuratie naar ${GITHUB_TOKEN} verwijst in plaats van een waarde in te sluiten, verloopt roteren probleemloos: trek het oude token in, werk de omgevingsvariabele bij en start opnieuw. Geen codewijziging en geen commit.

# After rotating the token at the provider, just update the env value:
export GITHUB_TOKEN="ghp_freshlyRotatedValue"
# .mcp.json still references ${GITHUB_TOKEN} — nothing else changes

Alles samenbrengen

Het volledige patroon voor MCP-geheimen, zoals je dat op een examen moet kennen:

  • Declareer de server in het projectbestand .mcp.json (gedeeld via versiebeheer).
  • Verwijs in het blok env naar het geheim als ${GITHUB_TOKEN} — nooit naar de onbewerkte waarde.
  • Lever de waarde lokaal vanuit een door git genegeerd .env-bestand en in CI vanuit een versleutelde opslag.
  • Negeer bestanden met geheimen; commit alleen een .env.example met namen.
  • Beperk tokens tot minimale bevoegdheden en roteer ze bij elk vermoeden van misbruik.

Configuratie kan worden gedeeld; geheimen niet. Die scheiding is de essentie.

Korte controle: een MCP-configuratie delen

Pas de regels voor het omgaan met geheimen toe op een realistische teamsituatie.

Samenvatting: geheimen met omgevingsvariabelen

Belangrijkste punten:

  • MCP-configuratie heeft twee scopes: project .mcp.json (gedeeld via versiebeheer) en gebruiker ~/.claude.json (persoonlijk).
  • Gecommitte configuratie mag een verwijzing zoals ${GITHUB_TOKEN} bevatten — nooit de waarde van het token.
  • Echte waarden komen lokaal uit een door git genegeerd .env-bestand en in CI uit een versleutelde geheimenopslag; commit alleen een .env.example met namen.
  • Geef de voorkeur aan MCP-servers van de community — zij verwerken geheimen op basis van omgevingsvariabelen meteen correct.
  • Beperk tokens tot minimale bevoegdheden; trek ze bij elk lek bij de bron in en roteer ze — dankzij het verwijzingspatroon is roteren een wijziging van één regel in een omgevingsvariabele.

Scheid wat gedeeld kan worden van wat geheim moet blijven, en je hebt de regel die in het examen wordt getoetst goed begrepen.

Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
26
Lessen
104

Veelgestelde vragen

Is de les “Geheimen met omgevingsvariabelen” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Claude Architect, waaronder “Geheimen met omgevingsvariabelen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Claude Architect bevat in totaal 4 lessen.

Wat leer ik in “Geheimen met omgevingsvariabelen”?

Verwijs naar ${GITHUB_TOKEN}; commit nooit tokens Je oefent met Claude Architect door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Claude Architect te beginnen?

Ervaring vooraf is niet nodig. Claude Architect op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Geheimen met omgevingsvariabelen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Claude Architect?

Ja. Elke les over Claude Architect bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Tools, resources en prompts
  2. Project- versus gebruikersscope
  3. Geheimen met omgevingsvariabelen
  4. Community- versus aangepaste servers
← Terug naar Claude Architect