InvenTree 隐私保护声明解读数据采集、Cookie 机制与插件隐私边界【免费下载链接】InvenTreeOpen Source Inventory Management System项目地址: https://gitcode.com/GitHub_Trending/in/InvenTree导读本文以 InvenTree 开源库存管理系统的官方隐私声明docs/docs/project/privacy.md为骨架结合后端 Django 源码与配置文件系统解读其「自包含、不追踪、不共享」的隐私设计说明系统采集了哪些数据、为什么必须使用 Cookie、隐私声明对第三方插件与文档托管平台的覆盖边界并给出管理员可验证的源码依据。读完本文你将掌握 InvenTree 的隐私承诺边界以及如何通过配置文件验证 Cookie 与错误上报Sentry的隐私行为。隐私声明的总体承诺InvenTree 隐私声明的核心可以概括为一句话InvenTree 应用包括数据库、Web 服务器及关联软件在切实可行的范围内不记录、不追踪、不分享任何可识别用户身份的信息也绝不与任何第三方共享产品数据库中存储的用户数据。这意味着隐私声明覆盖三个层面采集层面应用只依赖自身数据库中的信息不额外采集用户信息使用层面数据库中的数据仅用于实现 InvenTree 自身功能共享层面整个应用完全自包含于托管它的服务器之上不与外部方或外部服务器交换信息。数据采集只存功能所需不做额外采集采集范围声明原文档明确表示InvenTree 应用不收集任何超出 InvenTree 数据库本身所存储范围的用户信息。数据库中的存储数据仅用于实现 InvenTree 功能。也就是说InvenTree 不接入第三方统计、不向自建分析平台回传行为日志用户在使用过程中产生的数据部件、库存、订单、用户账号等都存在于用户自己托管的数据库中。源码佐证用户数据模型从源码结构看用户相关数据由 Django 自带的认证体系承载。项目在users模块中对用户信息做了扩展管理参见 src/backend/InvenTree/users但整体上仍遵循「账号信息 功能业务数据」两大集合没有独立的遥测数据表。也就是说凡是数据库里没有的业务数据系统不会凭空采集。一个例外可选的错误上报需要留意的是隐私声明针对的是数据库业务数据。工程层面还提供了可选的、默认关闭的 Sentry 错误上报集成其开关与数据边界在 src/backend/InvenTree/InvenTree/settings.py 中定义# sentry.io integration for error reporting SENTRY_ENABLED not TESTING and get_boolean_setting( INVENTREE_SENTRY_ENABLED, sentry_enabled, False ) # Default Sentry DSN (can be overridden if user wants custom sentry integration) SENTRY_DSN get_setting(INVENTREE_SENTRY_DSN, sentry_dsn, default_sentry_dsn()) SENTRY_SAMPLE_RATE float( get_setting(INVENTREE_SENTRY_SAMPLE_RATE, sentry_sample_rate, 0.1) ) # Whether to include PII (e.g. user id/email, IP address, request data) in reported events SENTRY_SEND_PII get_boolean_setting( INVENTREE_SENTRY_SEND_PII, sentry_send_pii, False )配置文件中对应的说明见 src/backend/InvenTree/config_template.yaml# Set sentry_enabled to True to report errors back to the maintainers # Set sentry,dsn to your custom DSN if you want to use your own instance for error reporting sentry_enabled: False #sentry_sample_rate: 0.1 #sentry_dsn: https://customcustom.ingest.sentry.io/custom # Set sentry_send_pii to True to include PII (e.g. user id/email, IP address, request data) #sentry_send_pii: False关键隐私细节SENTRY_SEND_PII默认False。这一默认值还受到回归测试的专门保护——src/backend/InvenTree/InvenTree/test_sentry.py 中的test_pii_disabled_by_default断言send_default_pii必须默认为False防止任何未来改动把用户 id/email、IP 与请求数据悄悄附加到上报事件中。也就是说即便开启 Sentry也默认不携带可识别个人信息除非管理员显式配置sentry_send_pii: True。Cookie 机制功能必需不追踪身份官方声明要点InvenTree Web 应用使用本地 Cookie 来维持持久化的用户体验。官方声明明确四点这些 Cookie 是 InvenTree 功能所必需的它们不记录、不追踪任何可用于识别用户身份的信息存储的数据不与任何第三方共享服务器不使用任何追踪型 Cookie也不使用与第三方共享用户信息的第三方 Cookie。源码佐证这些 Cookie 到底是什么从 Django 配置src/backend/InvenTree/InvenTree/settings.py可以看到InvenTree 使用的是一组标准的、功能必需型 CookieCOOKIE_MODE ( str(get_setting(INVENTREE_COOKIE_SAMESITE, cookie.samesite, False)) .lower() .strip() ) # Valid modes (as per the django settings documentation) valid_cookie_modes [lax, strict, none] COOKIE_MODE COOKIE_MODE.capitalize() if COOKIE_MODE in valid_cookie_modes else False # Additional CSRF settings CSRF_FAILURE_VIEW InvenTree.middleware.csrf_failure CSRF_HEADER_NAME HTTP_X_CSRFTOKEN CSRF_COOKIE_NAME csrftoken CSRF_COOKIE_SAMESITE COOKIE_MODE SESSION_COOKIE_SAMESITE COOKIE_MODE LANGUAGE_COOKIE_SAMESITE COOKIE_MODE Set the SESSION_COOKIE_SECURE value based on the following rules: - False if the server is running in DEBUG mode - True if samesite cookie setting is set to None - Otherwise, use the value specified in the configuration file (or env var) COOKIE_SECURE ( get_boolean_setting(INVENTREE_SESSION_COOKIE_SECURE, cookie.secure, False) or SESSION_COOKIE_SAMESITE None ) # Override COOKIE_SECURE value in DEBUG mode if DEBUG: COOKIE_SECURE False CSRF_COOKIE_SECURE COOKIE_SECURE SESSION_COOKIE_SECURE COOKIE_SECURE LANGUAGE_COOKIE_SECURE COOKIE_SECURECookie 的类型与用途对应如下Cookie默认名用途是否追踪身份会话 Cookie由 Django 会话管理生成维持用户登录态与持久化会话否仅关联服务器端会话记录CSRF Cookiecsrftoken防止跨站请求伪造攻击表单/请求安全校验否语言 CookieDjango 语言 CookieLANGUAGE_COOKIE_AGE为 30 天见 settings.py记住界面语言偏好否这三类 Cookie 全部属于功能必需范畴没有会话 Cookie 无法保持登录没有 CSRF Cookie 无法安全提交写操作没有语言 Cookie 则无法记住语言偏好。它们不依赖任何广告或分析 SDK因此官方声明中无追踪型 Cookie的承诺与代码结构完全一致。管理员可配置的 Cookie 加固项对应配置src/backend/InvenTree/config_template.yaml# cookie: # secure: false # samesite: falsecookie.samesite可选lax/strict/none用于控制 Cookie 的跨站发送策略。设置为strict可进一步收紧 CSRF 攻击面但可能影响某些跨站跳转场景设置为none时系统会强制COOKIE_SECURE True即要求 HTTPS。cookie.secure控制会话 / CSRF / 语言三类 Cookie 是否仅通过 HTTPS 传输。DEBUG 模式下会被强制置为False生产环境建议开启。这些配置与 Django 标准安全模型一一对应管理员可以根据部署环境参见 docs/docs/start/advanced.md自行权衡。数据共享完全自包含的服务器官方声明承诺InvenTree 应用不与外部方或外部服务器共享任何信息。InvenTree 应用完全自包含于其托管服务器之上。这是 InvenTree 隐私设计的根本特征数据库、Web 服务器、后台任务、静态资源均在用户自己的服务器上运行。只要不主动开启下述两类可选项InvenTree 运行时不会主动向外发起携带业务数据的通信Sentry 错误上报默认关闭sentry_enabled: False。即便开启默认也不携带 PII且允许管理员换成自己的 DSNsentry_dsn把错误数据发到自建实例而非 InvenTree 官方。OpenTelemetry 追踪同样默认关闭INVENTREE_TRACING_ENABLED/tracing.enabled见 src/backend/InvenTree/InvenTree/settings.py仅当配置了端点与鉴权头如 OTLP HTTP/gRPC 端点时才会导出追踪数据实现见 src/backend/InvenTree/InvenTree/tracing.py。因此从源码结构看自包含、不共享的承诺成立的前提是管理员不主动开启错误上报 / 追踪导出等可选项。这也解释了为何配置模板中这些选项默认全部为False。插件的隐私边界官方声明要点任何与 InvenTree 服务器集成的第三方插件都应提供自己的隐私声明非 InvenTree 官方提供的插件其隐私影响可能与本文所述细节存在差异。为什么插件需要单独看待InvenTree 的插件机制非常开放参见 docs/docs/plugins/index.md 与插件集成文档 docs/docs/plugins/mixins/wellknown.md插件可以注册 API 端点、接收 Webhook、调用外部服务邮件、Slack、BOM 服务等。这意味着官方应用本体遵守上述隐私承诺但插件自身的网络行为不受该声明约束——例如一个第三方供应商插件可能会向该供应商的服务器发起查询管理员在启用插件前应阅读插件作者提供的隐私说明评估其数据外发行为。这也是官方声明特意为插件留出各自提供隐私声明条款的原因隐私边界因插件而异。文档站点的隐私说明官方声明要点InvenTree 文档托管于 readthedocs 平台文档访问行为受 readthedocs 自身隐私政策约束InvenTree 文档服务器明确禁用了第三方追踪型 Cookie例如 Google Analytics。仓库佐证文档站点的追踪配置可在 docs/mkdocs.yml 与 docs/docs/hooks.py 中核对。文档使用的 docs/_includes/overrides/main.html 等模板仅承载 mkdocs 主题功能与项目导航未引入 Google Analytics 等外部统计脚本。也就是说阅读文档产生的访问数据由托管方readthedocs按自身政策处理但文档站点本身不做第三方行为追踪。管理员自查清单综合文档承诺与源码实现InvenTree 实例管理员可按下表核对本实例的隐私行为检查项默认值配置文件键影响是否启用 Sentry 错误上报Falsesentry_enabled关闭时业务数据绝不上报上报是否携带 PIIFalsesentry_send_pii开启 Sentry 时默认仍不含 id/email/IP上报目标 DSNInvenTree 官方 DSNsentry_dsn可改为自建 Sentry 实例Cookie 是否仅 HTTPS 传输视 DEBUG 与 samesite 而定cookie.secure生产环境建议TrueCookie 跨站策略不强制cookie.samesitestrict更严格none会强制 secure是否启用 OpenTelemetry 追踪Falsetracing.enabled关闭时无任何追踪数据导出总结InvenTree 的隐私声明是一条自包含、功能必需、不追踪、不共享的承诺线业务数据只存在自建数据库Cookie 仅为会话、CSRF 与语言偏好等核心功能服务第三方共享默认不发生。结合 settings.py、config_template.yaml 与 test_sentry.py 的源码证据这套承诺是可验证的——每个隐私关键点都能在代码与配置中找到对应实现。唯一需要管理员自行把关的是插件生态与可选的错误上报/追踪导出项这也是官方声明特别提示第三方插件应提供自身隐私说明的原因。【免费下载链接】InvenTreeOpen Source Inventory Management System项目地址: https://gitcode.com/GitHub_Trending/in/InvenTree创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考