La sécurisation de votre site web WordPress est un aspect que vous ne pouvez pas ignorer si vous ne voulez pas exposer les données de vos clients et la sécurité en ligne. En outre, le maintien de la conformité aux normes et réglementations en vigueur devrait également être une priorité. En fait, le contrôle de la sécurité et la conformité vont souvent de pair, avec la même importance.

La mise en œuvre de ces deux éléments peut toutefois représenter un défi, en particulier lorsque vous avez de nombreux sites à gérer. Cependant, grâce à la multitude de points de terminaison de l’API Kinsta, vous disposez d’un accès programmatique à notre hébergement de site sécurisé, que vous pouvez automatiser davantage et avec lequel vous pouvez travailler.

Dans cet article, nous allons explorer comment vous pouvez tirer parti de l’API Kinsta pour renforcer votre sécurité WordPress et comment vous pouvez potentiellement aller plus loin que ce que le tableau de bord MyKinsta fournit.

Nous aborderons également la stratégie de conformité des données de votre site. Une fois que nous aurons exploré les capacités de l’API Kinsta, vous obtiendrez un aperçu pratique de la façon d’intégrer la surveillance de la sécurité et la conformité dans votre flux de travail WordPress.

Comprendre la surveillance continue de la sécurité et la conformité

Votre site web a une valeur immense pour certains groupes. Les utilisateurs malveillants ne voient pas vos produits et services, ils voient des données et des opportunités de gain. En 2022, SiteLock a constaté que le site moyen subissait environ 100 attaques par jour.

Il est donc essentiel de surveiller votre sécurité en permanence et de vérifier votre niveau de conformité. Les intentions malveillantes sont dynamiques, ce qui signifie que vous devez évaluer, suivre et traiter vos dispositions en matière de sécurité sur une base en constante évolution. Par exemple, le Top 10 de l’OWASP surveille les types d’attaques malveillantes les plus populaires, et cette liste change à chaque enquête.

Il existe de nombreuses autres raisons de mettre en place une surveillance continue de la sécurité :

  • Vous pouvez être proactif lorsqu’il s’agit d’identifier les menaces potentielles et d’y répondre.
  • Grâce à une surveillance régulière, la sécurité de votre site reste solide et axée sur la protection.
  • Vous êtes en mesure d’assurer une conformité cohérente et actualisée avec les normes sectorielles habituelles et les lignes directrices en matière de protection des données.
  • Au fond, vous pouvez réduire le risque de « fuite » de données de votre site et d’érosion de votre réputation.

Pour les sites WordPress, votre stratégie de surveillance et de conformité revêt une importance et des défis encore plus grands :

  • WordPress offre une sécurité inhérente, mais la plateforme a une cible dans le dos, en raison de sa part de marché.
  • Bien sûr, il y a aussi la complexité des écosystèmes de thèmes et d’extensions à surveiller.
  • Si vous gérez plusieurs sites, vous devez vous assurer qu’une stratégie de surveillance cohérente et fiable est en place.
  • Intégrer la surveillance de la sécurité de manière transparente dans les flux de développement existants

La bonne nouvelle est que vous pouvez facilement intégrer la surveillance de la sécurité dans votre flux de travail existant et la combiner avec les notifications de mise à jour de WordPress. Mieux encore, vous pouvez contrôler cela grâce à l’API de Kinsta.

Un bref aperçu de l’API Kinsta

Pour les clients de Kinsta, l’API représente le meilleur moyen d’automatiser et d’exploiter de nombreux aspects de votre serveur d’hébergement. Nous proposons de nombreux points de terminaison pour toutes sortes de tâches. Par exemple, vous pouvez gérer les sites, les utilisateurs et les dépendances telles que les thèmes et les extensions. De plus, vous pouvez récupérer les logs et accéder aux mêmes mesures d’application depuis le tableau de bord MyKinsta:

Le tableau de bord MyKinsta.
Le tableau de bord MyKinsta.

