ホームページ > 運用・保守 > Nginx > Nginx を使用してユーザーの役割ベースのアクセス制御を実装する方法

Nginx を使用してユーザーの役割ベースのアクセス制御を実装する方法

WBOY
リリース: 2023-08-04 14:36:17
オリジナル
1032 人が閲覧しました

Nginx を使用してユーザー ロールベースのアクセス制御を実装する方法

はじめに:
最新のネットワーク アプリケーションでは、アクセス制御は非常に重要なセキュリティ要件です。多くのアプリケーションでは、さまざまなユーザーが権限を持つコンテンツのみにアクセスできるようにするために、ユーザー アクセスに対する役割と権限の制御が必要です。 Nginx は、静的ファイル サービスを処理できるだけでなく、いくつかの機能を通じて基本的なアクセス許可制御を実装できる高性能 Web サーバーおよびリバース プロキシ サーバーです。この記事では、Nginx を使用してユーザー ロールベースのアクセス制御を実装する方法を紹介し、コード例を示します。

1. Nginx の基本設定
まず、Nginx 設定ファイルに基本情報とアクセス制御ルールを設定する必要があります。 Nginx 構成ファイル (通常は /etc/nginx/nginx.conf) を開き、http ブロックを見つけて、その中に次の内容を追加します。

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相关配置
    }
}
ログイン後にコピー

上記の構成では、デフォルトのアクセス拒否ルールを設定します。静的ファイル サービスと動的リクエスト プロキシがそれぞれ構成されます。次に、ユーザー ロール設定専用のファイル user_roles.conf を作成します。このファイルを /etc/nginx/ ディレクトリに作成し、次の内容を追加します:

user john: editor;
user alice: admin;
ログイン後にコピー

この設定ファイルでは、2 人のユーザー、john を定義します。およびアリスと、それらに対応する役割が特定されます。これらの役割は、アクセス制御の決定に使用されます。

2. ユーザー ロールに基づいたアクセス制御
Nginx は、ユーザー ロールに基づいてアクセスを制御するために使用できる変数と命令をいくつか提供します。

  1. アクセス制御に変数を使用する
    Nginx は、ユーザーのユーザー名 (HTTP 基本認証を通じて取得) を含む $remote_user 変数を提供します。この変数の値を判断することで、ユーザーの役割に基づいたアクセス制御を実装できます。たとえば、if ディレクティブを使用して次のアクセス制御ルールを実装できます。
location /admin/ {
    if ($remote_user != "alice") {
        return 403;
    }
    # 其他配置指令
}
ログイン後にコピー

この例では、ユーザーのユーザー名が alice でない場合、Nginx は 403 エラー ページを返し、へのアクセスを拒否します。以下の /admin/ パスの内容。

  1. アクセス制御に Lua スクリプトを使用する
    Nginx は、より複雑なアクセス制御の判断のために Lua スクリプトの埋め込みもサポートしています。 Lua スクリプトを作成して user_roles.conf ファイルを読み取り、ユーザーのロールに基づいてアクセス制御を実行できます。以下は 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
    }
    # 其他配置指令
}
ログイン後にコピー

この例では、user_roles.conf ファイルを読み取り、正規表現を使用して現在のユーザーのロールと一致させます。現在のユーザーのロールが編集者ではない場合、Nginx は 403 エラー ページを返し、/editor/ パス下のコンテンツへのアクセスを拒否します。

結論:
Nginx の構成といくつかの機能を通じて、ユーザーの役割に基づいたアクセス制御を実装できます。この記事では、読者が参照および使用できるように、基本的なコード例を示します。もちろん、これは基本的な実装方法であり、実際のアプリケーションでは、システムのセキュリティを確保するために、SSL 証明書やファイアウォールなどの他のセキュリティ対策を組み合わせる必要がある場合があります。

参考:

  1. Nginx ドキュメント: https://nginx.org/en/docs/
  2. OpenResty Lua Nginx モジュール ドキュメント: https://github 。 com/openresty/lua-nginx-module

以上がNginx を使用してユーザーの役割ベースのアクセス制御を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート