Maison >Opération et maintenance >Nginx >Comment utiliser Nginx pour implémenter un contrôle d'accès basé sur les rôles des utilisateurs

Comment utiliser Nginx pour implémenter un contrôle d'accès basé sur les rôles des utilisateurs

WBOY
WBOYoriginal
2023-08-04 14:36:171036parcourir

Comment utiliser Nginx pour implémenter un contrôle d'accès basé sur les rôles des utilisateurs

Introduction :
Dans les applications réseau modernes, le contrôle d'accès est une exigence de sécurité très importante. De nombreuses applications nécessitent un contrôle des rôles et des autorisations sur l'accès des utilisateurs afin de garantir que les différents utilisateurs ne peuvent accéder qu'au contenu pour lequel ils disposent d'une autorisation. Nginx est un serveur Web et un serveur proxy inverse hautes performances qui peuvent non seulement gérer des services de fichiers statiques, mais également implémenter un contrôle d'autorisation de base via certaines fonctionnalités. Cet article explique comment utiliser Nginx pour implémenter un contrôle d'accès basé sur les rôles des utilisateurs et fournit des exemples de code.

1. Configuration de base de Nginx
Tout d'abord, nous devons définir les informations de base et les règles de contrôle d'accès dans le fichier de configuration de Nginx. Ouvrez le fichier de configuration Nginx (généralement /etc/nginx/nginx.conf), recherchez le bloc http et ajoutez-y le contenu suivant :

http {
    ...
    # 用户角色配置文件路径
    include /etc/nginx/user_roles.conf;

    # 默认拒绝访问
    location / {
        deny all;
    }

    # 静态文件服务
    location /static/ {
        alias /path/to/static/files/;
    }

    # 动态请求代理
    location /dynamic/ {
        proxy_pass http://localhost:8000;
        # 其他proxy相关配置
    }
}

Dans la configuration ci-dessus, nous avons défini la règle de refus d'accès par défaut et configuré le fichier statique. service et proxy de requêtes dynamiques. Ensuite, nous créons un fichier user_roles.conf spécifiquement pour la configuration des rôles utilisateur. Créez le fichier dans le répertoire /etc/nginx/ et ajoutez le contenu suivant :

user john: editor;
user alice: admin;

Dans ce fichier de configuration, nous définissons deux utilisateurs john et alice, et leur. rôles correspondants. Ces rôles seront utilisés pour les décisions de contrôle d’accès.

2. Contrôle d'accès basé sur le rôle de l'utilisateur
Nginx fournit des variables et des instructions qui peuvent être utilisées pour contrôler l'accès en fonction des rôles de l'utilisateur.

  1. Utiliser des variables pour le contrôle d'accès
    Nginx fournit une variable $remote_user, qui contient le nom d'utilisateur de l'utilisateur (obtenu via l'authentification de base HTTP). Nous pouvons implémenter un contrôle d'accès basé sur les rôles des utilisateurs en jugeant la valeur de cette variable. Par exemple, nous pouvons utiliser la directive if pour implémenter les règles de contrôle d'accès suivantes :
location /admin/ {
    if ($remote_user != "alice") {
        return 403;
    }
    # 其他配置指令
}

Dans cet exemple, si le nom d'utilisateur de l'utilisateur n'est pas alice, Nginx renverra une page d'erreur 403 et refusera l'accès au contenu sous /admin / chemin.

  1. Utilisez des scripts Lua pour le contrôle d'accès
    Nginx prend également en charge l'intégration de scripts Lua pour des jugements de contrôle d'accès plus complexes. Nous pouvons écrire un script Lua pour lire le fichier user_roles.conf et effectuer un contrôle d'accès en fonction du rôle de l'utilisateur. Voici un exemple de script Lua :
location /editor/ {
    access_by_lua_block {
        local roles_file = "/etc/nginx/user_roles.conf"
        local file = io.open(roles_file, "r")
        local roles = file:read("*a")
        file:close()
        
        local current_user = ngx.var.remote_user
        local role = string.match(roles, current_user .. ": (%a+);")
        
        if role ~= "editor" then
            ngx.exit(ngx.HTTP_FORBIDDEN)
        end
    }
    # 其他配置指令
}

Dans cet exemple, nous lisons le fichier user_roles.conf et faisons correspondre les rôles de l'utilisateur actuel à l'aide d'une expression régulière. Si le rôle de l'utilisateur actuel n'est pas éditeur, Nginx renverra une page d'erreur 403 et refusera l'accès au contenu sous le chemin /editor/.

Conclusion : 
Grâce à la configuration de Nginx et à certaines fonctionnalités, nous pouvons implémenter un contrôle d'accès basé sur les rôles des utilisateurs. Cet article fournit des exemples de code de base pour référence et utilisation par les lecteurs. Bien entendu, il ne s'agit que d'une méthode de mise en œuvre de base. Dans les applications réelles, d'autres mesures de sécurité peuvent devoir être combinées, telles que des certificats SSL et des pare-feu, pour garantir la sécurité du système.

Référence :

  1. Documentation Nginx : https://nginx.org/en/docs/
  2. Documentation du module OpenResty Lua Nginx : https://github.com/openresty/lua-nginx-module

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn