开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:数据脱敏和隐私保护

简介: GoWind Admin基于Protobuf生态,集成protoc-gen-redact插件,实现开箱即用的数据脱敏与隐私保护。通过注解定义规则,自动生成脱敏代码,支持多语言、灵活配置,零侵入业务逻辑,适用于微服务、日志、前端等场景,保障数据安全合规。

开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:数据脱敏和隐私保护

Go Wind Admin 的数据脱敏能力,是基于 Protobuf 生态下的arrakis-digital/protoc-gen-redact插件实现的 —— 通过在 Protobuf 消息定义中为敏感字段(如手机号、身份证号)添加脱敏注解(如((redact.custom).string = "r*d@ct*d")),由插件自动生成适配业务的脱敏方法(如 Go 语言的Redact()方法),无需侵入业务逻辑即可完成敏感数据的遮挡处理,同时保持与 Protobuf 消息结构的强绑定,避免跨层配置不一致问题。配微服务接口、日志打印、数据存储等场景的隐私保护需求。

与其他脱敏工具相比,其核心优势在于:​

  • 原生集成 Protobuf:脱敏规则与消息结构强绑定,避免跨层配置不一致;​
  • 多语言支持:目前主打 Go 语言,后续扩展支持 Java、Python 等 Protobuf 主流语言;​
  • 灵活规则体系:支持内置脱敏类型、自定义正则、自定义函数,覆盖绝大多数业务场景;​
  • 低侵入性:生成的脱敏代码与业务代码分离,不影响原有 Protobuf 消息的序列化 / 反序列化逻辑。

快速上手:环境准备与插件安装