Bien sûr, l’intégration de l’API Kinsta dans votre flux de travail WordPress sera un jeu d’enfant, étant donné que nous nous concentrons sur l’hébergement WordPress. Vous découvrirez plus loin comment procéder. Nous offrons un moyen proactif et programmatique de gérer votre surveillance de la sécurité pour les facettes clés de WordPress. Cela inclut les mises à jour du site, la journalisation, et bien plus encore.

La plupart de ces éléments correspondent à ce sur quoi vous devriez vous concentrer lorsqu’il s’agit de la sécurité de WordPress. Voyons maintenant ce qu’il en est.

Les pratiques habituelles de WordPress en matière de sécurité et de conformité

A la base, WordPress est une plateforme solide et sécurisée, grâce à sa base de code mature et à sa dépendance stricte à l’égard des pratiques sécurisées. Pour le système de gestion de contenu (CMS) lui-même, vous disposez de moyens officiels pour signaler les vulnérabilités :

En fait, il y a un moyen pour les utilisateurs finaux de signaler les thèmes, aussi – un bouton bien en vue sur la page du dépôt :

Le bouton Signaler ce thème pour une page de thème sur WordPress.org
Le bouton Signaler ce thème pour une page de thème sur WordPress.org

Il est clair que WordPress est très attentif à la sécurité, et il y a quelques domaines clés sur lesquels se concentrer pour le code de base :

  • Mises à jour régulières. WordPress publie des mises à jour régulières pour son logiciel de base, qui inclut des correctifs pour résoudre les problèmes de sécurité et de performance. Il existe des moyens automatisés de mettre à jour votre noyau, vos thèmes et vos extensions à partir du tableau de bord de WordPress
  • Des contrôles d’accès stricts. WordPress est livré avec un ensemble complet de rôles d’utilisateurs qui vous permettent d’appliquer des contrôles d’accès définis à différents utilisateurs. Vous disposez également d’un outil intégré de renforcement des mots de passe et de contrôles pour la création et la gestion des commentaires.
  • Assurer la sécurité de l’hébergement. La documentation de WordPress fait souvent référence à la sécurité de l’hébergement. L’objectif est que votre hébergeur soit aussi attentif à votre sécurité que son équipe centrale l’est à l’égard du CMS.

Pour vous aider à surveiller certaines de ces facettes, vous pouvez utiliser l’écran Santé du site dans votre tableau de bord WordPress :

L'écran Santé du site dans WordPress.
L’écran Santé du site dans WordPress.

En ce qui concerne la conformité, WordPress propose un modèle de politique de confidentialité par défaut pour chaque installation. La plateforme principale encourage également l’utilisation de formulaires de divulgation des vulnérabilités. L’utilisation de l’API Kinsta permet de mettre en place un dispositif de sécurité robuste – et nous allons vous montrer comment le faire.

Comment mettre en œuvre la surveillance de la sécurité avec l’API Kinsta

Si vous souhaitez mettre en place une configuration qui implique une surveillance continue de la sécurité, une approche programmatique sera sans doute la meilleure. L’API Kinsta offre de nombreux points de terminaison différents pour vous aider dans votre démarche, bien que ce ne soit pas la seule approche (nous y reviendrons plus tard).

Nous allons vous présenter une approche typique de la surveillance de la sécurité à l’aide de l’API. Nous commencerons par récupérer vos clés API, puis nous passerons aux autres domaines.

1. Obtenir vos identifiants API

Sans vos clés API, vous ne pouvez accéder à aucun aspect de vos sites. Pour générer une nouvelle clé API, rendez-vous sur le tableau de bord MyKinsta et sur l’écran Réglages de l’entreprise > Clés API. Si c’est la première fois que vous venez ici, l’écran sera probablement vide :

L'écran Clés API dans le tableau de bord MyKinsta.
L’écran Clés API dans le tableau de bord MyKinsta.

