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.