Verwendung signierter Images aus Registry erzwingen

Erfahren Sie, wie Sie die Verwendung signierter Images aus Oracle Cloud Infrastructure Registry durchsetzen, wenn Anwendungen in einem Cluster bereitgestellt werden, das Sie mit Kubernetes Engine (OKE) erstellt haben.

Aus Compliance- und Sicherheitsgründen möchten Systemadministratoren Software oft nur dann in einem Produktionssystem bereitstellen, wenn sie sich sicher sind, dass:

  • die Software aus einer vertrauenswürdigen Quelle stammt
  • die Software seit ihrer Veröffentlichung nicht mehr geändert wurde, was ihre Integrität kompromittieren würde

Um diese Anforderungen zu erfüllen, können Sie Images signieren, die in der Oracle Cloud Infrastructure Registry gespeichert sind. Signierte Images bieten eine Möglichkeit, sowohl die Quelle eines Images als auch seine Integrität zu überprüfen. Mit Oracle Cloud Infrastructure Registry können Benutzer oder Systeme Images an die Registry übertragen und diese dann signieren. Dadurch wird eine Imagesignatur erstellt. Eine Imagesignatur verknüpft ein Image mit einem Masterverschlüsselungsschlüssel, der aus Oracle Cloud Infrastructure Vault abgerufen wurde.

Benutzer oder Systeme, die ein signiertes Image aus Oracle Cloud Infrastructure Registry abrufen, können sich sicher sein, dass die Quelle des Images vertrauenswürdig ist und dass die Integrität des Images nicht kompromittiert wurde. Weitere Informationen finden Sie unter Images für mehr Sicherheit signieren.

Um die Sicherheit weiter zu verbessern, können Sie mit der Kubernetes-Engine erstellte Cluster so konfigurieren, dass das Deployment von Images aus Oracle Cloud Infrastructure Registry nur zulässig ist, die mit bestimmten Masterschlüsselungsschlüsseln signiert wurden. Im Allgemeinen führen Sie dazu die folgenden Schritte aus:

  • Signieren Sie Images in Oracle Cloud Infrastructure Registry mit Imagesignaturen, die Masterverschlüsselungsschlüssel aus Oracle Cloud Infrastructure Vault verwenden (siehe Images für mehr Sicherheit signieren).
  • Erstellen Sie eine Imageverifizierungs-Policy für ein Cluster, in der angegeben ist, welche Masterverschlüsselungsschlüssel zum Signieren von Images verwendet werden müssen.
  • Aktivieren Sie die Verwendung der Imageverifizierungs-Policy durch das Cluster, um die Verwendung geeigneter signierter Images zu erzwingen.

Beachten Sie Folgendes:

  • Ein Image in Oracle Cloud Infrastructure Registry kann mit mehreren Signaturen signiert werden, die jeweils mit einem anderen Masterverschlüsselungsschlüssel verknüpft sind. Wenn die Imageverifizierungs-Policy eines Clusters mindestens einen dieser Masterverschlüsselungsschlüssel enthält, lässt das Cluster ein Abrufen des Images aus Oracle Cloud Infrastructure Registry zu.
  • Sie können bis zu fünf Masterverschlüsselungsschlüssel in der Imageverifizierungs-Policy eines Clusters angeben.
  • Wenn Sie die Verwendung der Imageverifizierungs-Policy durch ein Cluster aktivieren, aber keine Masterverschlüsselungsschlüssel angeben, die zum Signieren eines Images verwendet werden müssen:
    • kann jedes signierte Image aus Oracle Cloud Infrastructure Registry abgerufen werden, unabhängig von den Masterverschlüsselungsschlüsseln, die zum Signieren verwendet wurden
    • kann jedes nicht signierte Image aus Oracle Cloud Infrastructure Registry abgerufen werden
  • Wenn Sie die Verwendung der Imageverifizierungs-Policy durch ein Cluster aktivieren, die Kubernetes-Engine jedoch keine Verbindung zu Oracle Cloud Infrastructure Registry herstellen kann, können keine Images aus Oracle Cloud Infrastructure Registry abgerufen werden.
  • Ein Image in Oracle Cloud Infrastructure Registry wird durch Repository, Namen und ein Tag identifiziert. Außerdem erhält jede Version eines Images einen eindeutigen alphanumerischen Digest. Wenn Sie einem Cluster die Verwendung seiner Imageverifizierungs-Policy ermöglichen, müssen Sie in Podspezifikationen (und anderen Manifestdateien) ein Image mit dem Imagedigest und nicht mit dem Imagetag referenzieren. Verwenden Sie beispielsweise:
    image: phx.ocir.io/ansh81vru1zp/project01/ngnix-lb@sha256:ee44b399d______49c775b

    anstatt einfach:

    image: phx.ocir.io/ansh81vru1zp/project01/ngnix-lb:latest

    Beachten Sie, dass Sie alle vorhandenen Podspezifikationen (und andere Manifestdateien, die Bilder referenzieren) ändern müssen, um Imagedigests anstelle von Imagetags zu verwenden.

  • Nachdem Sie die Verwendung der Imageverifizierungs-Policy durch ein Cluster aktiviert haben, kann es vorkommen, dass ein bestimmter Pod dringend ein Image abrufen muss, das gegen die Policy verstößt. In diesem Fall können Sie der Podspezifikation die Anmerkung oracle.image-policy.k8s.io/break-glass: "true" hinzufügen. Nachdem Sie die Annotation zur Podspezifikation hinzugefügt haben, kann der Pod signierte und nicht signierte Images unabhängig von der Imageverifizierungs-Policy des Clusters aus Oracle Cloud Infrastructure Registry abrufen.
  • Unter folgenden Voraussetzungen erzwingt ein Cluster die Verwendung von Images, die mit Masterverschlüsselungsschlüsseln signiert wurden, die in der Imageverifizierungs-Policy enthalten sind:
    • Images werden aus Oracle Cloud Infrastructure Registry abgerufen (statt aus anderen Registrys)
    • Images werden mit Masterverschlüsselungsschlüsseln signiert, die aus Oracle Cloud Infrastructure Vault abgerufen wurden

