Container-Image-Sicherheit durchsetzen

Mit dem Feature 'IBM Container Image Security Enforcement' können Sie die Integrität Ihrer Container-Images prüfen, bevor Sie sie in einem IBM Cloud Private-Cluster bereitstellen.

IBM Container Image Security Enforcement steuert, aus welcher Quelle Images bereitgestellt werden, und setzt Richtlinien von Vulnerability Advisor (VA) durch. Falls ein Image Ihre definierten Richtlinienanforderungen nicht erfüllt, wird der Pod nicht implementiert.

Richtliniendefinition

Auf jedes Image in einem Repository wird ein Geltungsbereich für Imagerichtlinien angewendet (entweder Cluster oder Namensbereich). Wenn Sie eine Anwendung bereitstellen, überprüft IBM Container Image Security Enforcement, ob der Kubernetes-Namensbereich, in dem die Bereitstellung erfolgt, Richtlinienbestimmungen aufweist, die angewendet werden müssen. Falls keine Richtlinie mit dem Geltungsbereich Namensbereich vorhanden ist, wird die Richtlinie mit dem Geltungsbereich Cluster angewendet. Wenn sich die Richtlinien Namensbereich und Cluster überschneiden, wird der Clustergeltungsbereich ignoriert. Ist weder eine Richtlinie mit dem Geltungsbereich Cluster noch mit dem Bereich Namensbereich vorhanden, schlägt der Start der Bereitstellung fehl. Es könnte eine Fehlernachricht wie die folgende angezeigt werden:

... release ... failed: Internal error occurred: admission webhook "trust.hooks.securityenforcement.admission.cloud.ibm.com" denied the request:
Deny "docker.io/rook/rook:v0.7.1", no matching repositories in ClusterImagePolicy and no ImagePolicies in the "default" namespace

Hinweis: Jeder Pod, der in Namensbereichen bereitgestellt ist, die für IBM Cloud Private-Services reserviert sind, umgeht die Sicherheitsprüfung des Container-Images. Die folgenden Namensbereiche sind für IBM Cloud Private-Services reserviert:

Erstellen Sie eine Richtlinie, um das Problem zu lösen.

Die Richtliniendefinition wird in der Datei <installation_cluster>/cluster/config.yaml oder mithilfe der Managementkonsole konfiguriert.

apiVersion: securityenforcement.admission.cloud.ibm.com/v1beta1
kind: <ClusterImagePolicy_or_ImagePolicy>
metadata:
  name: <crd_name>
spec:
   repositories:
    - name: <repository_name>
      policy:
        va:
          enabled: <true_or_false>

IBM Container Image Security Enforcement aktivieren und inaktivieren

IBM Container Image Security Enforcement ist als Kubernetes-Diagramm verfügbar. IBM Container Image Security Enforcement wird während der IBM Cloud Private-Installation standardmäßig aktiviert.

Wenn Sie IBM Container Image Security Enforcement während der Installation inaktivieren möchten, fügen Sie image_security_enforcement zur Liste der inaktivierten Services (management_services) in der Datei config.yaml im IBM Cloud Private-Cluster hinzu.

Nach der Installation eines IBM Cloud Private-Clusters kann der Clusteradministrator das Kubernetes-Diagramm deinstallieren.

Standardrichtlinie

Die Standardrichtlinie für die Durchsetzung der Imagesicherheit verfügt über den Geltungsbereich Cluster. Bei Verwendung dieser Richtlinie können nur die Images im Cluster verwendet werden, die in der integrierten Container-Registry (die erste in der Whitelist der Richtlinie) gespeichert sind sowie die Images, die im IBM Cloud Private-Katalog verwendet werden (die anderen in der Whitelist der Richtlinie). Beispiel:

image-security-enforcement:
  clusterImagePolicy:
    - name: "{{ cluster_CA_domain }}:8500/*"
    - name: "registry.bluemix.net/ibm/*"
    - name: ...

Hinweis: Standardmäßig gilt Vulnerability Advisor (VA) Container Image Security Enforcement nicht für die Standardrichtlinie.

Richtlinie anpassen (während der Installation)

Sie können die Imagerichtlinie entweder auf der Ebene des Clusters oder des Namensbereichs ändern, nachdem Sie den IBM Cloud Private-Cluster installiert haben. In der Richtlinie können Sie unterschiedliche Durchsetzungsregeln für unterschiedliche Images angeben.

