Imposer l'utilisation d'images signées issues du registre

Découvrez comment appliquer l'utilisation d'images signées à partir d'Oracle Cloud Infrastructure Registry lors du déploiement d'applications dans une grappe que vous avez créée à l'aide de Kubernetes Engine (OKE).

Pour des raisons de conformité et de sécurité, les administrateurs de systèmes ne déploient généralement des logiciels dans un système de production que lorsqu'ils ont l'assurance que :

  • le logiciel provient d'une source de confiance
  • le logiciel n'a pas subi depuis sa publication de modifications ayant compromis son intégrité

Pour répondre à ces exigences, vous pouvez signer les images stockées dans Oracle Cloud Infrastructure Registry. Les images signées permettent de vérifier à la fois la source d'une image et son intégrité. Oracle Cloud Infrastructure Registry permet aux utilisateurs ou aux systèmes de transmettre des images au registre, puis de les signer pour créer une signature d'image. Une signature d'image associe une image à une clé de chiffrement principale obtenue à partir du service Chambre forte pour Oracle Cloud Infrastructure Vault.

Les utilisateurs ou les systèmes qui extraient une image signée d'Oracle Cloud Infrastructure Registry ont l'assurance que la source de l'image est fiable et que l'intégrité de l'image n'a pas été compromise. Pour plus d'informations, voir Signature d'images à des fins de sécurité.

