Les API chez Cloudflare

Aujourd'hui, nous annonçons la disponibilité générale des jetons API. C’est un moyen évolutif et plus sécurisé d'interagir avec l’API Cloudflare. Dans le cadre de notre travail d’amélioration d’Internet, Cloudflare s'efforce de simplifier la gestion de la présence du client à la périphérie. C’est en partie en veillant à ce que tous nos produits et services soient configurables par API. Les clients, depuis nos partenaires aux entreprises, en passant par les développeurs, souhaitent automatiser la gestion de Cloudflare. Parfois, cela se fait directement via notre API , à d’autres moments via un logiciel open source que nous aidons à maintenir comme notre fournisseur Terraform ou la bibliothèque Cloudflare-Go. Il est essentiel que les clients qui automatisent la gestion de Cloudflare puissent conserver dans toute la mesure du possible la sécurité de leurs services Cloudflare.

Privilège minimum et pourquoi cela est important

Il est difficile de sécuriser des systèmes logiciels. Limiter ce qu'un logiciel peut faire est une bonne défense pour empêcher les erreurs ou les actions malveillantes d'avoir un impact plus important que leur impact potentiel. Le principe du privilège minimum aide à déterminer le degré d'accès qu'un système donné devra avoir pour effectuer des actions. Formulé à l'origine par Jérôme Saltzer, « Chaque programme et chaque utilisateur du système disposant de privilèges doivent opérer en utilisant le minimum de privilège nécessaire pour effectuer leur travail. » Dans le cas de Cloudflare, de nombreux clients ont différents domaines de routage du trafic en s’appuyant sur de nombreux services différents. Si un acteur malveillant obtient un accès non autorisé à un système, il peut utiliser tout accès dont ce système dispose pour causer d'autres dommages ou voler des informations supplémentaires.

Voyons comment les capacités des jetons API s'inscrivent dans le principe du privilège minimum.

Concernant les jetons API

Les jetons API offrent trois possibilités principales :

  1. Portée des jetons API par ressource Cloudflare
  2. Portée des jetons API par permission
  3. La capacité de fournir plusieurs jetons API

Détaillons chacune de ces capacités.

Attribuer les jetons API par ressource Cloudflare

Cloudflare sépare la configuration de service par zone, généralement équivalente à un domaine. En outre, certains clients ont plusieurs comptes, dont chacun possède de nombreuses zones. Il est important que, lorsqu’un accès API est accordé à un service, celui ci ne soit que pour les ressources et les zones de comptes pertinentes pour le travail à accomplir. La portée des jetons API peut être étendue pour couvrir uniquement des comptes spécifiques et des zones particulières. Par exemple, si vous avez une zone de préproduction et une zone de production, alors un jeton API peut être limité pour ne pouvoir affecter que la zone de préproduction et ne pas avoir accès à la zone de production.

Étendue des jetons API par permission

La possibilité de définir l’étendue d’un jeton API à une zone spécifique est parfaite, mais dans une zone il existe de nombreux services différents qui peuvent être configurés : les règles de pare-feu, les règles de page et les équilibreurs de charge, pour n'en nommer que quelques-uns. Si un client dispose d'un service qui ne devrait pouvoir créer de nouvelles règles de pare-feu qu'en réponse à des modèles de trafic, le fait d'autoriser également ce service à modifier les enregistrements DNS constitue également une violation du privilège minimum. Les jetons API vous permettent de définir l’étendue de chaque jeton à une autorisation spécifique. Plusieurs autorisations peuvent être combinées pour créer des jetons personnalisés pour répondre à des cas d'utilisation spécifiques.

Jetons API multiples

Si vous utilisez Cloudflare pour protéger et accélérer plusieurs services, il se peut qu'il y ait des changements d’API sur Cloudflare à partir de plusieurs emplacements : différents serveurs, VM, conteneurs ou Workers. La création d'un jeton API attribué à un service signifie que chaque service est isolé des changements apportés par un autre. Si un jeton API fuit ou doit être introduit, il n'y aura aucun impact sur les jetons API des autres services. En outre, les capacités mentionnées précédemment signifient que chaque service peut être étendu aux actions et ressources strictement nécessaires. Cela permet aux clients de mieux mettre en pratique le principe de privilège minimum pour accéder à Cloudflare par l’API.

