7.2. Configuration d'un fournisseur d'identité Keystone

Configurez le fournisseur d'identité keystone pour intégrer votre cluster OpenShift Container Platform avec Keystone afin d'activer l'authentification partagée avec un serveur OpenStack Keystone v3 configuré pour stocker les utilisateurs dans une base de données interne. Cette configuration permet aux utilisateurs de se connecter à OpenShift Container Platform avec leurs informations d'identification Keystone.

7.2.1. À propos des fournisseurs d'identité dans OpenShift Container Platform

Par défaut, seul un utilisateur kubeadmin existe sur votre cluster. Pour spécifier un fournisseur d'identité, vous devez créer une ressource personnalisée (CR) qui décrit ce fournisseur d'identité et l'ajouter au cluster.

Note

Les noms d'utilisateur OpenShift Container Platform contenant /, :, et % ne sont pas pris en charge.

7.2.2. À propos de l'authentification Keystone

Keystone est un projet OpenStack qui fournit des services d'identité, de jeton, de catalogue et de politique.

Vous pouvez configurer l'intégration avec Keystone pour que les nouveaux utilisateurs d'OpenShift Container Platform soient basés sur les noms d'utilisateurs Keystone ou les identifiants uniques Keystone. Avec les deux méthodes, les utilisateurs se connectent en entrant leur nom d'utilisateur et leur mot de passe Keystone. Baser les utilisateurs d'OpenShift Container Platform sur l'ID Keystone est plus sûr car si vous supprimez un utilisateur Keystone et créez un nouvel utilisateur Keystone avec ce nom d'utilisateur, le nouvel utilisateur pourrait avoir accès aux ressources de l'ancien utilisateur.

7.2.3. Création du secret

Les fournisseurs d'identité utilisent des objets OpenShift Container Platform Secret dans l'espace de noms openshift-config pour contenir le secret du client, les certificats du client et les clés.

Procédure

  • Créez un objet Secret contenant la clé et le certificat à l'aide de la commande suivante :

    $ oc create secret tls <secret_name> --key=key.pem --cert=cert.pem -n openshift-config
    Astuce

    Vous pouvez également appliquer le code YAML suivant pour créer le secret :

    apiVersion: v1
    kind: Secret
    metadata:
      name: <secret_name>
      namespace: openshift-config
    type: kubernetes.io/tls
    data:
      tls.crt: <base64_encoded_cert>
      tls.key: <base64_encoded_key>

7.2.4. Création d'une carte de configuration

Les fournisseurs d'identité utilisent les objets OpenShift Container Platform ConfigMap dans l'espace de noms openshift-config pour contenir le paquet de l'autorité de certification. Ces objets sont principalement utilisés pour contenir les paquets de certificats nécessaires au fournisseur d'identité.

Procédure

  • Définissez un objet OpenShift Container Platform ConfigMap contenant l'autorité de certification en utilisant la commande suivante. L'autorité de certification doit être stockée dans la clé ca.crt de l'objet ConfigMap.

    $ oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-config
    Astuce

    Vous pouvez également appliquer le YAML suivant pour créer la carte de configuration :

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ca-config-map
      namespace: openshift-config
    data:
      ca.crt: |
        <CA_certificate_PEM>

7.2.5. Exemple de Keystone CR

La ressource personnalisée (CR) suivante présente les paramètres et les valeurs acceptables pour un fournisseur d'identité Keystone.

Keystone CR

apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: keystoneidp 1
    mappingMethod: claim 2
    type: Keystone
    keystone:
      domainName: default 3
      url: https://keystone.example.com:5000 4
      ca: 5
        name: ca-config-map
      tlsClientCert: 6
        name: client-cert-secret
      tlsClientKey: 7
        name: client-key-secret

1
Ce nom de fournisseur est préfixé aux noms d'utilisateurs du fournisseur pour former un nom d'identité.
2
Contrôle la manière dont les correspondances sont établies entre les identités de ce fournisseur et les objets User.
3
Nom de domaine Keystone. Dans Keystone, les noms d'utilisateur sont spécifiques à un domaine. Un seul domaine est pris en charge.
4
L'URL à utiliser pour se connecter au serveur Keystone (obligatoire). Elle doit utiliser https.
5
Facultatif : Référence à un objet OpenShift Container Platform ConfigMap contenant le bundle de l'autorité de certification codé en PEM à utiliser pour valider les certificats du serveur pour l'URL configurée.
6
Facultatif : Référence à un objet OpenShift Container Platform Secret contenant le certificat client à présenter lors des requêtes à l'URL configurée.
7
Référence à un objet OpenShift Container Platform Secret contenant la clé du certificat client. Requis si tlsClientCert est spécifié.

Ressources complémentaires

7.2.6. Ajouter un fournisseur d'identité à votre cluster

Après avoir installé votre cluster, ajoutez-y un fournisseur d'identité pour que vos utilisateurs puissent s'authentifier.

Conditions préalables

  • Créer un cluster OpenShift Container Platform.
  • Créez la ressource personnalisée (CR) pour vos fournisseurs d'identité.
  • Vous devez être connecté en tant qu'administrateur.

Procédure

  1. Appliquer le CR défini :

    $ oc apply -f </path/to/CR>
    Note

    Si un CR n'existe pas, oc apply crée un nouveau CR et peut déclencher l'avertissement suivant : Warning: oc apply should be used on resources created by either oc create --save-config or oc apply. Dans ce cas, vous pouvez ignorer cet avertissement.

  2. Connectez-vous au cluster en tant qu'utilisateur de votre fournisseur d'identité, en saisissant le mot de passe lorsque vous y êtes invité.

    $ oc login -u <nom d'utilisateur>
  3. Confirmez que l'utilisateur s'est connecté avec succès et affichez le nom de l'utilisateur.

    $ oc whoami