Ook interessant Op zoek naar AI-certificering? Bezoek ons zusje-platform Route-to-AI.com
⏱ 9 min. lezen CyberArk Conjur Kubernetes authn-k8s installatie

CyberArk Conjur: complete gids voor Kubernetes-integratie met authn-k8s

Praktische vervolgstap op ons conceptartikel: Conjur Open Source draaien, een policy schrijven, en de authn-k8s-authenticator koppelen zodat pods zich authenticeren via hun ServiceAccount.

Vervolg op ons conceptartikel over CyberArk Conjur, en aanvullend op onze volledige SECRET-SEN-cursus: deze gids installeert Conjur Open Source en configureert de authn-k8s-authenticator, zodat een pod zich authenticeert puur op basis van zijn Kubernetes-identiteit.

Stap 1: Conjur Open Source installeren (Helm)

Helm-installatie
helm repo add cyberark https://cyberark.github.io/helm-charts
helm repo update

helm install conjur-oss cyberark/conjur-oss 
  --namespace conjur 
  --create-namespace 
  --set dataKey="$(openssl rand -base64 32)" 
  --set account.name="voorbeeld-account"

Stap 2: de authn-k8s-authenticator inschakelen

Configureer welke authenticatiemethode is toegestaan via een policy op het rootniveau:

authenticators-policy.yaml
- !policy
  id: conjur/authn-k8s/productie-cluster
  body:
    - !webservice
    - !group apps
    - !permit
      role: !group apps
      privilege: [ authenticate ]
      resource: !webservice
Policy laden
conjur policy load --branch root authenticators-policy.yaml

Stap 3: een host-identiteit definiëren voor een applicatie

app-policy.yaml
- !host
  id: productie-app/myapp
  annotations:
    authn-k8s/namespace: productie-app
    authn-k8s/service-account: myapp-serviceaccount

- !grant
  role: !group conjur/authn-k8s/productie-cluster/apps
  member: !host productie-app/myapp

- !variable productie-app/database-wachtwoord

- !permit
  role: !host productie-app/myapp
  privileges: [ read, execute ]
  resource: !variable productie-app/database-wachtwoord
Policy laden en het geheim invullen
conjur policy load --branch root app-policy.yaml
conjur variable set -i productie-app/database-wachtwoord -v 'SuperGeheim123'

Stap 4: de pod koppelen (init-container-patroon)

De meest gebruikte aanpak injecteert een init-container die het geheim ophaalt en beschikbaar maakt voor de hoofdcontainer via een gedeeld volume:

Fragment van een Deployment met Conjur-authenticatie
spec:
  serviceAccountName: myapp-serviceaccount
  initContainers:
    - name: conjur-authenticator
      image: cyberark/conjur-kubernetes-authenticator
      env:
        - name: CONJUR_AUTHN_URL
          value: https://conjur.voorbeeld.nl/authn-k8s/productie-cluster
        - name: CONJUR_ACCOUNT
          value: voorbeeld-account
      volumeMounts:
        - name: podinfo
          mountPath: /var/run/secrets/kubernetes.io/serviceaccount

Verifiëren dat authenticatie werkt

Testen vanuit een draaiende pod
curl -H "Authorization: Token token="\"" 
  https://conjur.voorbeeld.nl/secrets/voorbeeld-account/variable/productie-app%2Fdatabase-wachtwoord
Praktijktip: Krijg je een 403 ondanks een geslaagde authenticatie? Controleer eerst of het "execute"-privilege daadwerkelijk aan de host is toegekend in de policy — een geslaagde authenticatie garandeert nog geen autorisatie, dat zijn twee losse stappen.

Wanneer Conjur kiezen boven ESO of Sealed Secrets?

SituatieAanbevolen tool
Al werkend met CyberArk PAM VaultConjur, via de Vault Conjur Synchronizer
Enterprise/gereguleerde omgeving met fijnmazig policy-beheerConjur
Al een centrale secrets manager (Vault/AWS/Azure), simpele sync gewenstExternal Secrets Operator
Klein team, GitOps-workflow, geen externe afhankelijkheid gewenstSealed Secrets

Veelgestelde vragen

Kan Conjur Open Source en Conjur Enterprise door elkaar gebruikt worden?

Nee, dit zijn aparte, zelfstandige installaties. Migreren van Open Source naar Enterprise is mogelijk maar vereist een expliciet migratietraject, geen automatische upgrade.

Is de dataKey uit stap 1 hetzelfde als een wachtwoord?

Nee — de dataKey is de sleutel waarmee Conjur zelf zijn database versleutelt. Bewaar deze net zo zorgvuldig als een privésleutel; zonder deze sleutel is de Conjur-database onleesbaar.