Ihre Public-API-Aufrufe authentifizieren
Die CaptainDNS Public API authentifiziert Anfragen über einen API-Schlüssel im HTTP-Header Authorization. Kein OAuth, keine Session, keine Cookies. Dieses Handbuch erklärt Format, Lebenszyklus und Speicherpraktiken.
Den Schlüssel senden
POST /public/v1/resolve HTTP/1.1
Host: api.captaindns.com
Authorization: Bearer cdns_live_a3f2XK7mN9QrVtZ4yP1sH6eL8cF2dB5aR3gW7kJxM
Content-Type: application/json
{"qname":"captaindns.com","qtype":"A"}
Das Schema ist immer Bearer. Jedes andere Schema löst 401 INVALID_API_KEY aus. Bei Schlüsseln wird zwischen Groß- und Kleinschreibung unterschieden.
Schlüsselformat
Ein Schlüssel besteht aus drei Segmenten:
cdns_<umgebung>_<36 alphanumerische Zeichen in Kleinschreibung>
| Segment | Wert | Verwendung |
|---|---|---|
cdns_ | Konstantes Präfix | Visuelle Erkennung und GitHub-Scanning |
live oder test | Umgebung | Trennung von Produktion und Experimenten |
| 36 Zeichen | Base32-Geheimnis | 180 Bit Entropie, pro Schlüssel eindeutig |
Das im Dashboard angezeigte Präfix lautet cdns_<env>_ gefolgt von 8 Zeichen. Das vollständige Geheimnis wird niemals in der Datenbank gespeichert; CaptainDNS bewahrt nur seinen mit einem Pepper versehenen HMAC-SHA256-Hash auf.
Umgebungen
cdns_test_*-Schlüssel sind technisch identisch mit cdns_live_*-Schlüsseln: dieselben Endpunkte, dieselben Scopes, derselbe Credit-Verbrauch. Sie existieren, damit Sie in Logs und Dashboards zwischen Entwicklungs- und Produktions-Traffic unterscheiden können. Wir empfehlen, pro Umgebung (dev, staging, CI) einen Schlüssel anzulegen.
Scopes
Jeder Schlüssel trägt einen oder mehrere Scopes. Das Scope-Handbuch listet sie alle auf; kurz:
dns:read: DNS-Auflösung, Propagation, DNSSEC, WHOIS für IPs.mail:read: SPF, DKIM, DMARC, BIMI, MTA-STS, TLS-RPT, DANE, Blacklist, SMTP, E-Mail-Header-Audit.mail:write: Deliverability-Score, DMARC-Generator, Migration von DMARC zu DMARCbis, erzwungene Neuauflösung eines Hosted-SPF-Profils.web:read: URL-Checks, Page Crawl, Phishing-Erkennung.
Ein Aufruf auf einen Endpunkt, dessen Scope auf dem Schlüssel fehlt, liefert 403 INSUFFICIENT_SCOPE.
Rotation ohne Ausfallzeit
Einen kompromittierten oder veralteten Schlüssel tauscht man nicht einfach aus. Der unterstützte Ablauf ist die Rotation:
- Im CaptainDNS-Dashboard lösen Sie eine Rotation am betroffenen Schlüssel aus.
- CaptainDNS erzeugt einen neuen Schlüssel mit denselben Scopes, Limits und derselben Umgebung.
- Der alte Schlüssel bleibt 7 Tage gültig. In diesem Zeitraum können Ihre Dienste schrittweise migrieren.
- Am Ende der Grace Period wird der alte Schlüssel automatisch widerrufen.
Denken Sie daran, Ihren Secrets-Manager vor Ablauf der Grace Period zu aktualisieren. Danach liefert jede Anfrage mit dem alten Schlüssel 401 REVOKED_API_KEY.
Sofortiger Widerruf
Wenn ein Schlüssel öffentlich leakt (Git-Repository, Log, ausgeschiedener Kollege), erfolgt der Widerruf im Dashboard: Widerruf-Button am Schlüssel, dann Bestätigung mit einem Klick. Sofortige Wirkung, keine Grace Period.
Anfragen, die zum Zeitpunkt des Widerrufs bereits in Bearbeitung sind, werden abgeschlossen; neue Anfragen liefern 401 REVOKED_API_KEY.
IP-Allowlist
Die Pläne Business und Enterprise können einen Schlüssel auf eine CIDR-Liste beschränken. Die Prüfung erfolgt vor dem Handler, sodass die Anfrage keine Credits verbraucht, wenn die IP nicht zugelassen ist. Die Antwort lautet 403 IP_NOT_ALLOWED.
Beispiel eines Schlüssels, der auf die IPs Ihres GitHub-Actions-Workers und Ihres Produktions-Backends beschränkt ist:
{
"ip_allowlist": [
"4.175.114.0/23",
"52.237.144.10/32"
]
}
Das Aktualisieren der Liste erfordert keine Rotation: bearbeiten Sie den Schlüssel im Dashboard, die neue Liste wird innerhalb einer Minute wirksam.
Best Practices für die Schlüsselspeicherung
- Secrets-Manager: 1Password, Doppler, AWS Secrets Manager, Vault. Niemals in eingecheckten
.env-Dateien oder CI-YAML. - Umgebungsvariable zur Laufzeit: injizieren Sie den Schlüssel beim Prozessstart als Umgebungsvariable. Vermeiden Sie gemountete Klartext-Dateien.
- Periodische Rotation: 90 Tage für kritische Workloads, 180 Tage sonst. Planen Sie eine Kalendererinnerung oder besser einen CI-Job.
- Kein Teilen im Team: ein Schlüssel pro Dienst, keinen Master-Schlüssel für das ganze SRE-Team teilen. Ein Widerruf im Incident-Fall bleibt so chirurgisch genau.
- Minimale Scopes: wenn Ihre Integration nur DMARC-Checks durchführt, geben Sie weder
web:readnochmail:write. Reduzieren Sie den Blast Radius.
Auth-Probleme beheben
401 INVALID_API_KEY: fehlendes oder falsches Präfix, Schlüssel fehlt nachBearer, manipuliertes Geheimnis. Prüfen Sie, ob kein Leerzeichen oder Zeilenumbruch in den Client gelangt ist.401 REVOKED_API_KEY: der Schlüssel wurde manuell oder automatisch widerrufen. Erzeugen Sie einen neuen.401 EXPIRED_API_KEY: Sie haben bei der Erstellungexpires_atgesetzt und das Datum ist überschritten. Erzeugen Sie einen neuen Schlüssel oder rotieren Sie ihn vorher.403 IP_NOT_ALLOWED: Ihre Quell-IP ist nicht auf der Allowlist. Die Client-IP wird ausschließlich ausr.RemoteAddrabgeleitet. Wenn Ihr Traffic über einen Proxy läuft, schreibt CaptainDNSRemoteAddrvorab anhand vonX-Forwarded-Fornur dann um, wenn der unmittelbare Peer zur plattformseitig konfigurierten Liste vertrauenswürdiger Proxy-CIDRs gehört. Ein von einem beliebigen Client gesetztesX-Forwarded-Forwird niemals berücksichtigt.500 INTERNAL_ERROR: weist auf ein Problem bei CaptainDNS hin; öffnen Sie ein Support-Ticket mit derrequest_id.
Weiter geht es mit dem Scope-Handbuch oder mit dem Rate Limiting, wenn Sie einen Hochfrequenz-Client vorbereiten.