Pour améliorer davantage la sécurité, vous pouvez configurer les grappes que vous avez créées à l'aide de Kubernetes Engine afin d'autoriser uniquement le déploiement d'images signées par des clés de chiffrement principales particulières à partir d'Oracle Cloud Infrastructure Registry. Voici les étapes générales à suivre :

  • Signez des images dans Oracle Cloud Infrastructure Registry avec des signatures qui utilisent les clés de chiffrement principales du service Chambre forte pour Oracle Cloud Infrastructure (voir Signature d'images à des fins de sécurité).
  • Créez une politique de vérification d'image pour une grappe, spécifiant quelles clés de chiffrement principales doivent avoir été utilisées pour signer des images.
  • Permettez à la grappe d'utiliser la politique de vérification d'image pour imposer l'utilisation d'images dûment signées.

Notez ce qui suit :

  • Une image stockée dans Oracle Cloud Infrastructure Registry peut être signée à l'aide de plusieurs signatures, associées chacune à une clé de chiffrement principale différente. Si la politique de vérification d'image d'une grappe inclut au moins l'une des clés de chiffrement principales, la grappe autorise l'extraction de l'image d'Oracle Cloud Infrastructure Registry.
  • Vous pouvez spécifier jusqu'à cinq clés de chiffrement principales dans la politique de vérification d'image d'une grappe.
  • Si vous activez l'utilisation de la politique de vérification d'image pour une grappe, mais que vous ne spécifiez pas la ou les clés de chiffrement principales qui doivent avoir été utilisées pour signer une image :
    • toute image signée peut être extraite d'Oracle Cloud Infrastructure Registry, quelles que soient les clés de chiffrement principales utilisées pour la signer
    • toute image non signée peut être extraite d'Oracle Cloud Infrastructure Registry
  • Si vous activez l'utilisation de la politique de vérification d'image pour une grappe mais que Kubernetes Engine ne peut pas se connecter à Oracle Cloud Infrastructure Registry, aucune image ne peut être extraite d'Oracle Cloud Infrastructure Registry.
  • Une image dans Oracle Cloud Infrastructure Registry est identifiée par un référentiel, un nom et un marqueur. En outre, chaque version d'une image reçoit un condensé alphanumérique unique. Si vous activez une grappe pour utiliser sa politique de vérification d'image, dans les spécifications de pod (et d'autres fichiers manifestes), vous devez référencer une image à l'aide du condensé d'image plutôt que de la balise d'image. Par exemple, utilisez :
    image: phx.ocir.io/ansh81vru1zp/project01/ngnix-lb@sha256:ee44b399d______49c775b

    plutôt que simplement :

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

    Notez que vous devez modifier toutes les spécifications de pod existantes (et d'autres fichiers manifestes qui référencent des images) pour utiliser des condensés d'image plutôt que des balises d'image.

  • Après avoir activé l'utilisation de la politique de vérification d'image pour une grappe, vous pouvez avoir besoin qu'un pod particulier extraie une image qui ne respecte pas cette politique. Dans ce cas, vous pouvez ajouter l'annotation oracle.image-policy.k8s.io/break-glass: "true" à la spécification du pod. Après que vous avez ajouté l'annotation à la spécification du pod, celui-ci peut extraire toutes les images signées et non signées d'Oracle Cloud Infrastructure Registry, quelle que soit la politique de vérification d'image de la grappe.
  • Une grappe utilise les images signées par les clés de chiffrement principales incluses dans sa politique de vérification d'image, si :
    • les images sont extraites d'Oracle Cloud Infrastructure Registry (et non d'autres registres)
    • les images sont signées à l'aide de clés de chiffrement principales obtenues à partir du service Chambre forte pour Oracle Cloud Infrastructure

Politiques GIA requises pour imposer l'utilisation d'images signées

Pour permettre aux grappes d'inclure des clés de chiffrement principales dans les politiques de vérification d'image, vous devez leur accorder l'autorisation d'utiliser les clés du service Chambre forte pour Oracle Cloud Infrastructure. Par exemple, pour accorder cette autorisation à une grappe particulière de la location :

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

Pour permettre aux grappes d'extraire des images signées d'Oracle Cloud Infrastructure Registry, vous devez leur accorder l'autorisation d'accéder aux référentiels dans Oracle Cloud Infrastructure Registry. Par exemple, pour accorder cette autorisation à une grappe particulière de la location :

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

Pour obtenir des exemples de création de politiques plus précises, voir Chiffrement des clés secrètes Kubernetes au repos dans etcd.

Imposer l'utilisation d'images signées

Pour permettre à une grappe d'autoriser les applications à extraire d'Oracle Cloud Infrastructure Registry uniquement les images qui ont été signées à l'aide de clés de chiffrement principales spécifiques :

  1. Si vous n'avez pas déjà accès à une clé asymétrique RSA dans le service Chambre forte pour Oracle Cloud Infrastructure, créez une ou plusieurs clés de chiffrement principales en tant que clés asymétriques RSA. Voir Création d'une clé de chiffrement principale.
  2. Définissez une politique de vérification d'image pour la grappe et spécifiez au moins une clé de chiffrement principale qui doit avoir été utilisée pour signer les images :
    1. Dans la page de liste Grappes, sélectionnez la grappe pour laquelle vous souhaitez définir une politique de vérification d'image. Si vous avez besoin d'aide pour trouver la page de liste ou la grappe, voir Liste des grappes.
    2. Sous Ressources, sélectionnez Vérification d'image.
    3. Sélectionnez Modifier la vérification d'image.
    4. Sélectionnez Activer les politiques de vérification d'image dans cette grappe pour permettre à la grappe d'utiliser la politique que vous définissez.
    5. Sélectionnez une clé de chiffrement principale dans le service Chambre forte pour Oracle Cloud Infrastructure qui doit avoir été utilisée pour signer des images.

      Si vous souhaitez permettre l'extraction d'images signées par différentes clés, vous pouvez spécifier plusieurs clés de chiffrement principales.

      Notez que si vous spécifiez plusieurs clés de chiffrement principales, une seule doit être utilisée pour signer une image. Il n'est pas nécessaire qu'une image soit signée par toutes les clés de chiffrement principales que vous spécifiez. Vous pouvez spécifier jusqu'à cinq clés de chiffrement principales dans la politique de vérification d'image de la grappe.

    6. Sélectionnez Enregistrer les paramètres de vérification d'image.

      À partir de maintenant, la grappe permet aux applications d'extraire d'Oracle Cloud Infrastructure Registry uniquement ces images qui ont été signées à l'aide des clés de chiffrement principales incluses dans la politique de vérification d'image. Les tentatives d'extraction d'images non autorisées sont enregistrées dans les journaux d'application (voir Consultation des journaux d'application des noeuds gérés et des noeuds autogérés).

  3. Signez les images que vous souhaitez que la grappe autorise, en utilisant des signatures qui associent les images à une ou plusieurs des clés de chiffrement principales de la politique de vérification d'image que vous avez définie. Voir Signature d'images à des fins de sécurité.
  4. (Facultatif) Pour déployer une application qui extrait une image signée d'Oracle Cloud Infrastructure Registry, suivez les étapes décrites dans Extraction des images du registre lors du déploiement et spécifiez l'image dans le fichier manifeste de l'application.