使用Nginx和HTTP Basic Auth为Flink Web UI添加登录验证

Flink安全加固:5分钟搞定Nginx密码认证(附htpasswd生成教程) 本文详细介绍了如何通过Nginx为Flink Standalone集群管理界面快速添加基础身份认证,以解决其默认无访问控制的安全风险。核心步骤包括使用htpasswd工具生成加密密码文件,并配置Nginx反向代理与基础认证模块,从而在不修改Flink源码的情况下,为Web UI构筑一道基础安全防线。 阅读详情

1. 为什么你的Flink Web UI需要一把“锁”?

如果你在公司内部部署过Apache Flink,尤其是Standalone模式,大概率会遇到一个让人心里不踏实的情况:打开浏览器,输入服务器IP和8081端口,Flink那个功能强大的Web UI就直接呈现在眼前了。没有登录框,没有密码验证,谁知道了地址谁就能看,甚至能操作。这感觉就像把自家大门的钥匙插在锁上,还贴了张“欢迎光临”的纸条。

我刚开始用Flink做实时数据处理项目时,就踩过这个坑。当时图省事,直接在测试服务器上起了个Standalone集群,Web UI就裸奔在那里。结果有一天,同事无意间问起:“你那个Flink页面上跑的任务数据,好像谁都能改?”我心里一惊,赶紧去查,才发现问题比想象中严重。Web UI不仅能看所有运行中的Job、检查点状态、TaskManager日志,还能直接取消作业、触发Savepoint。如果被无关人员甚至别有用心的人访问,轻则导致作业异常中断,重则可能泄露敏感的业务数据处理逻辑。从那一刻起,我就决定,必须给这个“管理后台”加上一道最起码的安全门。

那么,怎么加这道门呢?最直接的想法可能是去修改Flink本身的源码,给它集成一套认证授权模块。但这对于大多数团队来说,成本太高,也不够灵活。另一种更优雅、更通用的做法,是借助我们已有的“守门员”——Nginx。通过Nginx反向代理Flink的Web UI,并在Nginx这一层集成HTTP Basic Authentication(基本认证),我们就能用最小的改动,实现登录验证的需求。这套组合拳的好处非常明显:不改动Flink本身,配置简单,利用成熟稳定的组件,并且能与现有的运维体系无缝集成。接下来,我就手把手带你走一遍这个加固过程,从原理到实操,把每个细节都讲透。

2. 动手前的准备:理解核心组件与原理

在开始敲命令之前,我们花几分钟把核心的“演员”和“剧本”搞清楚,这样后面配置起来心里才有底,出了问题也知道往哪儿排查。

第一个关键角色:Nginx。 你可以把它想象成一个非常智能的“前台接待”或者“流量调度员”。原本用户直接访问Flink的8081端口,现在我们把Nginx放在前面,让用户访问Nginx的某个端口(比如8090)。Nginx收到请求后,会先进行一些处理(比如我们要求的登录验证),验证通过后,它再把请求“转发”给后头真正的Flink服务(8081端口),并把Flink的响应原样返回给用户。这个过程就叫“反向代理”。对我们来说,Flink完全感知不到Nginx的存在,它还是在8081端口默默工作,但外界访问它的路径变了,并且多了一道Nginx设立的安检。

第二个关键机制:HTTP Basic Auth。 这是一种非常基础但有效的Web认证方式。当Nginx发现某个请求访问受保护的路径时,它会立即返回一个HTTP 401状态码,并在响应头里带上WWW-Authenticate: Basic realm="Restricted Access"。你的浏览器看到这个,就会弹出一个经典的、自带的小登录框,让你输入用户名和密码。你输入的信息,会被浏览器用Base64编码后,放在后续请求的Authorization头部里发给Nginx。Nginx则拿着你输入的用户名密码,去和一个提前准备好的密码文件比对,匹配上了就放行,匹配不上就再次返回401。

第三个工具:htpasswd。 这个工具来自Apache的httpd工具包,专门用来生成和管理HTTP Basic Auth所需的密码文件。它会将用户名和密码(经过加密处理)存储在一个文本文件里,一行一个用户。Nginx的auth_basic_user_file指令就是指定这个文件路径的。

