Lab 11 : Mettre en place une authentification multi-facteurs pour OSC-CLI et Cockpit
Objectifs
Section intitulée « Objectifs »Dans cet atelier, vous allez apprendre comment mettre en place une authentification multi-facteurs sur le Cockpit V2 de 3DS OUTSCALE.
Introduction
Section intitulée « Introduction »Pour mettre en place une authentification multi-facteurs (MFA) sur votre compte OUTSCALE :
- Vous devez importer une autorité de certification (CA) qui servira d’ancre de confiance dans une chaîne de confiance.
- Vous devez ensuite configurer vos règles d’accès API pour obliger toutes les requêtes API à fournir un certificat client. Si ce certificat client est stocké sur un périphérique physique distinct, tel qu’une carte à puce, il constitue un facteur de possession et donc un second facteur d’authentification (par rapport à vos access keys, facteur de connaissance, qui constituent le premier facteur d’authentification).
- Les cartes à puce doivent se conformer au standard Personal Identity Verification (PIV).
- Vous pouvez alors activer une session de confiance avec votre politique d’accès API afin de simplifier votre accès aux API. Si vous utilisez Cockpit v2-beta, une session de confiance est automatiquement simulée pour vous.
Générer une CA
Section intitulée « Générer une CA »Générez une clé privée de CA :
openssl genrsa -aes256 -out ca-key.pem 4096Avec la clé privée de CA, générez un certificat de CA :
openssl req -new \-x509 \-days 365 \-key ca-key.pem \-out ca-certificate.pem \-config <(cat /etc/ssl/openssl.cnf <(echo -e "[ext]\nbasicConstraints = critical,CA:TRUE,pathlen:1")) \-extensions ext- Cette commande contient une configuration spécifique de “contraintes de base”, nécessaire pour que le certificat de CA soit accepté dans le Cloud OUTSCALE.
- Cette commande génère via le paramètre
-days 365un certificat de CA valide pendant un an
La clé privée de CA est enregistrée sous ca-key.pem et votre certificat de CA
sous ca-certificate.pem.
Importer votre CA
Section intitulée « Importer votre CA »Importez votre certificat de CA avec OSC CLI :
osc-cli api CreateCa \--Description "Useitcloud CA" \--CaPem="$(cat ca-certificate.pem)"Exemple de réponse :

