【问题标题】:Ingress NGINX: Restrict access to some of my APIIngress NGINX:限制对我的一些 API 的访问
【发布时间】:2022-03-29 20:47:46
【问题描述】:

Ingress NGINX:限制对我的一些 API 的访问 大家好,

我正在学习微服务架构。我使用 Docker 和 Kubernetes。

我已经创建了一些服务,并且能够通过 Ingress 向世界公开它们。

我创建了两个前端。一个使用 Nextjs 供我的用户通过 domain.com 访问,另一个使用纯 React 管理我的应用程序可通过 manage.xxx.com 访问。

现在,我有点迷路了。我想要的是限制对我的一些 API 的访问。例如,我有一个用户服务允许我的用户通过我的应用程序注册和登录。

他们可以在 domain.com 上执行的请求示例。

- POST /api/users/signup

- POST /api/users/signin

lambda 用户无法在 domain.com 上执行但管理员可以通过 manage.domain.com 访问的请求示例。

- Get /api/users/all

我该如何构建它?感谢您的帮助!

【问题讨论】:

    标签: kubernetes kubernetes-ingress nginx-ingress


    【解决方案1】:

    Nginx 中,您可以使用特定 IP 限制访问或限制对特定文件夹的访问。

    Nginx 可以通过HTTP Basic Authentication 协议允许使用usernamepassword 进行访问。为此,您必须使用auth_basic

    启用使用HTTP Basic Authentication 协议验证用户名和密码。指定的参数用作领域。参数值可以包含变量(1.3.10、1.2.7)。特殊值 off 取消了继承自上一个配置级别的 auth_basic 指令的效果。

    Nginx 示例配置如下:

    location / {
        auth_basic           "closed site";
        auth_basic_user_file conf/htpasswd;
    }
    

    并在auth_basic_user_file 中指定详细信息。该文件看起来像文档示例中的:

    指定保存用户名和密码的文件,格式如下:

    # comment
    name1:password1
    name2:password2:comment
    name3:password3
    

    您也可以将此限制与Basic Authentication with Access Restriction by IP Address 等其他限制混合使用。

    HTTP基本认证可以有效地与IP地址的访问限制相结合。您至少可以实现两种方案:

    • 用户必须经过身份验证并拥有有效的 IP 地址
    • 用户必须经过身份验证或拥有有效的 IP 地址

    这两个例子都可以在Nginx documentation example找到。

    限制访问的其他方法是:

    ngx_http_access_module 模块允许限制对某些客户端地址的访问。

    ngx_http_auth_request_module 模块 (1.5.4+) 基于子请求的结果实现客户端授权。如果子请求返回 2xx 响应码,则允许访问。如果它返回 401 或 403,则访问被拒绝并带有相应的错误代码。子请求返回的任何其他响应代码都被视为错误。

    【讨论】:

      【解决方案2】:

      您可以使用 Nginx 入口控制器的 server sn-p 配置来完成此操作。

      将以下注释添加到您的入口资源

      nginx.ingress.kubernetes.io/server-snippet: |
            location ~* "^/service1/api/v1/data" {
                deny all;
                return 403;
              }
      

      我现在已经控制了这个 api /service1/api/v1/data,当一个请求从 ingress 到达这个 api 时,它会返回 403

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-26
        • 2015-11-12
        • 1970-01-01
        • 1970-01-01
        • 2016-07-07
        • 1970-01-01
        • 2020-12-05
        相关资源
        最近更新 更多