Sécuriser les API de Logs Data Platform avec des jetons
Si vous souhaitez donner accès à vos logs à une application logicielle ou automatiser des tâches qui dépendent de vos logs, vous devrez peut-être y accéder via l'API.
Objectif
Avec Logs Data Platform, il existe 3 façons de requêter vos logs :
- L'interface web Graylog
- L'API Graylog
- L'API OpenSearch située sur le port 9200 de votre cluster (dont vous trouverez l'adresse sur la page Home) et interrogée via votre alias.
Vous pouvez ainsi ouvrir Grafana ou même un tableau de bord en terminal pour Graylog.
Tous ces accès sont sécurisés par votre nom d'utilisateur et votre mot de passe. Mais peut-être ne souhaitez-vous pas placer vos identifiants Logs Data Platform un peu partout. Vous pouvez simplement utiliser des jetons pour accéder à tous ces endpoints et les révoquer à tout moment. Ce tutoriel est là pour vous expliquer comment procéder.
Prérequis
En pratique
Générer des jetons avec l'IAM
Avant de générer des jetons avec l'IAM, vous devrez créer un utilisateur local ou un compte de service. Les deux présentent des spécificités détaillées dans la documentation IAM. N'oubliez pas de rattacher ces nouvelles identités à vos politiques IAM.
Utilisateurs locaux
Créez un utilisateur local en suivant la documentation dédiée et créez les politiques IAM adaptées. Une fois l'utilisateur créé, vous pouvez utiliser l'API OVHcloud pour créer un jeton pour cet utilisateur :
Cet appel renverra un jeton d'accès Bearer pour votre utilisateur local.
Vous pouvez ensuite utiliser ce jeton sur les API backend de Logs Data Platform :
Ou avec l'en-tête Bearer :
Ces jetons n'expirent pas mais peuvent être supprimés à tout moment avec cet appel :
Comptes de service
Créez un compte de service et des jetons en suivant la documentation. Les comptes de service sont un couple identifiant/jeton reposant sur le mécanisme d'authentification OAuth2 client- credentials. Si vous êtes familier des clients OAuth2, voici les appels API permettant de les créer. Nous vous recommandons néanmoins de lire le guide dédié afin de comprendre ses spécificités. Nous vous encourageons à utiliser les utilisateurs locaux si vous en avez la possibilité, car ils sont plus simples à mettre en place.
Pour créer un compte de service, utilisez l'appel API suivant :
Cet appel API vous permet de créer des identifiants OAuth2 pour plusieurs mécanismes d'authentification. Celui qui nous intéresse ici est CLIENT_CREDENTIALS. Ce mécanisme ne nécessite pas d'URL de rappel.
Vous devez fournir les valeurs suivantes :
- callbackUrls : un tableau vide d'URL de rappel
[]. - flow :
CLIENT_CREDENTIALS. - name : le nom que vous souhaitez donner à votre identifiant.
- description : une description de votre identifiant. Nous vous recommandons de décrire l'usage que vous ferez de cet identifiant. Si vous auditez vos accès par la suite, il sera plus facile de le relier au nom de votre application, afin de retrouver aisément où l'identifiant est déployé (et quel sera l'impact si vous modifiez votre accès).
En réponse, l'API vous fournira deux informations :
- clientId : l'identifiant de votre compte de service.
- clientSecret : un jeton vous permettant de vous authentifier sur nos API. Cette information doit être stockée de manière sécurisée. Avec ces deux identifiants, vous pouvez vous connecter à ce compte de service et obtenir les droits qui lui sont associés. Conservez cette valeur : il ne sera pas possible de la récupérer ultérieurement.
Afin de récupérer un jeton d'API, vous pouvez utiliser l'appel HTTP suivant avec ces deux informations :
Utilisez l'endpoint de jeton correspondant à votre région d'API (l'exemple ci-dessus utilise l'endpoint européen) :
- API EU :
https://www.ovh.com/auth/oauth2/token. - API CA :
https://ca.ovh.com/auth/oauth2/token.
À la suite de cet appel API, vous recevrez une réponse au format suivant :
Conservez le jeton contenu dans le champ access_token. Vous en aurez besoin pour authentifier vos appels API.
Ce jeton d'accès peut ensuite être utilisé pour interagir avec les API backend de Logs Data Platform. N'oubliez pas de gérer les droits d'accès de votre compte de service avec les politiques IAM.
Ou avec l'en-tête Bearer :
Notez que les jetons d'accès créés via un compte de service expirent au bout d'un certain temps. Vous devez en régénérer un nouveau après expiration.
Authentification hybride
Pour les logiciels qui ne prennent pas en charge le schéma d'authentification Bearer, nous proposons un mode d'authentification hybride basé sur le schéma d'authentification Basic. Utilisez un nom d'utilisateur commençant par pat_jwt_ et indiquez la valeur du jeton comme mot de passe.
Jetons legacy
Les jetons legacy existants fonctionnent toujours pour les services sans IAM, mais il n'est plus possible d'en créer de nouveaux. Ils ne sont pas disponibles pour les utilisateurs ayant activé l'IAM. Nous vous encourageons vivement à migrer vers l'IAM dès maintenant et à utiliser les jetons plus flexibles décrits ci-dessus.
Une fois connecté à Logs Data Platform, vous retrouverez vos jetons legacy existants dans l'entrée Jetons d'API du panneau de configuration.
Sur cette page, vous pouvez toujours révoquer un jeton. Notez que vous ne pouvez pas modifier un jeton.
Pour passer le service à l'IAM, cliquez sur Passer à l'IAM OVHcloud sur cette même page. Le guide de migration IAM détaille ce qui change.
Utiliser vos jetons legacy
Utiliser votre jeton legacy ne diffère pas de l'utilisation de vos identifiants. Vous devez simplement remplacer votre nom d'utilisateur par le mot token et votre mot de passe par le jeton legacy (l'inverse fonctionne également). Par exemple, pour lancer une recherche sur l'API Graylog avec l'un de vos jetons legacy, vous pouvez procéder comme suit :
Notez que vous devez remplacer la valeur du flux dans le paramètre filter par l'identifiant Graylog de votre flux. L'identifiant Graylog se trouve dans l'URL de la page de recherche de votre flux dans Graylog. Cette URL a la forme suivante :
La valeur 5ab52dc43ce3010451deacd1 est l'identifiant Graylog de votre flux.
Pour lancer une recherche sur l'API OpenSearch, vous utilisez également les mêmes identifiants.
Cet appel lancera une recherche rapide (afin de récupérer le nombre de documents et un échantillon de ceux-ci) sur l'alias your_alias. Remplacez l'alias par celui que vous avez configuré dans votre console Logs Data Platform. Notez que ces identifiants sont utilisables à la place des identifiants de votre compte dans Grafana (ou tout autre outil prenant en charge l'authentification Basic avec OpenSearch).
L'interface web Graylog ne prend pas en charge l'authentification par jeton legacy.
Aller plus loin
- Pour bien démarrer : Démarrage rapide
- Documentation : Guides
- Créer un compte : Essayez !
- Hub communautaire : communauté d'utilisateurs