API-Zugriff
Der PowerDNS API Endpoint:
https://powerdns.exigo.ch
Die Authentifizierung erfolgt über den X-API-Key Header:
X-API-Key: <your-api-token>
Die API basiert auf der offiziellen PowerDNS Web API Spezifikation:
https://doc.powerdns.com/authoritative/http-api/
Es wird ein eingeschränkter Teilumfang der API bereitgestellt, der auf die Verwaltung von Zonen und Records für Automatisierungszwecke (insbesondere ACME DNS-01 Challenges) fokussiert ist.
Multi-Tenancy
Der Zugriff ist automatisch eingeschränkt:
- Kunden sehen und verwalten nur ihre eigenen Zonen
- Partner sehen und verwalten die Zonen aller ihrer Kunden
Es ist keine zusätzliche Konfiguration erforderlich.
Unterstützte ACME-Clients
acme.sh
Dokumentation: https://github.com/acmesh-official/acme.sh
Beispiel:
export PDNS_Url="https://powerdns.exigo.ch"export PDNS_Key="<your-api-token>"acme.sh --issue --dns dns_pdns -d example.com -d '*.example.com'
Certbot (PowerDNS Plugin)
Certbot Dokumentation: https://certbot.eff.org/
Plugin Dokumentation: https://pypi.org/project/certbot-dns-powerdns/
Beispiel:
Konfigurationsdatei (pdns.ini) erstellen:
dns_powerdns_api_url = https://powerdns.exigo.chdns_powerdns_api_key = <your-api-token>
Certbot ausführen:
certbot certonly \ --authenticator dns-powerdns \ --dns-powerdns-credentials pdns.ini \ -d example.com \ -d '*.example.com'
Direktes API-Beispiel
Die API kann auch direkt per HTTP angesprochen werden.
Beispiel: Erstellung eines TXT-Records für eine ACME-Challenge
curl -X PATCH "https://powerdns.exigo.ch/api/v1/servers/localhost/zones/example.com." \ -H "X-API-Key: <your-api-token>" \ -H "Content-Type: application/json" \ -d '{ "rrsets": [ { "name": "_acme-challenge.example.com.", "type": "TXT", "ttl": 60, "changetype": "REPLACE", "records": [ { "content": "\"challenge-token\"", "disabled": false } ] } ] }'