把它们串起来,整个流程就清晰了:用户访问 http://your-server:8090/flink → Nginx在8090端口监听,发现请求路径是/flink → Nginx检查该路径配置了auth_basic,于是要求登录 → 用户输入用户名密码 → Nginx读取htpasswd密码文件进行验证 → 验证通过,Nginx将请求代理到 http://your-server:8081 → Flink处理请求并返回结果 → Nginx将结果返回给用户。

理解了这套流程,下面的操作就变成了“按图索骥”。我们首先需要准备好密码文件这个“花名册”。

3. 第一步:创建用户密码的“花名册”

要给Flink加锁,我们得先有一份合法的“钥匙”清单。这份清单就是一个名为htpasswd的密码文件。生成它,我们需要一个叫htpasswd的小工具,它通常包含在Apache HTTP Server(httpd)的软件包里。别担心,我们不需要安装和运行完整的Apache服务器,只需要这个工具。

在CentOS、RHEL、Fedora这类使用yum包管理器的系统上,安装命令非常简单:

sudo yum -y install httpd-tools

在Ubuntu、Debian等使用apt的系统上,命令是:

sudo apt-get update
sudo apt-get install apache2-utils

安装完成后,我们就可以用htpasswd命令来创建密码文件了。这里有个非常重要的最佳实践:不要把这个密码文件放在Web可访问的目录下(比如/usr/share/nginx/html),也不要放在nginx的配置目录里。最好单独创建一个目录来存放,比如/etc/nginx/conf.d/secure/。

让我们来创建目录和第一个用户:

# 创建用于存放安全相关文件的目录
sudo mkdir -p /etc/nginx/conf.d/secure/

# 使用htpasswd命令创建密码文件并添加用户‘flink-admin’,密码为‘YourStrongPassword123!’
# -c 参数表示创建新文件,如果文件已存在则会覆盖!所以第一次创建时用-c,后续添加用户时绝对不要再用-c。
sudo htpasswd -bc /etc/nginx/conf.d/secure/htpasswd flink-admin YourStrongPassword123!

执行上面这条命令,/etc/nginx/conf.d/secure/htpasswd文件就被创建了,里面包含了用户flink-admin和加密后的密码。现在,我们来解读一下命令参数:

  • -b:允许在命令行中直接输入密码,而不是交互式提示输入。这在写脚本时很有用,但注意密码会留在命令行历史中。在生产环境,更安全的方式是不用-b,让工具交互式提示你输入密码。
  • -c:创建新的密码文件。这是最需要小心的地方! 如果你要往已有的密码文件里添加第二个用户,比如再添加一个运维同事的账号,命令应该是:
# 注意!这里没有 -c 参数!
sudo htpasswd -b /etc/nginx/conf.d/secure/htpasswd ops-user AnotherSecurePassword456!

如果不小心在添加用户时又加了-c,那么之前创建的所有用户都会被清空,文件里只剩下新添加的这个。我就在这栽过跟头,半夜里把自己锁在外面,不得不重新配置。

密码文件的内容看起来大概是这样的:

flink-admin:$apr1$5Z8zW0uB$XcTydnzL7sH5lGfF9gqYp0
ops-user:$apr1$kE8dH1jM$aL9Py/qNvz1eF.OoOeWpB1

每一行是一个用户,冒号前面是用户名,后面是加密后的密码字符串。默认情况下,htpasswd使用Apache自己的MD5加密算法($apr1$),这比明文存储好,但安全性不如bcrypt或SHA-512。如果你的系统支持,可以考虑使用-m参数(MD5,兼容性好)或-B参数(bcrypt,更安全,但计算更慢)。例如:

sudo htpasswd -bB /etc/nginx/conf.d/secure/htpasswd secure-user SuperStrongPass!

好了,“花名册”已经准备妥当。接下来,我们要去配置那位“前台接待”Nginx,告诉它:当有人想见Flink时,先查查这个花名册。

4. 第二步:配置Nginx作为安全代理

现在进入核心环节:配置Nginx。我们的目标是在Nginx的配置中新增一个server块,专门用来处理对Flink Web UI的访问,并在这个块里集成Basic Auth和反向代理功能。