Cliquez sur le bouton Créer une clé API et remplissez les champs pour définir une date d’expiration et un nom pour votre clé :

L'écran Créer une clé API dans le tableau de bord MyKinsta.
L’écran Créer une clé API dans le tableau de bord MyKinsta.

Une fois que vous aurez cliqué sur le bouton Générer, vous pourrez copier votre clé API. N’oubliez pas que vous ne la verrez plus jamais, alors assurez-vous de la conserver en toute sécurité :

Une clé API générée, avec la possibilité de la copier et de terminer le processus.
Une clé API générée, avec la possibilité de la copier et de terminer le processus.

Avec votre nouvelle clé API en main, vous pouvez commencer à explorer la connexion à l’API Kinsta.

2. Explorez les points de terminaison disponibles dans l’API Kinsta

Nous vous recommandons de garder la documentation de l’API à portée de main pendant que vous naviguez parmi les points de terminaison disponibles. Tous ne sont pas adaptés à la surveillance de la sécurité, mais certains vous serviront plus que d’autres :

  • sites. Utilisez-le lorsque vous avez besoin de récupérer une liste de sites associés à une entreprise. Vous pouvez obtenir des informations de base, telles que le nom, l’identifiant et l’état.
  • backups. Vous pouvez créer et restaurer des sauvegardes pour n’importe lequel de vos sites à l’aide des requêtes GET et POST. Ces sauvegardes feront partie de votre plan de reprise après sinistre et de vos réponses aux incidents de sécurité.
  • logs. Ce point de terminaison peut être utilisé pour de simples journaux d’erreurs et d’accès. Il sera l’un de vos points d’accès privilégiés pour la surveillance et le débogage.

Nous présenterons d’autres points de terminaison dans la section suivante, où vous les utiliserez pour développer votre processus.

3. Validez votre connexion et récupérer une liste de sites

Avant de toucher à une ligne de code, il est bon de planifier à l’avance afin de consolider vos objectifs. Examinez les points de terminaison disponibles, combinez-les avec ce que vous souhaitez pour votre processus de surveillance de la sécurité, puis essayez de faire correspondre le tout.

Par exemple, vous voudrez peut-être vérifier régulièrement si le noyau, les thèmes et les extensions de WordPress sont obsolètes. Le point de terminaison sites est le moyen d’y parvenir. Cependant, vous ne pouvez pas vous contenter d’accéder à un seul point de terminaison ou de faire une seule requête à la fois. C’est là que la flexibilité de l’API Kinsta peut briller.

Voici un script Python rapide pour authentifier l’accès à l’API et récupérer un site. Tout d’abord, nous définissons quelques variables de base. Notez que vous n’incluez généralement pas votre clé API et l’identifiant de votre entreprise dans votre code. Dans ce cas, nous le faisons par souci de concision et de clarté.

Une fois les variables définies, nous pouvons définir les en-têtes d’authentification et chercher à valider l’accès. Avec trois courtes fonctions, nous pouvons valider le jeton, renvoyer une liste de sites et récupérer un site spécifique :

import requests
import os


# Define the API key and company ID within the script
api_token = 'API_KEY'
company_id = 'COMPANY_ID'

# Set the base URL for the Kinsta API
base_url = 'https://api.kinsta.com/v2'

# Set the headers for authentication
headers = {
    'Authorization': f'Bearer {api_token}'
}


def validate_token():
    """Checks and authenticates an API token.""" 
    url = f'{base_url}/validate'
    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        print('API token is valid')
    else:
        print('API token is invalid')
        exit(1)


def get_sites():
    """Fetches a list of sites based on the Company ID."""
    url = f'{base_url}/sites?company={company_id}'
    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        data = response.json()
        company_data = data.get('company', {})
        sites = company_data.get('sites', [])
        return sites
    else:
        print(f'Failed to fetch sites. Status code: {response.status_code}')
        return None


