ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Odoo 怎么用 obfuscate 命令加密生产库中的个人敏感字段后再交付给第三方

Odoo 怎么用 obfuscate 命令加密生产库中的个人敏感字段后再交付给第三方 Odoo 怎么用 obfuscate 命令加密生产库中的个人敏感字段后再交付给第三方【免费下载链接】odooOdoo. Open Source Apps To Grow Your Business.项目地址: https://gitcode.com/GitHub_Trending/od/odoo当你需要把生产环境的 Odoo 数据库比如连同 CRM 商机、邮件往来、联系人信息交给第三方做分析、迁移或联调时直接给库意味着姓名、电话、地址、邮箱全部外泄。Odoo 自带的obfuscateCLI 子命令可以解决这个问题它在原库上就地对一批个人敏感字段做对称加密基于 PostgreSQL 的pgcrypto扩展保留库结构和业务关联只把字段值替换成密文处理完成后再把数据库交付出去。使用前提能访问 Odoo 安装目录可以直接运行odoo-bin目标库是 PostgreSQL且执行账号有权限创建pgcrypto扩展命令执行时会先CREATE EXTENSION IF NOT EXISTS pgcrypto该操作会直接修改生产库中的数据。命令源码中的确认提示明确写着这可能 can lead to a data loss且官方注释表明该混淆方式 not considered as safe to transfer anonymous datas to a third party不认为可以安全地用于向第三方转移匿名化数据。因此务必先在备份或复制库上演练并理解这一限制后再决定交付方式。命令实现见 odoo/cli/obfuscate.py命令入口机制见 odoo/cli/command.py。命令格式与必填参数obfuscate是odoo-bin的内置子命令程序名格式为odoo-bin [--addons-pathPATH,...] obfuscate。执行时最少需要两个参数odoo-bin obfuscate --pwd 加密密码 -d 数据库名--pwd加密/解密用的对称密码必填缺失时命令直接报错退出ERROR: --pwd is required。该密码会被加密后存入数据库的ir_config_parameter键名odoo_cyph_pwd之后所有解密操作都依赖它请妥善保存。-d目标数据库名必填且只能指定一个库传多个会报错-d/--database has multiple databases, please provide a single one。完整参数列表参数作用--pwd加密/解密密码必填--fields追加要处理的表.列列表逗号分隔如table1.column1,table2.column2--exclude从处理列表中排除的表.列逗号分隔--file从文件读取表.列列表每行一个UTF-8结果并入--fields--unobfuscate切换为解密还原模式--allfields仅可用于解密模式尝试解密所有字段且会忽略--fields/--exclude源码注明比逐个指定字段更慢--vacuum解密完成后对处理过的表执行VACUUM FULL--pertablecommit每处理完一张表就提交一次而不是整体一个大事务-y/--yes跳过交互式确认。帮助文本提醒 Use it carefully因为该方式不被认为适合安全地向第三方转移匿名数据默认处理的敏感字段范围即使不传--fields命令也会加密一组默认字段覆盖联系人、邮件线索和 CRM 商机中最典型的个人信息表字段res_partnername、complete_name、email、phone、mobile、street、street2、city、zip、vat、websitecrm_leadname、contact_name、partner_name、email_from、phone、mobile、website、descriptionmail_messagesubject、email_from、reply_to、bodymail_tracking_valueold_value_char、old_value_text、new_value_char、new_value_textres_countryname两个行为边界由源码决定只处理text、varchar、jsonb类型的列ir_前缀的表一律跳过对jsonb列会取出所有键后逐值加密不存在的键不会被创建。源码注释明确说明 selection 类字段不生效Doesnt work for selection fields ...。默认列表中出现的表如果实际不存在例如该库没装 CRM就没有crm_lead表这些字段会被记为Invalid fields: ...并自动剔除命令继续执行。如果你的交付范围还需要加密其他字段比如hr_employee里的姓名电话用--fields追加或把大量字段写进文件后用--file读入反之若某个默认字段不想动用--exclude排除。执行加密并确认不带-y时命令先开始事务、再进入两级交互确认The obfuscate method is not considered as safe to transfer anonymous datas to a third party. This will alter data in the database 库名 and can lead to a data loss. Would you like to proceed [y/N]? Please type your database name (库名) in UPPERCASE to confirm you understand this operation is not considered secure :第一问必须输入Y第二问必须把数据库名用大写完整敲一遍任何一步不通过都会回滚并退出。确认通过后日志依次输出Processing fields: res_partner.name, res_partner.email, ... # 最终生效的字段清单 Obfuscating table res_partner Obfuscating table mail_message ...以上为按源码日志格式给出的示例实际列出的字段以你的参数为准。典型主路径命令--pwd后的值换成你自己设定并保管好的密码-d后换成实际库名odoo-bin obfuscate --pwd 你自己设定的加密密码 -d production字段较多、库较大时可以加--pertablecommit避免单个超长事务odoo-bin obfuscate --pwd 你自己设定的加密密码 -d production --pertablecommit执行完成后命令会提交事务并正常退出。加密后的数据在原列中以odoo_cyph_前缀 Base64 密文的形式存储加密用的就是--pwd传入的密码。验证加密结果命令本身没有独立的校验子命令按源码逻辑可以从三处确认日志出现Processing fields: ...列出本次实际生效的字段之后每张表一行Obfuscating table 表名最后正常提交退出而不是ERROR: ...异常退出任何异常都会以ERROR: ...形式终止并回滚。数据形态抽查目标列例如SELECT email FROM res_partner LIMIT 5;加密成功时值应以odoo_cyph_开头——命令内部正是用这个前缀判断已经加密过、不再二次加密的。明文值则说明该记录/字段不在处理范围内。密码参数已落库SELECT value FROM ir_config_parameter WHERE keyodoo_cyph_pwd;应能查到一条记录这是后续解密的前提查不到说明加密没有走完提交。需要交付给第三方时交付的就是完成上述验证后的数据库或其转储。还原数据必要时第三方返回数据库后用同一个--pwd执行解密模式即可把字段还原odoo-bin obfuscate --pwd 当初的加密密码 -d production --unobfuscate解密前会校验密码是否正确用同一密码解密odoo_cyph_pwd中保存的校验值密码不匹配则回滚退出不会改数据解密范围与加密时相同默认字段 你当时的--fields/--file参数也可以加--allfields尝试解密所有字段——该参数只能在解密模式使用且会忽略--fields和--exclude如果加密时用了--pertablecommit或库内其他写入产生了膨胀解密后可加--vacuum对处理过的表执行VACUUM FULL解密成功后命令会删除odoo_cyph_pwd参数库回到可用状态。限制与交付前的判断源码和-y帮助文本都明确声明obfuscate 方式不被视为可以安全地向第三方转移匿名化数据的方案。它做的是同一密码可逆的加密拿到密码的人可以还原全部明文。是否满足你的保密要求要结合对方获取渠道和合同约束自行判断文档没有给出其他更强的脱敏选项这一点无法由本命令本身解决。密码即密钥--pwd一旦丢失被加密的字段无法通过本命令还原解密会因校验失败而整体回滚。每次运行只能处理一个数据库多库交付需要逐库执行。操作是不可逆地改写原列虽然可用解密恢复交互确认环节就是命令内置的最后防线使用-y会跳过它只在脚本化、且你已确认库是副本时考虑。【免费下载链接】odooOdoo. Open Source Apps To Grow Your Business.项目地址: https://gitcode.com/GitHub_Trending/od/odoo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表