首先,找到你的Nginx主配置文件,通常位于/etc/nginx/nginx.conf。不过,更推荐的做法是在/etc/nginx/conf.d/目录下创建一个独立的配置文件,比如flink-auth.conf。这样做的好处是模块化,管理起来清晰,不会把主配置文件搞乱。

用你喜欢的文本编辑器(如vim或nano)创建这个文件:

sudo vim /etc/nginx/conf.d/flink-auth.conf

然后,将以下配置内容粘贴进去。请务必根据你的实际环境修改其中的IP地址、端口和路径:

server {
    # 监听端口。用户将通过这个端口访问受保护的Flink UI。
    listen 8090;
    # 服务器名称,可以是IP或域名。这里用服务器IP。
    server_name 192.168.1.100;

    # 核心配置:对 /flink 路径下的所有请求进行代理和认证
    location /flink {
        # 1. 启用基本认证,并设置提示信息。这个字符串会显示在浏览器的登录框上。
        auth_basic "Flink Admin Console - Restricted Access";
        # 2. 指定密码文件的绝对路径。就是上一步我们创建的那个文件。
        auth_basic_user_file /etc/nginx/conf.d/secure/htpasswd;

        # 3. 反向代理配置:将请求转发给后端的Flink服务
        proxy_pass http://192.168.1.100:8081;

        # 4. 以下是一些非常重要的代理头设置,确保Flink UI能正常工作
        # 将客户端的Host头信息传递给后端Flink,这对于一些基于Host的路由判断很重要
        proxy_set_header Host $host:$server_port;
        # 传递客户端的真实IP,否则Flink日志里看到的访问者IP都是Nginx服务器的IP(127.0.0.1)
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 告诉后端这是通过HTTPS过来的请求(即使Nginx本身是HTTP,如果后面有需要也可以设置)
        proxy_set_header X-Forwarded-Proto $scheme;
        # 有些Web应用需要这个头来正确构建URL
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
    }

    # 可选但推荐:添加一个根路径的访问提示或跳转
    location / {
        return 200 'Flink Web UI is protected. Please access via /flink path.\n';
        add_header Content-Type text/plain;
    }
}

让我解释一下这个配置里几个容易出错的点:

  1. proxy_pass指令的写法:我这里的写法是http://192.168.1.100:8081;,注意结尾没有斜杠/。这种写法意味着,当用户访问http://192.168.1.100:8090/flink/overview时,Nginx会将请求转发到http://192.168.1.100:8081/flink/overview。路径中的/flink会被原样传递给后端。这是一种常见的做法。另一种写法是http://192.168.1.100:8081/;(结尾有斜杠)。这种写法会移除location匹配的部分(即/flink),然后将剩余部分附加上去。例如,访问/flink/overview会被转发到http://192.168.1.100:8081/overview。Flink的Web UI默认是挂在根路径/下的,所以如果你的location是/flink,并且希望访问/flink时能看到Flink首页,那么用不带斜杠的proxy_pass更合适,这样转发路径是/flink,Flink可能无法正确处理。实际上,更常见的做法是将location设置为/,然后proxy_pass到Flink的8081端口根目录。但这里我们为了路径清晰,特意加了一层/flink,所以需要确保Flink能处理这个上下文路径,或者我们通过其他方式重写URL。为了简化,本例假设我们就是希望通过/flink这个路径来访问。如果你发现配置后页面CSS/JS加载不了或接口404,多半是proxy_pass和路径处理的问题。

  2. auth_basic_user_file路径:必须使用绝对路径。相对路径在此处不起作用。

  3. 代理头(Proxy Headers):proxy_set_header那几行不是摆设。特别是Host和X-Forwarded-For,对于保证应用行为正常和审计日志准确至关重要。没有X-Forwarded-For,你在Flink日志里就看不到真正的访问者IP。

配置保存后,先别急着重启Nginx。我们需要做一个至关重要的事情:语法检查。Nginx配置语法很严格,一个多余的分号或括号缺失都会导致服务启动失败。

sudo nginx -t

如果看到输出是 nginx: configuration file /etc/nginx/nginx.conf test is successful,恭喜你,语法正确。如果报错,请根据错误信息仔细检查配置文件,特别是分号、括号和文件路径。

