Infrastructure de virtualisation et sécurité

Objectifs

  • Découvrir Fedora CoreOS, un système conçu pour les conteneurs
  • Découvrir Kubernetes et l’orchestration de conteneurs
  • Découvrir OpenShift
  • Découvrir Terraform

Important : Gardez une trace des différentes commandes utilisées et des configurations produites.

Fedora CoreOS

Découvrez le fonctionnement d’un système conçu pour les conteneurs avec le tutoriel de Fedora CoreOS.

Par défaut, le tutoriel utilise libvirt avec QEMU/KVM (Linux uniquement). Pour le réaliser sur une autre platforme :

Vous pouvez ensuite essayer d’autres exemples :

Kubernetes

OpenShift

Essayez OpenShift avec les tutoriels interactifs :

Fonctionnalités de sécurité d’OpenShift

OpenShift est configuré par défaut avec un ensemble de restrictions et de fonctionnalités de sécurité (voir la documentation, l’article dédié et l’ebook dédié). Ces restrictions améliorent la sécurité de la plateforme mais elles nécessitent parfois des changements dans les applications et conteneurs publiés sur le DockerHub qui ne suivraient pas les recommandations en terme de sécurité.

L’une de ces fonctionnalité est de lancer systématiquement les conteneurs sous un utilisateur différent de root. De nombreuses images ne sont pas capables de gérer ce mode de fonctionnement correctement par défaut (c.f. TD précédent dans lequel vous deviez créer une image capable de fonctionner en non-root).

Par exemple, l’ image de conteneur officielle de PostgreSQL ne fonctionne pas par défaut. Voici des examples de deployment pour vérifier ces éléments :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pgsql-deployment
  labels:
    app: pgsql
spec:
  replicas: 3
  selector:
    matchLabels:
      app: pgsql
  template:
    metadata:
      labels:
        app: pgsql
    spec:
      containers:
      - name: pgsql
        image: postgres:12
        env:
          - name: POSTGRES_PASSWORD
            value: "azerty"
        ports:
        - containerPort: 80

Red Hat fournit une image de conteneur avec PostgreSQL qui a été adaptée pour s’assurer que l’application ne tourne jamais en root, même si vous ne l’utilisez pas sur OpenShift :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pgsqlrh-deployment
  labels:
    app: pgsqlrh
spec:
  replicas: 3
  selector:
    matchLabels:
      app: pgsqlrh
  template:
    metadata:
      labels:
        app: pgsqlrh
    spec:
      containers:
      - name: pgsqlrh
        image: registry.redhat.io/rhel8/postgresql-12
        env:
          - name: POSTGRESQL_ADMIN_PASSWORD
            value: "azerty"
        ports:
        - containerPort: 80

La documentation liste les instructions pour créer des images de conteneurs propres et plus particulièrement les spécificités d’OpenShift. Faire cet effort n’est pas vain même si vous utilisez un cluster Kubernetes classique (non-OpenShift) puisque ne pas faire tourner en root les applications dans les conteneurs est l’un des principe de sécurité de base pour un cluster.

Terraform

Découvrez le fonctionnement de Terraform (Infrastructure as Code) avec le tutoriel officiel pour GCP :

Alternatives :

Autres ressources