def get_single_site(site_id):
    """Takes a URL template and response, checks the status code, and returns JSON data if present."""
    url = f'{base_url}/sites/{site_id}'
    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        site = response.json()
        return site
    else:
        print(f'Failed to fetch site. Status code: {response.status_code}')
        return None

Une fonction main appellera chacun de ces autres processus, en utilisant une certaine logique pour envoyer les informations sur le site dans un ensemble de variables d’environnement :

def main():
    validate_token()
    sites = get_sites()

    if sites:
        print(f'Number of sites: {len(sites)}')
        if len(sites) > 0:
            for site in sites:
                print(f'Site ID: {site["id"]}')
                print(f'Site Name: {site["name"]}')
                print(f'Site Display Name: {site["display_name"]}')
                print(f'Site Status: {site["status"]}')
                print('Site Labels:', site["site_labels"])
                print('---')


                # Store site details in environment variables
                os.environ[f'SITE_ID_{site["name"]}'] = site["id"]
                os.environ[f'SITE_NAME_{site["name"]}'] = site["name"]
                os.environ[f'SITE_DISPLAY_NAME_{site["name"]}'] = site["display_name"]
                os.environ[f'SITE_STATUS_{site["name"]}'] = site["status"]
                os.environ[f'SITE_LABELS_{site["name"]}'] = str(site["site_labels"])


            print('Site details stored in environment variables.')
        else:
            print('No sites found')
    else:
        print('Failed to fetch sites')

L’accès à vos sites étant terminé, vous pouvez envisager d’ajouter d’autres points de terminaison pour des cas d’utilisation spécifiques.

4. Commencez à combiner les points de terminaison pour créer une surveillance continue de la sécurité

Il existe de nombreuses façons d’utiliser les points de terminaison de l’API Kinsta pour une surveillance continue et automatisée. Récupérer vos journaux d’erreurs à intervalles réguliers est un excellent moyen d’être proactif en ce qui concerne la sécurité de votre site.

Nous pouvons commencer par le même processus d’authentification et de récupération du site que celui de l’étape précédente. Une fois que vous avez le site dont vous avez besoin, une fonction courte peut accéder à l’API et renvoyer les journaux d’erreurs :

def get_error_logs():
    """Fetches error logs up to 1,000 lines."""
    url = f'{base_url}/sites/environments/{company_id}/logs?file_name=error&lines=1000'
    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        logs = response.json()
        return logs
    else:
        print(f'Failed to fetch error logs. Status code: {response.status_code}')
        return None

Si vous souhaitez automatiser ce processus, vous devriez pouvoir trouver un paquetage ou une bibliothèque pour vous aider. Par exemple, Python dispose du paquetage schedule, qui exécutera une tâche à intervalles fixes. Pour mettre cela en œuvre, nous pouvons créer une autre fonction qui imprime les journaux, puis l’appeler en utilisant schedule dans main:

def fetch_and_print_logs():
    """Checks for error logs, and if present, prints them to screen."""
    logs = get_error_logs()

    if logs:
        print('Error Logs:')
        for log in logs:
            print(log)
        print('---')


# Schedule the log fetching task to run once a day at a specific time
schedule.every().day.at('09:00').do(fetch_and_print_logs)


#main.py
…

    while True:
        schedule.run_pending()
        time.sleep(1)

Bien sûr, vous pouvez extrapoler ici pour travailler avec n’importe quel point de terminaison que vous souhaitez, comme backups, par exemple. Avec un peu de travail, vous pourriez également construire un système complet pour automatiser et bloquer continuellement les adresses IP pour votre site – vous avez une grande marge de manœuvre !

Utiliser l’API de Kinsta en conjonction avec d’autres plugins WordPress

L’hébergement de Kinsta intègre la sécurité dans le tableau de bord MyKinsta et son architecture profonde. Pour cette raison, les utilisateurs ne pourront pas installer la plupart des extensions de sécurité. Pour activer le même niveau de fonctionnalité, vous utiliserez typiquement les outils de Kinsta, tels que le blocage d’IP.

