Seccomp-Profile für die Pod-Sicherheit konfigurieren

In diesem Dokument wird beschrieben, wie Sie Kubernetes-Seccomp-Profile (Secure Computing Mode) für Apigee Hybrid-Pods konfigurieren, um die Sicherheit zu erhöhen, indem Sie die Systemaufrufe (Syscalls) einschränken, die Container ausführen dürfen.

Seccomp-Profile in Kubernetes

Seccomp ist eine Sicherheitsfunktion des Linux-Kernels, die die Systemaufrufe einschränkt, die ein Prozess ausführen kann. In Kombination mit Kubernetes können Sie Seccomp-Profile auf das securityContext eines Pods anwenden, um die für seine Container verfügbaren Syscalls einzuschränken. So wird die Angriffsfläche des Containers verringert und das Risiko von Container-Ausbrüchen oder Rechteausweitungen durch die Durchsetzung des Prinzips der geringsten Berechtigung gemindert.

Weitere Informationen zu Seccomp in Kubernetes finden Sie in der Kubernetes-Dokumentation unter Secure Computing (Seccomp).

In der Hybridversion sind Seccomp-Profile nicht standardmäßig aktiviert. Sie können ein Seccomp-Profil auf Hybridkomponenten anwenden, indem Sie das seccompProfile-Objekt in Ihre overrides.yaml-Datei einfügen.

Seccomp-Profile konfigurieren

Sie können Seccomp-Profile global, pro Umgebung oder pro Komponente in Ihrer overrides.yaml-Datei anwenden, indem Sie den Konfigurationsblock securityContext.seccompProfile hinzufügen. hybrid unterstützt die folgenden Seccomp-Profiltypen:

  • RuntimeDefault:Das Standardprofil, das von der Containerlaufzeit angegeben wird. Dies ist die empfohlene Option, da sie ein angemessenes Sicherheitsniveau bietet und gleichzeitig die Kompatibilität für die meisten Arbeitslasten aufrechterhält.
  • Unconfined:Es werden keine Seccomp-Einschränkungen auf den Pod angewendet. Das ist die am wenigsten sichere Option und sollte mit Vorsicht verwendet werden.

Rangfolge der Konfiguration

Sie können seccompProfile auf den folgenden Ebenen in overrides.yaml festlegen. Einstellungen auf Komponentenebene haben Vorrang vor Einstellungen auf Umgebungsebene und Einstellungen auf Umgebungsebene haben Vorrang vor globalen Einstellungen:

  1. Komponentenebene:Wird auf eine bestimmte Komponente angewendet, z. B. runtime oder cassandra.
  2. Umgebungsebene:Gilt für alle Komponenten in einer bestimmten Umgebung, die im envs[]-Array definiert ist, sofern sie nicht auf Komponentenebene überschrieben wird.
  3. Globale Ebene:Gilt für alle Komponenten im Cluster, sofern sie nicht auf der Umgebungs- oder Komponentenebene überschrieben werden.

Beispiele

Globale Konfiguration

Wenn Sie das Seccomp-Profil RuntimeDefault auf alle Komponenten anwenden möchten, für die keine Überschreibung auf Umgebungs- oder Komponentenebene vorhanden ist, fügen Sie Folgendes auf der obersten Ebene von overrides.yaml hinzu:

securityContext:
  seccompProfile:
    type: RuntimeDefault

Umgebungskonfiguration

Wenn Sie das RuntimeDefault-Seccomp-Profil auf alle Komponenten in einer bestimmten Umgebung anwenden möchten, fügen Sie die Konfiguration unter dem envs[]-Element hinzu:

envs:
  - name: "my-environment"
    securityContext:
      seccompProfile:
        type: RuntimeDefault
    ...

Komponentenkonfiguration

Wenn Sie das RuntimeDefault-Seccomp-Profil auf eine bestimmte Komponente (z. B. die Laufzeitkomponente) anwenden möchten, fügen Sie die Konfiguration unter dieser Komponente hinzu:

runtime:
  securityContext:
    seccompProfile:
      type: RuntimeDefault
...