OpenShift / OKD

Objectifs

  • Découvrir OpenShift / OKD et les propriétés de sécurité pré-configurées

Obtenir un environement OKD en local

OKD est la distribution soeur d’OpenShift, disponible gratuitement, basée sur Fedora CoreOS / CentOS Stream CoreOS et supportée par la communauté.

Suivre les instructions des liens suivants pour obtenir un cluster OKD en local :

Fonctionnalités de sécurité d’OpenShift / OKD

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.

Références