Maintenant, nous allons voir comment créer un jeton API et l'utiliser.

Utilisation des jetons API

Pour créer votre premier jeton API, allez dans la section ‘API Tokens’ (Jetons API) de votre profil utilisateur que vous trouverez ici : dash.cloudflare.com/profile/api-tokens

1. Dans cette page, vous trouverez à la fois une liste de tous vos jetons API en plus de votre clé Global API et de votre clé Origin CA.

Comment commencer avec les jetons API - Créer un jeton

Pour créer votre premier jeton API, sélectionnez « Create Token » (Créer un jeton).


2. Sur l'écran de création, il y a deux façons de créer votre jeton. Vous pouvez le créer à partir de rien, grâce à l'option « Custom », ou vous pouvez commencer avec un modèle prédéfini en sélectionnant « Start with a template » (Démarrer avec un modèle).

Sélection du modèle de jeton API

Dans ce cas, nous utiliserons le modèle « Edit zone DNS » (Modifier la zone DNS) pour créer un jeton API qui peut modifier les enregistrements DNS d'une seule zone.


3. Une fois le modèle sélectionné, nous devons choisir une zone pour que le jeton API soit adapté. Notez que l'autorisation de modification DNS était déjà présélectionnée.

Spécifiez la zone pour laquelle le jeton sera en mesure de contrôler le DNS

Dans ce cas, « garrettgalow.com » est sélectionnée comme zone Cloudflare pour laquelle le jeton API pourra modifier les enregistrements DNS.


4. Une fois que je sélectionne « Continuer vers le résumé », j’ai la possibilité de revoir ma sélection. Dans ce cas, les ressources et les autorisations sont assez simples. Mais cela vous permet de vous assurer que vous octroyez exactement au jeton API le niveau approprié de privilège avant de le créer.

Résumé du jeton - confirmation

5. Une fois créé, le jeton API est présenté. Cet écran est la seule fois où la clé secrète vous sera présentée, alors assurez-vous de la mettre en lieu sûr ! Toute personne connaissant cette clé secrète peut effectuer les actions autorisées sur les ressources spécifiées. Donc, protégez-la comme un mot de passe. Dans la copie d'écran ci-dessous, j'ai mis la clé secrète dans une boîte noire pour des raisons évidentes. S'il vous arrive de perdre la clé secrète, vous pourrez toujours la régénérer à partir de la table de jetons API, afin que vous n'ayez pas à configurer à nouveau toutes les autorisations.

Écran de fin de création de jeton avec la clé secrète du jeton

En plus de la clé secrète proprement dite, cet écran fournit une requête curl d’exemple qui peut être utilisée pour vérifier que le jeton a bien été créé. Il fournit également un exemple de la façon dont le jeton doit être utilisé pour toutes les requêtes HTTP directes. Avec les jetons API, nous suivons maintenant la norme RFC Autorisation Bearer. En appelant cette API, nous voyons une réponse positive nous indiquant que le jeton est valide et actif :

~$ curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
>      -H "Authorization: Bearer vh9awGupxxxxxxxxxxxxxxxxxxx" \
>      -H "Content-Type:application/json" | jq

{
  "result": {
    "id": "ad599f2b67cdccf24a160f5dcd7bc57b",
    "status": "active"
  },
  "success": true,
  "errors": [],
  "messages": [
    {
      "code": 10000,
      "message": "This API Token is valid and active",
      "type": null
    }
  ]
}

Que va-t-il se passer ensuite

Pour tous ceux qui utilisent l’API Cloudflare, nous vous recommandons, à l’avenir, de passer à l'utilisation de jetons API au lieu du système précédent les clés API. Avec cette annonce, notrefournisseur Terraform, la bibliothèque Cloudflare-Go et le plug-in WordPress sont tous mis à jour pour la compatibilité avec les jetons API. D'autres bibliothèques recevront bientôt des mises à jour. Les jetons API et clés API seront pris en charge pour le moment pour que les clients puissent migrer en toute sécurité. Nous avons d’autres capacités prévues pour les jetons API, afin de mieux protéger comment et quand ces jetons sont utilisés. Alors, restez à l'écoute pour les annonces futures !

Dites-nous ce que vous pensez et ce que vous aimeriez voir ensuite en ce qui concerne la sécurité de l'API sur la Communauté Cloudflare.