-
Notifications
You must be signed in to change notification settings - Fork 0
Azure configuratie
Deze pagina beschrijft hoe je een Azure Service Principal aanmaakt met de minimale rechten die azure-ddns nodig heeft.
- Een Azure account met een actief subscription
- Azure CLI (
az) geïnstalleerd op je werkstation (niet nodig op de Pi) - Een bestaande DNS zone in Azure DNS
Tip: De Azure CLI is alleen nodig voor de eenmalige setup. Op de Raspberry Pi zelf hoeft
azniet geïnstalleerd te worden — azure-ddns gebruikt directe REST API calls.
az loginaz ad app create --display-name "azure-ddns"Noteer de appId uit de output — dit wordt je AZURE_CLIENT_ID.
az ad sp create --id <appId>az ad app credential reset --id <appId> --years 1Noteer uit de output:
-
password→ dit wordt jeAZURE_CLIENT_SECRET -
tenant→ dit wordt jeAZURE_TENANT_ID
Let op: Het secret wordt maar één keer getoond. Sla het veilig op (bijv. in een password manager). Na een jaar moet je een nieuw secret genereren met hetzelfde commando.
az role assignment create \
--assignee <appId> \
--role "DNS Zone Contributor" \
--scope "/subscriptions/<sub-id>/resourceGroups/<rg>/providers/Microsoft.Network/dnsZones/<zone>"Belangrijk: De scope is bewust zo smal mogelijk:
- Niet op subscription-niveau
- Niet op resource group-niveau
- Alleen op de specifieke DNS zone
Dit geeft azure-ddns precies wat het nodig heeft (GET + PUT op A-records) en niets meer.
Na de setup heb je deze 7 waarden nodig:
| Variabele | Waar te vinden | Voorbeeld |
|---|---|---|
AZURE_TENANT_ID |
Stap 4 output (tenant) |
aaaabbbb-0000-cccc-1111-dddd2222eeee |
AZURE_CLIENT_ID |
Stap 2 output (appId) |
11112222-bbbb-3333-cccc-4444dddd5555 |
AZURE_CLIENT_SECRET |
Stap 4 output (password) |
A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u |
AZURE_SUBSCRIPTION_ID |
Azure Portal → Subscriptions | 00000000-0000-0000-0000-000000000000 |
AZURE_RESOURCE_GROUP |
Azure Portal → DNS zone → Overview | rg-dns |
DNS_ZONE_NAME |
De DNS zone naam (zonder trailing dot) | example.com |
DNS_RECORD_NAME |
Het A-record (relatieve naam) |
home (resulteert in home.example.com) |
Test de configuratie op de Pi (of lokaal):
export AZURE_TENANT_ID="<jouw-tenant-id>"
export AZURE_CLIENT_ID="<jouw-client-id>"
export AZURE_CLIENT_SECRET="<jouw-secret>"
export AZURE_SUBSCRIPTION_ID="<jouw-subscription-id>"
export AZURE_RESOURCE_GROUP="<jouw-resource-group>"
export DNS_ZONE_NAME="<jouw-zone>"
export DNS_RECORD_NAME="<jouw-record>"
./azure-ddns --forceVerwachte output:
[2026-03-31 10:00:00] INFO: DNS record bijgewerkt: home.example.com -> 1.2.3.4
Het client secret verloopt na de ingestelde periode (standaard 1 jaar). Vernieuw het met:
az ad app credential reset --id <appId> --years 1Update daarna AZURE_CLIENT_SECRET in je crontab of environment bestand op de Pi.
| Fout | Oorzaak | Oplossing |
|---|---|---|
| HTTP 401 bij token request | Onjuiste client ID of secret | Controleer AZURE_CLIENT_ID en AZURE_CLIENT_SECRET
|
| HTTP 403 bij DNS operatie | Onvoldoende RBAC rechten | Controleer de role assignment scope |
| HTTP 404 bij DNS GET | Verkeerde zone of record naam | Controleer DNS_ZONE_NAME en DNS_RECORD_NAME
|
Ga nu door naar Operationeel beheer om de cron job in te stellen.