Erforderliche IAM-Policys zum Erzwingen der Verwendung signierter Images

Damit Cluster Masterverschlüsselungsschlüssel in Imageverifizierungs-Policys einfügen können, müssen Sie Clustern die Berechtigung zur Verwendung von Schlüsseln aus Oracle Cloud Infrastructure Vault erteilen. Beispiel: So erteilen Sie diese Berechtigung für ein bestimmtes Cluster im Mandanten:

Allow any-user to use keys in tenancy where request.user.id=<CLUSTER_OCID>

Damit Cluster signierte Images aus Oracle Cloud Infrastructure Registry abrufen können, müssen Sie Clustern die Berechtigung zum Zugriff auf Repositorys in Oracle Cloud Infrastructure Registry erteilen. Beispiel: So erteilen Sie diese Berechtigung für ein bestimmtes Cluster im Mandanten:

Allow any-user to read repos in tenancy where request.user.id=<CLUSTER_OCID>

Beispiele zum Erstellen von granulareren Policys finden Sie unter Kubernetes-Secrets im Ruhezustand in Etcd verschlüsseln.

Verwendung signierter Images erzwingen

So ermöglichen Sie, dass Anwendungen für ein Cluster nur die Images aus Oracle Cloud Infrastructure Registry abrufen können, die mit bestimmten Masterverschlüsselungsschlüsseln signiert wurden:

  1. Wenn Sie noch nicht auf einen asymmetrischen RSA-Schlüssel in Oracle Cloud Infrastructure Vault zugreifen können, erstellen Sie einen oder mehrere Masterverschlüsselungsschlüssel als asymmetrische RSA-Schlüssel. Informationen hierzu finden Sie unter Mastverschlüsselungsschlüssel erstellen.
  2. Definieren Sie eine Imageverifizierungs-Policy für das Cluster, und geben Sie mindestens einen Masterverschlüsselungsschlüssel an, der zum Signieren von Images verwendet worden sein muss:
    1. Wählen Sie auf der Listenseite Cluster das Cluster aus, für das Sie eine Imageverifizierungs-Policy definieren möchten. Wenn Sie Hilfe beim Suchen der Listenseite oder des Clusters benötigen, finden Sie weitere Informationen unter Cluster auflisten.
    2. Wählen Sie unter Ressourcen die Option Imageverifizierung aus.
    3. Wählen Sie Imageverifizierung bearbeiten aus.
    4. Wählen Sie Imageverifizierungs-Policys in diesem Cluster aktivieren aus, damit das Cluster die von Ihnen definierten Imageverifizierungs-Policy verwenden kann
    5. Wählen Sie in Oracle Cloud Infrastructure Vault einen Masterverschlüsselungsschlüssel aus, mit dem Images signiert werden müssen.

      Wenn Sie das Signieren von Images mit mehreren abgerufenen Schlüsseln zulassen möchten, können Sie mehrere Masterverschlüsselungsschlüssel angeben.

      Hinweis: Wenn Sie mehrere Masterverschlüsselungsschlüssel angeben, muss ein Image nur mit einem dieser Schlüssel signiert werden. Ein Image muss nicht mit allen angegebenen Masterverschlüsselungsschlüsseln signiert werden. Sie können bis zu fünf Masterverschlüsselungsschlüssel in der Imageverifizierungs-Policy des Clusters angeben.

    6. Wählen Sie Imageverifizierungseinstellungen speichern aus.

      Ab sofort können Anwendungen für Cluster nur die Images aus Oracle Cloud Infrastructure Registry abrufen, die mit Masterverschlüsselungsschlüsseln aus der Imageverifizierungs-Policy signiert wurden. Versuche, unzulässige Images abzurufen, werden in Anwendungslogs aufgezeichnet (siehe Anwendungslogs auf verwalteten Knoten und selbstverwalteten Knoten anzeigen).

  3. Signieren Sie die Images, die Sie für das Cluster zulassen möchten, mit Imagesignaturen, die die Images mit einem oder mehreren Masterverschlüsselungsschlüsseln in der von Ihnen definierten Imageverifizierungs-Policy verknüpfen. Siehe Images für mehr Sicherheit signieren.
  4. (Optional) Um eine Anwendung bereitzustellen, die ein signiertes Image aus der Oracle Cloud Infrastructure Registry abrufen, führen Sie die Schritte unter Images während des Deployments aus der Registry abrufen aus, und geben Sie das Image in der Manifestdatei der Anwendung an.