Bien que l’API de Kinsta offre un moyen « brut » de fournir des points de terminaison pour la surveillance et l’automatisation de la sécurité, il est possible de l’associer à certaines extensions sélectionnées. Par exemple, bien que nous ne vous permettions pas d’activer l’enregistrement du trafic (car il entraîne des IOPS élevés), le reste de l’extension Wordfence peut s’avérer utile.

L'image d'en-tête de l'extension Wordfence sur WordPress.org
L’image d’en-tête de l’extension Wordfence sur WordPress.org

En fait, Wordfence propose deux de ses propres points de terminaison pour l’approbation des IP et l’importation des réglages. Ce dernier point peut s’avérer intéressant si vous souhaitez reproduire les « bons » réglages connus sur plusieurs sites différents. Cependant, le CLI de Wordfence offre beaucoup plus de possibilités de combinaison avec notre API.

L’utilisation conjointe des deux dépasse le cadre de cet article, mais il est concevable de créer un processus enfant à l’aide de Node.js pour exécuter des scripts Python, pour ne citer qu’un exemple.

Cela signifie que vous pouvez avoir un moyen programmatique d’exécuter et d’automatiser les fonctionnalités de Wordfence en même temps que celles de Kinsta. L’extension Sucuri Security dispose également d’une API simple qui vous permet d’effectuer une analyse du site.

Vous pouvez (bien sûr) utiliser les extensions de manière plus directe. Par exemple, WP Activity Log étend la fonctionnalité de journalisation de Kinsta. Il vous permet d’enregistrer presque toutes les actions qui se produisent sur votre site, y compris pour les extensions tierces.

L'en-tête de l'extension WP Activity Log de WordPress.org
L’en-tête de l’extension WP Activity Log de WordPress.org

Si vous souhaitez intégrer l’API de Kinsta aux extensions de votre site, vous avez généralement besoin d’un accès à l’API de l’extension. Cependant, toutes les extensions ne proposent pas cet accès, il se peut donc que vos extensions préférées soient soumises à certaines restrictions.

Maintenir les normes de conformité avec WordPress et Kinsta

En tant qu’entreprise qui met en avant ses contrôles, ses sous-processus et sa conformité, Kinsta en sait long sur le travail que cela implique. En ce qui concerne les normes de conformité, nous répondons à celles de SOC 2 Type 2, du RGPD et du CCPA.

Vue d'ensemble des références de confiance de Kinsta sur le site web.
Vue d’ensemble des références de confiance de Kinsta sur le site web.

Afin d’améliorer la confiance des utilisateurs, votre site doit également répondre à ces normes. Le RGPD a été le premier à affecter presque tous les sites. Ce règlement de l’Union européenne (UE) établit des lignes directrices sur la manière dont vous collectez, traitez et stockez les données à caractère personnel. Le CCPA est un autre texte législatif qui va dans le même sens. Pour les sites WordPress, la page de politique de confidentialité intégrée et les outils d’exportation de données peuvent vous aider, de même que la mise en place d’avis de cookies.

Si vous travaillez dans la finance, la santé ou d’autres secteurs similaires, vous devrez respecter d’autres lois, normes, lignes directrices et directives :

  • Le Health Insurance Portability and Accountability Act (HIPAA) fixe des normes pour la protection des informations sensibles relatives à la santé des patients. Les contrôles d’accès et la fonctionnalité d’authentification des utilisateurs de WordPress peuvent vous aider à cet égard, de même que la mise en œuvre du cryptage SSL pour vos sites.
  • La norme de sécurité des données de l’industrie des cartes de paiement (PCI-DSS) est un ensemble de normes de sécurité pour les sites qui traitent des transactions par carte. Les sites WordPress de commerce électronique doivent respecter les exigences de la norme PCI-DSS. Comme pour l’HIPAA, il est important que les connexions de votre site soient cryptées. L’utilisation de l’authentification à deux facteurs (2FA), de pare-feu et de passerelles de paiement tierces vous aidera également à vous conformer à la norme.

