开箱即用的 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:    "testuser@example.com",
    }

    // 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 消息绑定,避免后期大量业务代码改造。

项目代码

目录
相关文章
|
7月前
|
JSON API Go
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:集成 Swagger UI 打造交互式 API 文档
GoWind Admin(风行)是基于 Kratos 的企业级中后台框架,集成 Swagger UI 实现交互式 API 文档。通过 Protobuf 自动生成 OpenAPI v3 规范文档,利用 `//go:embed` 嵌入服务,一键部署可视化调试界面,提升前后端协作效率,开箱即用。
450 1
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:集成 Swagger UI 打造交互式 API 文档
|
1月前
|
监控 NoSQL 开发者
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:极速搭建微服务应用
GoWind Admin(风行)是基于Go语言的企业级前后端一体中后台框架,集成kratos生态,支持一键生成微服务、多协议(gRPC/REST)、多数据层(gorm/ent/redis),开箱即用,大幅降低架构成本,助力快速构建高可用微服务应用。
173 2
|
前端开发 安全 API
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:自动化解放双手,初学者快速搭建系统并自动生成前端接口
GoWind Admin 是基于 Go-Kratos 与 Vue3 的企业级中后台框架,开箱即用,集成用户、权限、租户等核心模块。搭配 protoc-gen-typescript-http,可从 Protobuf 自动生成类型安全的前端接口,大幅降低联调成本,提升开发效率,助力初学者快速搭建系统,实现前后端高效协作。
273 0
|
1月前
|
运维 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 月产品动态
|
1月前
|
前端开发 JavaScript Go
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:为什么选 Golang+Vue3 这套组合?
go-wind-admin 采用 Golang + Vue3 技术栈,融合高性能后端与高效前端生态。后端基于 go-kratos、ent/gorm 灵活适配复杂业务,前端结合 Vue3、TypeScript 与 Vben Admin,提升开发效率与可维护性,兼顾性能、扩展性与企业级需求,是中后台系统的理想选择。(239字)
255 6
|
SQL 数据库 Nacos
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:代码生成工具集
GoWind Admin|风行是一套企业级前后端一体中后台框架,配套代码生成工具集,支持配置导出、数据库转ORM/Proto/Kratos服务代码,提升开发效率,开箱即用。
329 0
|
1月前
|
Go API Docker
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:Makefile 在后端开发中的应用与 Windows 环境配置
GoWind Admin(风行)是基于 Go + Vue 的企业级中后台框架,通过 Makefile 实现高效工程化管理。本文详解其在 Windows 环境下 make 工具的安装配置、分层 Makefile 设计及核心命令实战,助力开发者统一构建流程,提升协作效率,实现开箱即用的全栈开发体验。(238字)
97 2
|
29天前
|
存储 缓存 关系型数据库
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:分层设计的取舍之道(从 “简单粗暴” 到依赖倒置)
GoWind Admin 是企业级前后端一体中后台框架,深入探讨分层设计的取舍:从“Service直连Data”到依赖倒置与biz层演进,平衡开发效率与架构韧性,适配轻量到超大型项目,实现开箱即用与长期扩展的统一。
121 4
|
SQL API 容器
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:后端项目结构说明
GoWind Admin|风行是一款企业级前后端一体中后台框架,后端采用Go语言,基于Protobuf定义API,支持Buf代码生成与Docker部署。项目结构清晰,含API定义、服务实现、数据库ORM、配置管理及自动化脚本,开箱即用,助力高效开发。
331 0