Sie können die Imagerichtlinie mit dem Geltungsbereich Cluster auch vordefinieren, bevor Sie IBM Cloud Private installieren. Diese vordefinierte Einstellung überschreibt die Standardimagerichtlinie für den Geltungsbereich Cluster während der Installation.

Um die Imagerichtlinie für den Geltungsbereich Cluster vor der Installation zu definieren, ändern Sie die Datei config.yaml.

Wenn Sie beispielsweise den folgenden Code zur Datei config.yaml hinzufügen, dürfen alle Images, die im Repository quay.io vorhanden sind, für Bereitstellungen in Ihrem Cluster verwendet werden.

image-security-enforcement:
  clusterImagePolicy:
    - name: "quay.io/*"
      policy:

Richtlinie anpassen (nach der Installation)

Die Richtlinie kann auch nach der Installation Ihres Clusters in Form eines Kubernetes-Objekts bereitgestellt werden. Um die Richtlinie als Kubernetes-Objekt bereitzustellen, verwenden Sie den Befehl kubectl apply.

  1. Erstellen Sie die Datei policy.yaml mit den Richtlinienspezifikationen. Nachfolgend finden Sie einige Beispielrichtlinienkonfigurationen, die Sie für Ihre Datei policy.yaml verwenden können.

  2. Wenden Sie die Richtlinie an.

    kubectl apply -f policy.yaml
    

Durchsetzung der Image-Sicherheit unter Verwendung der IBM Cloud Private-Managementkonsole

Sie können eine Durchsetzungsrichtlinie für Images mithilfe der IBM Cloud Private-Webkonsole erstellen, von der Leitlinien für Pods festgelegt werden, die im Cluster erstellt werden. Führen Sie die folgenden Schritte aus, um eine Richtlinie für Images zu erstellen:

  1. Melden Sie sich an der IBM Cloud Private-Webkonsole des Clusters mit einer ID an, die einem Clusteradministrator Zugriff gewährt.

  2. Wählen Sie im Navigationsmenü Verwalten > Ressourcensicherheit aus.

  3. Wählen Sie Imagerichtlinien aus. Eine Liste der verfügbaren Richtlinien für Images wird angezeigt.

  4. Wählen Sie Imagerichtlinie erstellen aus.

  5. Geben Sie einen Namen für die Imagerichtlinie ein. Der Name muss eine einzelne Zeichenfolge sein, die nur Buchstaben, Zahlen, Unterstreichungszeichen (_) und Bindestrichen (-) enthält.

  6. Wählen Sie aus den folgenden Optionen den Geltungsbereich der Richtlinie aus, um zu definieren, welche Ressourcen durch die Richtlinie eingeschränkt werden:

  7. Wenn Sie als Geltungsbereich 'Namensbereich' ausgewählt haben, wählen Sie einen vorhandenen Namensbereich aus der Liste aus, um den Namen anzugeben.

  8. Wählen Sie Registry hinzufügen aus, um einen vertrauenswürdigen Bereich anzugeben, von dem Sie Images empfangen können. Standardmäßig werden alle Images zurückgewiesen. Durch das Hinzufügen einer Registry wird festgelegt, dass die Position eine zulässige Quelle für Images ist.

    1. Geben Sie eine Registry-URL an, damit die Registry als vertrauenswürdige Quelle verwendet werden kann. Die Registry-URL hat ein Format ähnlich den folgenden Beispielen:
      • Alle Images aus Docker Hub zulassen: docker.io/*
      • Alle Images aus dem Repository 'ibmcom' zulassen: docker.io/ibmcom/*
    2. Geben Sie an, ob die Vulnerability Advisor-Scanrichtlinie ausgeführt werden soll, sofern diese installiert ist. Falls sie installiert ist und diese Einstellung aktiviert ist, muss das Image den Vulnerability Advisor-Scan durchlaufen, bevor es installiert wird.
    3. Wählen Sie Hinzufügen aus, um die neue Registry zu erstellen.
  9. Wählen Sie Hinzufügen aus, um die neue Imagerichtlinien zu speichern und zu erstellen.

  10. Wenn Sie eine Imagerichtlinie entfernen möchten, wählen Sie das Symbol zum Öffnen und Schließen der Optionsliste (...) für die Imagerichtlinie und anschließend Entfernen** aus.