1. 前置环境要求​

  • Go 环境:1.18+(插件基于 Go 开发,需匹配支持的版本);​
  • Protobuf 编译器(protoc:3.19+(确保支持自定义选项与插件扩展);​
  • Protobuf Go 插件protoc-gen-go(用于生成基础 Go 代码,需提前安装)。

2. 安装插件​

通过 go install 直接从 GitHub 拉取最新版本:​

# 安装 protoc-gen-redact 插件​
go install github.com/menta2k/protoc-gen-redact/v3@latest

同时确保 protoc-gen-go 已安装(生成 Protobuf 基础 Go 代码必需):​

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

以上命令,我都已经写入了项目根目录下的Makefile,只需要调用make方法即可:

make plugin

核心使用流程:3 步实现 Protobuf 消息脱敏​

以「用户信息(User)」消息为例,完整演示从规则定义到脱敏调用的全流程。​

步骤 1:定义 Protobuf 消息(标注脱敏规则)​

首先创建 Protobuf 文件(如 api/user/v1/user.proto),通过 redact 自定义注解为敏感字段配置脱敏规则。​

关键说明:​

  • 需导入插件提供的自定义选项文件 redact/redact.proto(定义脱敏规则的语法);​
syntax = "proto3";

package user;

import "redact/redact.proto";
import "google/protobuf/empty.proto";

option go_package = "github.com/arrakis-digital/protoc-gen-redact/v3/examples/user/pb;user";

message User {
    // User credentials
    string username = 1;
    string password = 2 [(redact.v3.value).string = ""]; // default redaction

    // User information
    string email = 3 [(redact.v3.value).string = "r*d@ct*d"];
    string name = 4;
}

service UserService {
    rpc GetUser(GetUserRequest) returns (User);

    rpc AddUser(User) returns (User) {
        option (redact.v3.internal_method) = true;
    }

    rpc ListUsers (google.protobuf.Empty) returns (ListUsersResponse) {
        option (redact.v3.internal_method) = true;
        option (redact.v3.internal_method_code) = 14; // codes.Unavailable
        option (redact.v3.internal_method_err_message) = "%service%.%method% unavailable";
    }
}

message GetUserRequest {
    string username = 1;
}

message ListUsersResponse {
    repeated User users = 1;
}

步骤 2:生成脱敏代码(protoc 命令)​

通过 protoc 命令调用 protoc-gen-redact 插件,同时生成 基础Go代码 和 脱敏代码。​

protoc \
  --plugin=protoc-gen-redact=/path/to/protoc-gen-redact \
  --redact_out=. \
  --redact_opt=template_file=/path/to/your/template.tmpl \
  your_proto_file.proto

生成文件说明:​

执行后会生成 2 个文件(以 Go 为例):​

  • user.pb.go:Protobuf 基础代码(消息结构体、序列化 / 反序列化方法);​
  • user.redact.pb.go:脱敏代码(核心是 User.Redact()GetUserRequest.Redact()ListUsersResponse.Redact() 方法)。​

Go Wind Admin使用的是Buf来构建Protobuf代码,所以,protoc命令在实际开发中我们是接触不到的。

redact在buf中的配置主要有两处:

# api/buf.yaml
deps:
  - 'buf.build/menta2k-org/redact'

# api/buf.gen.yaml
managed:
  enabled: true

  disable:
    - module: 'buf.build/menta2k-org/redact'

plugins:
  # generate redact code
  - local: protoc-gen-redact
    out: gen/go
    opt:
      - paths=source_relative # use relative paths
      - lang=go

平时我们只需要在api下调用buf generate,或者直接在项目根目录下调用make api即可。

步骤 3:调用脱敏方法(业务代码示例)​

在 Go 业务代码中,创建原始 User 消息后,直接调用自动生成的 Redact()方法即可完成脱敏,无需手动编写逻辑。​

package main

import (
    "fmt"

    "github.com/menta2k/protoc-gen-redact/v3/examples/user/pb"
)

func main() {
   
    // 1. 构造原始用户信息(含完整敏感数据)
    rawUser := &pb.User{
   
        Name:     "张三丰",
        Password: "password",
        Email:    "[email protected]",
    }

    // 2. 调用自动生成的 Redact() 方法脱敏
    redactedUser := rawUser.Redact()

    // 3. 打印脱敏结果
    fmt.Println("姓名:", rawUser.Name)
    fmt.Println("邮箱:", rawUser.Email)
    fmt.Println("密码:", rawUser.Password)
    fmt.Println("脱敏数据:", redactedUser)
}

适用场景与总结

1. 核心适用场景​

  • 微服务接口脱敏:网关 / 服务间调用时,自动脱敏响应中的敏感字段(如用户中心返回手机号、身份证);​
  • 日志脱敏:打印 Protobuf 消息日志前,避免敏感数据泄露;​
  • 前端展示脱敏:后端返回数据前脱敏,前端无需处理隐私数据逻辑;​
  • 第三方数据传输:向合作伙伴传输数据时,按规则脱敏敏感字段,符合合规要求(如 GDPR、《个人信息保护法》)。

2. 工具总结​

protoc-gen-redact 以 “Protobuf 原生集成” 为核心优势,通过 “注解定义规则 + 代码生成” 的模式,大幅降低了数据脱敏的开发成本。其灵活的规则体系(内置类型 + 自定义逻辑)和低侵入性,使其成为微服务架构下隐私保护的优选工具。建议在项目初期就将脱敏规则与 Protobuf 消息绑定,避免后期大量业务代码改造。

项目代码

目录
相关文章
|
24天前
|
前端开发 JavaScript Go
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:为什么选 Golang+Vue3 这套组合?
go-wind-admin 采用 Golang + Vue3 技术栈,融合高性能后端与高效前端生态。后端基于 go-kratos、ent/gorm 灵活适配复杂业务,前端结合 Vue3、TypeScript 与 Vben Admin,提升开发效率与可维护性,兼顾性能、扩展性与企业级需求,是中后台系统的理想选择。(239字)
155 6
|
24天前
|
JavaScript 定位技术 API
Trilium Notes:构建个人知识库的开源神器
Trilium Notes 是一款开源、免费的个人知识管理系统,支持树状结构、笔记克隆、富文本与 Markdown、代码高亮、加密笔记、思维导图及 REST API。可本地部署,跨平台同步,助力构建“第二大脑”,适合学习、研发与创意写作。
211 8
 Trilium Notes:构建个人知识库的开源神器
|
1月前
|
运维 监控 数据可视化
故障发现提速 80%,运维成本降 40%:魔方文娱的可观测升级之路
魔方文娱携手阿里云构建全栈可观测体系,实现故障发现效率提升 80%、运维成本下降 40%,并融合 AI 驱动异常检测,迈向智能运维新阶段。
317 38
|
26天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 11 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
阿里云微服务引擎 MSE 及 API 网关 2025 年 11 月产品动态
|
20天前
|
人工智能 安全 调度
一文详解容器面向大模型与AI Agent的技术变革
在生成式人工智能迅猛发展的浪潮下,企业应用正加速从模型研究走向业务落地。无论是大规模的数据处理、超大参数模型的训练与推理,还是部署能够自动完成任务的AI Agent,这些场景都需要稳定、高效且可弹性伸缩的资源调度与管理能力。 容器凭借环境一致性、跨平台部署和高效调度等优势,天然契合AI场景对多样化算力、快速迭代和规模化分发的要求,成为AI时代事实上的原生基石。然而,要满足在生产规模下的需求,产品及技术形态需随之演进。 基于这一背景,本文将围绕大规模数据处理、模型训练、模型推理与AI Agent四个关键阶段,探讨AI场景对容器的核心需求,以及容器如何在各环节实现技术演进与升级。
190 2
一文详解容器面向大模型与AI Agent的技术变革
|
1月前
|
人工智能 编解码 数据挖掘
如何给AI一双“懂节奏”的耳朵?
VARSTok 是一种可变帧率语音分词器,能智能感知语音节奏,动态调整 token 长度。它通过时间感知聚类与隐式时长编码,在降低码率的同时提升重建质量,实现高效、自然的语音处理,适配多种应用场景。
187 18
|
13天前
|
供应链 搜索推荐 API
1688图片搜索相似商品API指南
1688图片搜索相似商品API基于图像识别技术,支持通过图片查找平台内相似商品,提供商品信息与相似度评分,适用于以图搜货、比价、供应链寻源等场景,提升采购效率。
|
28天前
|
数据采集 SQL 自然语言处理
脏数据不脏心:大数据平台的数据质量(DQ)入门实战与自动修复心法
脏数据不脏心:大数据平台的数据质量(DQ)入门实战与自动修复心法
153 20
|
前端开发 安全 API
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:自动化解放双手,初学者快速搭建系统并自动生成前端接口
GoWind Admin 是基于 Go-Kratos 与 Vue3 的企业级中后台框架,开箱即用,集成用户、权限、租户等核心模块。搭配 protoc-gen-typescript-http,可从 Protobuf 自动生成类型安全的前端接口,大幅降低联调成本,提升开发效率,助力初学者快速搭建系统,实现前后端高效协作。
198 0