5. 第三步:重启Nginx与验证配置

语法检查通过后,就可以让Nginx重新加载配置了。如果Nginx尚未运行,你需要启动它;如果已经在运行,则重新加载配置即可,这样能避免服务中断。

# 如果Nginx未运行
sudo systemctl start nginx

# 如果Nginx已运行,重新加载配置(平滑重启,不会断开现有连接)
sudo systemctl reload nginx

# 或者使用Nginx自带的命令
sudo nginx -s reload

重启之后,激动人心的验证时刻就到了。打开你的浏览器,访问你配置的地址:http://你的服务器IP:8090/flink。

这时,你应该会看到浏览器弹出一个登录框,标题或提示信息就是你配置的"Flink Admin Console - Restricted Access"。输入你在第三步创建的用户名(如flink-admin)和密码。

登录成功后,你应该能正常看到Flink的Web UI界面。 恭喜你,基础防护已经生效!

但是,工作还没完。作为一个负责任的工程师,我们还需要进行一些深入测试和排查,确保这个“锁”既安全又可靠。

6. 第四步:深入测试与常见问题排坑

配置生效只是第一步,我们得确保它在各种情况下都表现正常。下面是我总结的几个必须检查的点和常见坑位。

测试1:密码错误是否被拒绝? 关闭浏览器再重新打开,或者使用浏览器的无痕模式,再次访问http://IP:8090/flink。输入错误的密码,应该会看到登录框再次弹出(或者页面显示401未授权)。这证明认证机制在正常工作。

测试2:Flink UI的所有功能是否正常? 登录后,不要只看首页。点开“Running Jobs”、“Completed Jobs”,看看作业列表能否正常加载。尝试查看某个作业的详情页面、检查点历史,或者打开TaskManager的Stdout日志。核心是要测试那些通过AJAX动态加载数据的接口是否都能在认证通过后正常访问。因为Basic Auth是一次性验证,浏览器会在会话期间自动在请求头中携带凭证,所以通常不会有什么问题。

测试3:直接访问原始Flink端口是否被阻断? 这是一个重要的安全确认。在服务器本地或从另一个网络位置,尝试直接访问Flink的原始地址:http://服务器IP:8081。它应该仍然可以访问! 因为我们只是在Nginx层面加了锁,并没有修改Flink本身的配置或防火墙规则。这意味着你的安全加固存在一个“后门”。最佳实践是,配置服务器的防火墙(如firewalld或iptables),只允许本地(或信任的跳板机)访问8081端口,而将8090端口开放给需要访问的用户。 例如,使用firewalld:

# 假设你的内部管理网段是 192.168.1.0/24
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="8081" protocol="tcp" accept'
# 开放8090端口给所有人(或指定IP段)
sudo firewall-cmd --permanent --add-port=8090/tcp
sudo firewall-cmd --reload

常见问题排坑:

  • 问题:登录成功后,页面样式丢失(CSS/JS加载不了),或者点击页面内链接出现404。

    • 原因:这几乎100%是proxy_pass和Web应用静态资源路径不匹配导致的。Flink UI的前端资源可能使用绝对路径(如/static/style.css),但你的访问路径是/flink,导致浏览器去请求/static/style.css,而这个请求没有被Nginx正确代理到Flink。

    • 解决方案:有两种思路。

      1. 修改Nginx配置,捕获更多路径。除了/flink,将可能用到的静态资源路径也做代理。但这比较麻烦,因为Flink的路径可能比较多。
      2. 更推荐的方法:简化配置,直接代理根路径。这是最稳妥的方式。将location改为/,proxy_pass直接指向Flink的根目录。这样访问http://IP:8090/就是Flink UI,路径完全一致。
      server {
          listen 8090;
          server_name 192.168.1.100;
          # 直接保护根路径
          location / {
              auth_basic "Flink Admin Console";
              auth_basic_user_file /etc/nginx/conf.d/secure/htpasswd;
              proxy_pass http://192.168.1.100:8081; # 注意这里结尾也没有斜杠
              # ... 代理头设置保持不变
          }
      }
      

      这样配置后,用户访问http://IP:8090即可,路径问题彻底解决。

  • 问题:Nginx报错 open() "/etc/nginx/conf.d/secure/htpasswd" failed (13: Permission denied)

    • 原因:Nginx工作进程(通常是nginx用户)没有读取密码文件的权限。
    • 解决:检查密码文件权限,确保Nginx用户可读。
      sudo chmod 644 /etc/nginx/conf.d/secure/htpasswd
      sudo chown root:nginx /etc/nginx/conf.d/secure/htpasswd # 确保nginx组有权限
      
  • 问题:想用域名访问,而不是IP。

    • 解决:将配置中的server_name 192.168.1.100;改为你的域名,例如server_name flink-internal.your-company.com;。同时,确保DNS解析或本地hosts文件将该域名指向你的服务器IP。