Pour vérifier la bonne transmission de votre CA, vous pouvez comparer l’empreinte de la réponse ci-dessus avec l’empreinte générée par cette commande :
openssl x509 -in ca-certificate.pem -noout -sha1 -fingerprint | awk '{gsub(/.*=/, ""); gsub(":",""); print tolower($0)}'![]()
Votre certificat de CA est maintenant disponible dans votre compte OUTSCALE.
Configurer votre accès
Section intitulée « Configurer votre accès »Configurer vos règles d’accès API
Section intitulée « Configurer vos règles d’accès API »Créez une règle d’accès API autorisant uniquement les requêtes API qui fournissent un certificat client :
osc-cli api CreateApiAccessRule \--CaIds '["ca-12345678"]' \--Description "Allow access with certificates validated by my CA"
(Optionnel) Créez une règle d’accès API autorisant uniquement les requêtes API qui proviennent d’une IP à laquelle vous avez accès :
osc-cli api CreateApiAccessRule \--IpRanges '["192.0.2.0/32"]' \--Description "Backup access if certificate access fails"Si possible, utilisez une IP différente de votre IP actuelle, par exemple une IP de VPN, afin de tester parfaitement l’accès.
Listez les ID de toutes vos règles d’accès API :
osc-cli api ReadApiAccessRulesPar défaut, chaque compte possède les règles d’accès API suivantes :
- L’accès global est autorisé (
0.0.0.0/0). - L’accès depuis l’interface web Cockpit v1 de la Région du compte est autorisée.
Supprimez la règle d’accès API autorisant l’accès global :
osc-cli api DeleteApiAccessRule --ApiAccessRuleId "aar-11111111"Générer un certificat client
Section intitulée « Générer un certificat client »Générez une clé privée de certificat et une demande de certificat :
openssl req -new \-sha256 \-nodes \-newkey rsa:2048 \-keyout client-key.pem \-out client-certificate.csrVotre clé privée de certificat est enregistrée sous client-key.pem et votre
demande de certificat sous client-certificate.csr.
Avec les fichiers ci-dessus, générez un certificat client signé par votre CA :
openssl x509 -req \-sha256 \-days 365 \-CAkey ca-key.pem \-CA ca-certificate.pem \-CAcreateserial \-in client-certificate.csr \-out client-certificate.pem \-extfile <(echo "extendedKeyUsage = clientAuth")Votre certificat client est enregistré sous client-certificate.pem.
Configurer votre accès pour OSC CLI
Section intitulée « Configurer votre accès pour OSC CLI »Pour configurer OSC CLI de sorte à utiliser votre certificat client, ajoutez un
profil (nommé par exemple secure) dans votre fichier ~/.osc/config.json :
{ "default": { "access_key": "ACCESSKEY", "secret_key": "SECRETKEY", "host": "outscale.com", "https": true, "method": "POST", "region_name": "eu-west-2" }, "secure": { "access_key": "ACCESSKEY", "secret_key": "SECRETKEY", "host": "outscale.com", "https": true, "method": "POST", "region_name": "eu-west-2", "client_certificate": [ "/PATHTO/client-certificate.pem", "/PATHTO/client-key.pem" ] }}Testez votre profil secure en exécutant une commande OSC CLI quelconque :
osc-cli api ReadVms --profile "secure"
Si votre profil secure fonctionne correctement, vous pouvez supprimer la règle d’accès API autorisant l’accès depuis Cockpit v1, ainsi que celle autorisant une IP à laquelle vous avez l’accès :
osc-cli api DeleteApiAccessRule --profile "secure" --ApiAccessRuleId "aar-22222222"osc-cli api DeleteApiAccessRule --profile "secure" --ApiAccessRuleId "aar-44444444"Activer une session de confiance
Section intitulée « Activer une session de confiance »Récupérez les ID de toutes vos access keys :
osc-cli api ReadAccessKeys --profile "secure"Exemple de réponse :
"AccessKeys": [ { "AccessKeyId": "AAAAAAAAAAAAAAAA", "CreationDate": "YYYY-MM-DDThh:mm:ss.000Z", "LastModificationDate": "YYYY-MM-DDThh:mm:ss.000Z", "State": "ACTIVE" }, { "AccessKeyId": "BBBBBBBBBBBBBBBB", "CreationDate": "YYYY-MM-DDThh:mm:ss.000Z", "LastModificationDate": "YYYY-MM-DDThh:mm:ss.000Z", "State": "ACTIVE" }]Définissez des dates d’expiration pour toutes vos access keys :
osc-cli api UpdateAccessKey \--profile "secure" \--AccessKeyId "AAAAAAAAAAAAAAAA" \--State "ACTIVE" \--ExpirationDate "20XX-XX-XXTXX:XX:XXZ"
osc-cli api UpdateAccessKey \--profile "secure" \--AccessKeyId "BBBBBBBBBBBBBBBB" \--State "ACTIVE" \--ExpirationDate "20XX-XX-XXTXX:XX:XXZ"Toutes vos access keys ont maintenant des durées de vie finies.
Pour activer une session de confiance, modifiez votre politique d’accès API :
osc-cli api UpdateApiAccessPolicy \--profile "secure" \--MaxAccessKeyExpirationSeconds XXXXXX \--RequireTrustedEnv TrueConfigurer un MFA pour Cockpit v2
Section intitulée « Configurer un MFA pour Cockpit v2 »Cockpit V2 permet plusieurs formes d’authentification multi-facteurs :
- A l’aide d’un dispositif de sécurité (lecteur biométrique ou clé physique) ;
- A l’aide d’une application (mobile) qui génère un « one time password » (OTP)
Ici, nous allons configurer une application qui génère une OTP.
Application OTP
Section intitulée « Application OTP »Il existe de nombreuses applications de gestion de mot de passe à usage unique, en voici quelques-unes :
- FreeOTP Authenticator (Open Source)
- Google Authenticator
- Microsoft Authenticator
- Open OTP Token (Open Source)
Chacune de ces applications permet de se connecter indifféremment sur cockpit V2. Si vous n’en utilisez aucune, choisissez celle qui vous semble la plus adaptée selon vos autres usages (les applications d’éditeurs permettent en général d’être utilisé comme second facteur sans avoir à saisir le mot de passe à usage unique).
Configuration cockpit V2
Section intitulée « Configuration cockpit V2 »Accéder aux paramètres d’authentification dans le menu personnel.

Ouvrez le menu Setup OTP

- Scannez le QR code affiché ou bien suivez le lien pour une méthode alternative.
- Ensuite reportez le premier « OTP » affiché dans vote application.
- Donnez un nom à cet appareil (par exemple : « mobile pro » ou « MS Authenticator »).
- Ensuite ceci vous permettra de discinguer plusieurs dispositif si vous devez les supprimer.

- Mettez en place le système en validant la création en cliquant sur
set up.
Vous disposez à présent d’un système MFA pour contrôler votre connexion sur cockpit.
Si vous souhaitez désactiver le système MFA mis en place, vous devez retourner dans les « paramètres d’authentification » dans le « menu personnel » et sélectionner « remove » pour le dispositif que vous souhaitez supprimer.
