2016-07-22 7 views
3

Ich habe einige Container, die runnin Benutzer Code in ihnen sein wird. Um die Sicherheit zu erhöhen, möchte ich verhindern, dass sie über den Service-Konto-Mechanismus Zugang zu Kubernetes API haben, aber nicht global ausschalten wollen. Die Dokumentation besagt, dass Sie den Namen des Dienstkontos nur auf einen anderen gültigen Namen ändern können. Gibt es Alternativen, die ich vermisst habe? Können Sie das Konto auf 0 Berechtigungen beschränken? Können Sie das Volume mit einem anderen Volume überladen, das leer ist? Irgendwelche anderen Ideen?container disable service account

Antwort

3

Der einfachste Hack ist, ein leeres Verzeichnis über den Speicherort zu mounten, an dem das serviceAccount-Geheimnis eingehängt worden wäre. Etwas wie:

containers: 
- name: running-user-code 
    image: something-i-dont-trust 
    volumeMounts: 
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount 
    name: no-api-access-please 
    readOnly: true 
volumes: 
- name: no-api-access-please 
    emptyDir: {} 

Es gibt mehr Diskussion in Kubernetes Issue #16779 auf mögliche Lösungen (und das ist, wo ich das emptyDir Beispiel aus stahl).

2

Dienstkonten authentifizieren sich nur bei der API. Sie verfügen nicht über die erforderliche Berechtigung zum Ausführen von Lese- oder Schreib-API-Aktionen.

Wenn Sie Ihr Cluster zu sichern, führen Sie mit einer Berechtigungs anderen Modus als AlwaysAllow (die alle authentifizierten API Benutzer die vollständige Lese-/Schreibzugriff gibt) und selektiv Berechtigungen erteilen bestimmte Dienstkonten oder Namespaces