7. 进阶思考:这种方案够安全吗?还能怎么加强?

给Flink UI加上Basic Auth,就像给门装了一把普通的挂锁,能防君子,但面对专业的“撬锁匠”就显得不够看了。HTTP Basic Auth有几个天生的弱点:

  1. 密码以Base64编码传输,而非加密。这意味着如果在不安全的HTTP环境下使用,密码可能被网络嗅探工具截获。虽然Base64不是明文,但解码起来轻而易举。
  2. 认证凭证(用户名:密码)由浏览器缓存,并在该浏览器会话期间,自动附加到每一个发往该域名的请求头中。如果用户访问了同一域名下的其他恶意网站,可能存在凭证被滥用的风险(尽管有同源策略保护,但并非绝对)。
  3. 功能单一:只有简单的“用户名-密码”验证,没有复杂的角色权限管理(RBAC)、没有双因素认证(2FA)、没有登录日志审计。

所以,对于生产环境,尤其是对安全要求较高的场景,我建议在Basic Auth的基础上,考虑以下加固措施:

  • 强制使用HTTPS(SSL/TLS):这是最重要的一步。通过为Nginx配置SSL证书,将HTTP升级为HTTPS,可以加密整个通信过程,包括Basic Auth的凭证,彻底解决网络嗅探问题。你可以使用Let‘s Encrypt申请免费证书,或者使用公司内部的私有CA证书。
  • 结合IP白名单:在Nginx配置中,可以添加allow和deny指令,只允许特定的公司内网IP段访问/flink路径,从网络层再加一道过滤。
  • 使用更强大的认证网关:如果公司有统一的单点登录(SSO)系统(如Keycloak, OAuth2, LDAP),可以考虑使用如oauth2-proxy或Authelia这样的开源反向代理认证网关。它们可以替代Nginx的Basic Auth模块,提供基于OAuth2、OpenID Connect等现代协议的认证,并能与公司的用户目录集成。
  • 定期轮换密码:将密码文件的维护纳入运维流程,定期更新密码。

说到底,技术方案没有银弹。用Nginx和HTTP Basic Auth为Flink添加登录验证,是一个简单、快速、有效的入门级安全方案。它能立刻消除服务裸奔的风险,为你去规划和实施更完善的安全体系争取了时间。在我经历过的多个项目中,这套组合拳往往是安全加固的第一步,也是最立竿见影的一步。先把门关上,再慢慢考虑换更高级的智能门锁、安装监控摄像头,这才是稳健的运维安全之道。