L’infrastructure de Kinsta peut constituer une base solide pour l’ensemble de votre stratégie de conformité, et l’API de Kinsta peut également s’intégrer à celle de WordPress. Vous pouvez même envisager des aspects tels que la surveillance de l’intégrité des fichiers à l’aide d’outils, de services et de plugins tiers.

Conseils optimaux pour l’utilisation de l’API Kinsta et de WordPress pour la sécurité et la conformité

Pour terminer cet article, nous allons vous donner quelques conseils généraux pour l’utilisation de l’API Kinsta et de WordPress. Lorsqu’il s’agit de la sécurité et de la conformité de votre site, il est important de maximiser l’efficacité des deux, car vous en tirerez le plus grand bénéfice.

Une approche simple consiste à utiliser le point de terminaison « authentication » pour vérifier que votre clé API est valide :

const resp = await fetch(
  `https://api.kinsta.com/v2/validate`,
  {
    method: 'GET',
    headers: {
      Authorization: 'Bearer <API_KEY>'
    }
  }
);


const data = await resp.text();
console.log(data);

En outre, vous voudrez toujours garder vos identifiants d’API confidentiels, en particulier si vous stockez votre code dans un dépot Git distant. La meilleure pratique consiste à stocker ces clés en dehors du webroot et à utiliser l’une des méthodes suivantes :

  • Les variables d’environnement devraient être une considération primordiale, et nous recommandons cette approche.
  • Les wwrappers si vous utilisez PHP.
  • Les commandes Git pour restreindre l’accès aux dépôts et aux fichiers et pour obscurcir les informations sensibles. Par exemple, git crypt, git-remote-gcrypt, ou git secret.

Cependant, outre la protection de vos clés API, il y a beaucoup d’autres choses que vous pouvez faire pour rendre l’utilisation de l’API Kinsta et de WordPress plus sûre :

  • La mise en œuvre d’une gestion des erreurs et d’une journalisation appropriées peut vous aider à identifier et à résoudre les problèmes, ce qui renforce la fiabilité et la stabilité de votre surveillance de la sécurité.
  • Utilisez le principe du moindre privilège lorsque vous attribuez des rôles et des autorisations aux utilisateurs. En bref, n’accordez aux utilisateurs que le niveau d’accès minimal dont ils ont besoin pour effectuer leurs tâches. Revoyez également ces autorisations régulièrement.

Surtout, tenez-vous au courant des pratiques de sécurité actuelles et utilisez les plus solides. Renseignez-vous également sur les vulnérabilités récentes et les correctifs logiciels qui les combattent pour vos thèmes et vos extensions. Avec une procédure de mise à jour régulière, combinée à l’automatisation de la surveillance de la sécurité et à la conformité avec l’API Kinsta, vous aurez mis en place une configuration résiliente.

Résumé

Chez Kinsta, nous sommes fiers de vous fournir un serveur d’hébergement solide, stable et sécurisé. Cependant, vous devez également veiller à la sécurité de votre site. Une surveillance continue de la sécurité de tous vos sites WordPress est essentielle.

Avec l’API Kinsta, vous disposez de nombreux moyens programmatiques pour soutenir vos objectifs, tels que l’accès aux journaux, la gestion d’une liste de blocage d’IP, et plus encore. Certaines extensions WordPress qui offrent un accès API vous permettent d’automatiser bien plus que votre serveur. L’automatisation de ces tâches de sécurité et de conformité vous permet de travailler sur d’autres domaines critiques pour votre entreprise, en sachant que votre site et ses utilisateurs sont en sécurité.

Qu’attendez-vous de la surveillance continue de la sécurité que Kinsta peut vous fournir ? Faites-le nous savoir dans la section des commentaires ci-dessous !

Jeremy Holcombe Kinsta

Content & Marketing Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems ;).