Nginx代理Flink的WEB页面 在项目交付的过程中我们搭建的平台经过客户的漏洞扫描时出现了关于flink未授权访问登录问题。我们的flink是在k8s中部署的以service的nodeport方式发布服务:`解决问题的方法有两种: 1、关闭nodeport发布,改为cluserIP模式使集群外部服务访问不了,通过Nginx代理flink的web页面进行加密访问。 2、删除flink访问首页的html相关前端静态资源页面,通过flink的jobid访问查看job运行状况,但是我们现场flink的job有几百个这样很不方便,所以采用第一种方法 阅读详情

相关推荐

Apache Flink Web UI未授权JAR上传漏洞深度剖析与加固实战

在实时计算与大数据处理领域,Apache Flink作为核心的流处理框架,其安全配置直接关系到企业数据资产的安全。框架的Web UI提供了便捷的作业管理接口,但若缺乏严格的访问控制与文件校验机制,攻击者可能通过未授权的JAR文件上传与执行,获取服务器权限,形成严重的安全漏洞。此类漏洞的利用通常始于对开放端口的扫描,通过制作包含恶意代码的JAR包,利用上传接口的缺陷实现远程代码执行(RCE),危害等级极高。其技术价值在于警示我们,默认配置下的便利性往往伴随着巨大的安全风险,尤其是在大数据平台这类处理敏感数据的

400

flinkdashboard未授权

访问 http://172.16.150.xx:8084。然后目录在/usr/local/nginx。flinkwebui 增加账号密码。添加配置完成以后,重启nginx,修改flink.conf。配置nginx.conf。

someInNeed的博客 2511

Alchemystar:轻量级YAML驱动的ETL与元数据治理一体化工具

在数据工程领域,ETL流程编排与元数据治理长期面临工具链割裂、运维复杂度高、中小团队落地难等共性挑战。其核心原理在于将任务调度、血缘追踪、策略执行统一于声明式配置与嵌入式架构,通过YAML优先设计降低学习与协作门槛,借助SQLite+Go单体实现资源极简与低延迟响应。技术价值体现在显著压缩部署成本(单机2核4G即可承载全栈)、提升元数据可审计性(GitOps原生支持)及强化安全合规能力(字段级PII标记与动态脱敏)。典型应用场景包括SaaS企业T+1报表流水线、本地化数据治理闭环建设、DBA主导的SQL-c

世范水晶 508

使用Nginx和HTTP Basic Auth为Flink Web UI添加密码保护

本文详细介绍了如何为Apache Flink Web UI添加基础安全防护。针对Flink默认Web UI无身份验证的安全风险,提供了使用Nginx反向代理结合HTTP Basic Authentication的解决方案。通过创建密码文件、配置Nginx代理及设置认证规则,可快速实现访问控制,有效防止未授权访问,提升内网安全水位。

kappa的博客 382

n8n 自托管工作流自动化:可审计、可调试的企业级实践

工作流自动化是现代业务系统实现跨平台集成与实时响应的核心能力,其本质是将离散的API调用、数据转换与条件分支封装为可复用、可追踪的执行单元。n8n 以节点式编排和 JSON Schema 驱动为技术底座,提供比 Zapier/Make 更强的可观测性与自定义深度,尤其适合对数据主权、低延迟和调试透明度有硬性要求的场景。它支持 Webhook 原生验签、逐节点日志追溯、子工作流单元测试等工程化特性,使自动化从‘能跑通’升级为‘敢托付’。本文聚焦中小团队如何基于 n8n 构建高可用、可灰度、易运维的订单履约自动

weixin_30693683的博客 368

Airflow不是脚本调度器,而是工作流治理框架

Apache Airflow 本质是一个基于 Python 的工作流生命周期治理框架,其核心在于将任务依赖、失败归因、资源隔离等隐性运维逻辑显式化、可版本化、可追踪。它并非简单的定时任务工具,而是通过 DAG 建模业务契约(时间、数据、资源三重约束),驱动可观测、可审计、可协同的自动化。技术价值体现在故障可定位、变更可灰度、SLA 可承诺;典型应用于金融批处理、电商实时同步、政务数据治理等强可靠性场景。本文聚焦真实落地中的元配置调优、Scheduler 状态机原理与 DAG 设计反模式,直击‘DAG 跑不稳

congji3817的博客 403

Flink安全加固:5分钟搞定Nginx+HTTP Basic Auth密码保护(附详细配置)

本文针对Flink Standalone模式Web UI默认无认证的安全隐患,提供了一套基于Nginx反向代理与HTTP Basic Auth的快速加固方案。通过详细的配置步骤,指导用户在5-10分钟内为Flink管理界面添加登录密码保护,实现非侵入式的访问控制,有效提升内网部署安全性。

cuda7parallel的博客 928

Flink Rest Basic Auth - 安全认证

背景 公司目前需要将Flink实时作业云化,构建多租户实时计算平台。目前考虑为了资源高效利用,并不打算为每个租户部署一套独立的Kubernetes集群。也就意味着多个租户的作业可能会运行在同一套kubernets集群中。此时实时作业的任务就变的很危险,因为网络可能是通的,就会存在危险的REST API暴露出去,被一些不坏好意的人利用,从而影响其他租户的作业。鉴于此考虑给Flink的作业添加一个认证方式,可以是Kerberos或者是Http 用户名密码Baisc认证。各种搜索和询问,最终发现了一些线索FLIP

麦田里的守望者-蒋中洲【相信相信的力量】 1500

基于开源技术栈构建兼顾隐私与可观测性的流量分析系统

在当今的软件开发和运维领域,可观测性(Observability)已成为理解系统行为、保障服务稳定的核心支柱。它通过日志、指标和追踪三大数据源,让开发者能够透视系统内部状态,快速定位问题并优化性能。其中,流量分析作为指标和日志的重要组成部分,能够揭示用户来源、行为路径和系统负载等关键信息,是实现业务洞察的基础。然而,随着全球数据隐私法规(如GDPR、CCPA)的日益严格,如何在利用流量数据进行深度分析的同时,确保用户个人信息的安全与匿名,成为了一项重要的技术挑战。这要求在工程实践中,必须将匿名化(Anony

weixin_34021089的博客 368

【Flink】Flink 源码之 安全认证 kerberos 认证

1.概述 这篇文章转载:Flink 源码之 安全认证 非常巧合的是,我上周用了2-4天才完成flink安全认证,还是没有搜过,任何安全相关的代码,完成了。结果今天就看到了。 本篇分析下Flink安全认证部分的处理方式。主要为Kerberos认证相关内容。下面从配置项开始分析。 2.SecurityConfiguration 此类包含了Flink安全认证相关的配置项。它们的含义如下: zookeeper.sasl.disable:是否启用Zookeeper SASL。 security.kerber.

九师兄 4707

【Flink实战系列】Flink web UI 的使用介绍

最近也是由于电脑出了一点问题,就没有更新,今天主要来介绍一下Flink的web ui的使用,我们先提交一个job上去(我的集群是on yarn的),命令如下: flink run -m yarn-cluster -c flink.window.FlinkWindowDemo -yn 2 -ys 4 -nm hbase -yjm 2048 -ytm 2048 -p 9 /home/jason/b...

JasonLee实时计算 3万+

flink设置登录密码

在nginx 配置中添加 如下配置,ip为访问flink服务器ip,一般flink端口为8081,通过nginx转发以后,调整访问端口,这里调整端口为8090。flink 进行standalone安装候,不需要登录密码,可以知己而直接访问,存在一定安全隐患,可以通过nginx以及httpd实现密码验证。重启号以后,访问flink 需要地址改为http://192.168.1.8:8090/flink .并且需要输入用户密码。添加配置完成以后,重启nginx,...

whandgdh的博客 7878

TL494充电器原理与维修 (转)

TL494充电器原理与维修 电动自行车充电器多采用开关 电源,型号虽多,但电路结构大同小异,主要区别在于所选的脉宽调制(PWM)芯片不同如(UC3845、UC3842、SG3524、TL494)。现以佳腾牌 充电器为例,介绍其原理和故障检修方法。 一、电路原理 根据实物测绘的佳腾牌充电器电路原理如图1所示。整机可分为PWM产生和推动电路、功 率开关变换电路、...

weixin_30500663的博客 1814

使用Nginx和htpasswd为Flink集群添加基础认证

本文详细介绍了如何为Apache Flink集群的Web UI添加基础认证,以解决其默认无身份验证的安全隐患。通过使用Nginx作为反向代理并结合htpasswd工具创建密码文件,实现访问控制。该方法配置简单、资源消耗低,能有效防止未授权访问,是提升Flink生产环境安全性的快速实践方案。

v4w5x6的博客 436

量化爬虫实战:手把手教你搞定同花顺问财的hexin-v参数(附JS逆向思路与Cookie Hook技巧)

本文详细解析了如何通过JS逆向技术获取同花顺问财平台的`hexin-v`参数,包括Cookie Hook技巧和完整解决方案架构。从环境搭建到参数定位,再到生成逻辑逆向,手把手教你突破数据获取限制,为量化交易提供可靠数据支持。

weixin_42557803的博客 398

避开PFC设计大坑:从环路分析到参数整定的5个常见误区与解决方案

本文深入解析PFC电路设计中从环路分析到参数整定的5个常见误区,包括电感参数设计、小信号模型适用边界、电压环与电流环耦合效应等。通过实际案例和PSIM仿真数据,提供工程落地的解决方案,帮助工程师避开设计陷阱,提升电路性能与可靠性。

weixin_30666401的博客 325

NginxWebUI实现nginx代理灵活可视化配置

下载windows服务工具(WinSW用于注册nginxWebUI为系统服务):https://github.com/winsw/winsw/releases。下载nginxWebUI(需要安装Java):https://www.nginxwebui.cn/(4)安装服务,在当前目录打开cmd,输入nginx-webui.exe install。替换文件后,点击重新装载(如果nginx未启动点击启动)即可生效。(1)配置负载均衡(upstream)(2)添加一个反向代理(server)

qq_42563471的博客 2051

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

睶 38万+

Flink web UI配置账号密码,权限控制

由于Flink自带的web UI界面没有账号密码,需要通过nginx实现该效果。

怪只怪满眼尽是人间烟火 7089

MIPI C-PHY介绍(Specification for C-PHY V1.2)

本文档描述了一个名为C-PHY的高速串行接口,它在带宽有限(bandwidth limited channels,看的有人说C的含义就是channel limit)的通道上提供高吞吐量性能,用于连接到外设,包括显示器和摄像头。首先0x4fff在0x4000~0x4fff区域,则f=(0,0,0,0,0,0,1),顺序是S6~S1;最后,端到端的传输过程是什么样呢,如下图所示,16bit先转换成7个符号(每个符号3位,共21位),然后并行数据转换成串行数据,输送到符号编码器和3个线的驱动器,接收端流程相反。

qflook的博客 5870

YOLOv11改进 | 损失函数改进篇 | MPDIoU、InnerMPDIoU助力细节涨点(二次创新 + 代码解析)

本文为读者详细介绍了YOLOv11模型的最新改进,带来的改进机制是最新的损失函数MPDIoU和融合了最新的Inner思想的InnerMPDIoU(效果打爆之前的所有的损失函数提升检测精度和处理细节方面的作用。通过深入探讨MPDIoU和InnerMPDIoU(全网首发)的工作原理和实际代码实现,本文旨在指导读者如何将这些先进的损失函数技术应用到YOLOv11模型中,以提高其性能和准确性。文章内容涵盖从理论基础、代码实现,到实际教你如何添加本文的机制到你的模型中。

Snu77的博客 4021

flink初识及集群搭建和简单验证

批计算和批计算 在软件系统中,尤其是企业级软件,基本离不开数据统计和分析等数据计算。最初,多数常见的统计分析都是基于数据库的数据进行处理,例如某一段时间的活跃用户数统计,这种计算方式称作离线计算,也称作批量计算(个人理解)。 而现实世界中的数据产生方式有很多都是持续不断的,也就是说实际很多场景的数据是就是数据流,这些数据随着时间的流逝,价值会不断的降低,因此就需要尽可能实时的进行处理。 而批计算是一批数据一起处理,尤其是最初数据先入数据库,再拿出来处理,这种方式在数据量日渐爆发的场景下,对于实时分析的业务就

程序员涂小哥的技术博客 1659

Java全栈开发:充电桩管理系统项目实战

技术收获深入理解分布式系统架构掌握高并发场景解决方案提升系统设计能力经验教训前期需求分析的重要性技术选型需要考虑长期维护测试覆盖率的重要性未来展望引入AI预测故障支持更多支付方式优化用户体验通过此项目的开发,不仅实现了充电桩的智能化管理,也积累了宝贵的全栈开发经验。项目中的很多技术方案和架构设计都具有普遍适用性,可以在其他类似项目中借鉴使用。@Componentstatic {// 初始化状态转换规则。

exlink2012的专栏 1249
上一篇: 【移动通信】RSRP与SINR:从信号强度到网络优化的实战解析
下一篇: Nacos密码忘了别慌!5分钟搞定BCrypt加密密码重置(附在线工具)
java5
博客等级 码龄22年 85粉丝 2103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值