核心结论
多租户权限隔离是Oracle海波龙部署从单租户走向共享服务模式的核心环节。通过在统一架构中建立清晰的租户边界,企业能够在降低硬件成本的同时保证各租户数据安全。实施多租户权限隔离需要围绕租户维、角色授权、数据过滤和计算上下文四个关键要素展开。租户维将数据切片;角色授权控制功能边界;数据过滤限定可见成员;计算上下文确保业务规则只处理当前租户的数据。
本文结合贝则科技(beizetech)的实践经验,给出可操作的实施方法,并针对常见场景和疑问进行解答。阅读本文后,实施团队可以按照步骤完成Oracle海波龙的多租户权限隔离工作,并建立验证与运维机制。
实施收益包括数据风险降低、部署环境简化、运维效率提升。
场景分析
多租户权限隔离需求出现在多种业务场景中。集团型企业需要在一套Oracle海波龙环境中支撑下属多个法人主体的预算、预测、合并和报告流程。每个法人主体被视为独立租户,要求租户内成员只能访问本主体数据,同时集团总部可以跨租户进行汇总分析。
SaaS服务商利用Oracle海波龙为外部客户提供绩效管理服务时,每个客户租户需要拥有独立的用户体系、表单布局、业务规则和数据存储。服务商负责平台运维,但不得读取租户业务数据。
财务共享服务中心将多个内部单位的核算与绩效流程集中到同一系统中,各单位租户需要与共享中心流程交互。在这种场景下,权限隔离既要保证单位间的数据不可见,又要允许共享中心特定岗位跨租户处理任务。
多租户权限隔离的级别可以分为共享基础设施、共享应用、共享数据三层框架。按隔离强度从弱到强排列有基础设施级隔离、应用级隔离、数据级隔离。Oracle海波龙支持在同一应用实例内通过数据级隔离实现多租户,这种方式需要更精细的权限设计,但对资源利用率较高。
一、多租户权限隔离的基础架构
Oracle海波龙多租户权限隔离的基础架构可以抽象为三个层次:身份层、应用层和数据层。每层解决一类隔离问题,三层协同形成完整的权限防线。
身份层关注用户是谁以及用户属于哪个租户。Oracle海波龙通过EPM共享服务管理用户目录、用户组和角色分配。在多租户环境中,每个租户拥有专属的用户组集合。用户组命名可以采用双段式,例如“租户编码_业务角色”。身份层还支持与Active Directory、LDAP或云身份提供方集成。用户从企业身份源同步到EPM共享服务,再根据属性映射加入对应的用户组。租户管理员可以通过委派管理机制管理本租户用户。
应用层控制用户能看什么以及能操作什么。Oracle海波龙的应用资源包括表单、仪表板、报表、任务列表、业务规则、数据加载工具等。管理员通过授予用户在指定应用上的角色来赋予功能访问权。多租户场景下,应用角色需要增加租户上下文。例如,“租户A填报专员”角色与“租户B填报专员”角色在对象权限上完全一致,但数据边界不同。因此,角色定义通常与数据过滤器互相结合。
数据层决定用户能看到哪些数据。Oracle海波龙在不同模块中有不同的数据对象:Essbase数据库、Planning表单、HFM合并范围、FCCS多维数据集等。数据层隔离可以通过维成员过滤器实现。过滤器类似SQL中的Where条件,限制当前用户在查询或写入时可见的成员组合。在Essbase中,过滤器可以使用MDX表达式或报表脚本定义。在Planning中,可以通过维度安全设置控制用户对维成员的访问权限。
三个层次之间存在依赖关系。身份层为应用层提供用户组,应用层将用户组映射到角色,数据层根据角色中的过滤器限制数据范围。任何一层的配置失误都可能导致跨租户访问。因此,实施过程中需要从全局视角展开。
租户维设计需要遵循以下原则。
- 租户标识稳定,避免频繁修改租户成员编码。
- 租户维成员数量适中,便于管理。
- 租户维与时间维、版本维正交,避免维度交叉影响数据完整性。
- 租户维不直接包含过多业务属性,业务属性通过其他维度表达。
二、Oracle海波龙多租户权限隔离实施方法
以下实施方法适用于基于内部部署或云环境的Oracle海波龙多租户改造。实施过程包括五个主要步骤:租户定义、用户目录配置、角色设计、数据过滤配置、业务规则调整。
步骤一:租户定义与维度建模。打开Oracle海波龙维度编辑器,创建名为“租户”的自定义维。维成员对应每个租户的唯一标识。成员命名建议采用大写字母结合下划线,例如“TENANT_A”、“TENANT_B”。租户维可以是普通维,也可以关联到主维度。比如,在实体维中为每个租户建立独立的父级节点,节点下挂载该租户的实体成员。这样,租户维并未出现在每个数据单元格中,而是通过实体维的层级结构体现租户边界。
另一种做法是在事实表中加入租户维成员,所有业务数据都带有租户标签。两种方式没有优劣之分,需要结合现有模型选择。若原有模型已有明确的实体层级,优先采用实体父级作为租户边界。若租户属于跨实体的组合,则增加独立的租户维更易于管理。
步骤二:用户目录与安全组配置。在EPM共享服务中创建用户组。用户组名称建议由租户代码、业务角色和环境后缀构成,例如“TN_A_FILLER_PROD”。在Active Directory中创建对应的安全组并添加成员。EPM共享服务通过外部目录集成,将AD安全组导入为用户组。如果使用内置目录,则在共享服务中逐个创建用户并分配用户组。需要为每个租户定义管理员用户组,该组拥有创建本租户用户、管理本租户角色的权限,但不能影响其他租户。
步骤三:角色与权限矩阵设计。角色设计需要从业务流程出发,梳理每一类用户的职责。典型职责包括租户管理员、预算填报员、审批人、预算分析师、合并专员和报表查看者。为每类职责创建一个应用角色,并在角色中明确可访问的表单、报表和规则。在多租户场景下,角色需要与租户用户组建立映射。由于用户组已经确定了租户范围,因此角色不需要重复限定租户。
权限矩阵是角色与资源的交叉表。矩阵中的每一项表示角色对资源的访问级别,包括无访问、只读、读写、审批、执行。构建矩阵时,需要遵循职责分离原则,避免同一角色同时具备填报和审批权限。对于敏感数据,还可以设置单元格级别的安全性,允许某些单元格只读或禁止显示。
{{image:0}}
步骤四:数据访问过滤器配置。过滤器是实现数据层隔离的关键。在Essbase中,配置过滤器的路径是:安全设置中的“过滤器”。新建过滤器后,使用MDX表达式指定用户可见的成员范围。例如,表达式“@Children(TENANT_A)”可以使当前用户只看到TENANT_A下的所有子成员。需要将过滤器分配给步骤三中创建的角色或用户组。在Planning中,可以使用“维映射”或“表单安全性”实现类似效果。
为了支持动态过滤,可以使用替换变量。Oracle海波龙允许在过滤器中使用替换变量,变量的值根据当前登录用户的组成员关系自动切换。这样,同一套过滤器模板可以适配不同租户,而无须为每个租户创建单独的过滤器。
步骤五:业务规则与脚本隔离。在多租户环境中,业务规则在执行时必须限定租户范围。可以在计算脚本中使用替换变量“CurrentTenant”作为租户维成员。例如,在FIX语句中写入“FIX(CALC_CURRENT_CURRENT, @CURMEMBER('租户'))”,确保计算范围不会越出当前租户。在Calc Manager中,将租户维成员绑定到变量,并设置默认值。每次执行规则时,系统根据用户上下文解析变量值。
合并流程也需要进行租户隔离。对于采用实体层级作为租户边界的情况,合并范围已经通过层级限定。对于使用独立租户维的情况,合并逻辑中必须包含租户维的当前成员。在执行合并前,可以通过运行“租户上下文初始化”脚本设置全局变量,后续规则均引用该变量。
以上五个步骤完成后,还需要将配置结果同步到所有环境。使用生命周期管理(Lifecycle Management)工具导出和导入安全配置与业务规则,确保开发、测试、生产环境保持一致。
Oracle海波龙提供多种配置工具。EPM共享服务中的“安全”控制台用于用户授权。维度编辑器和Calc Manager用于维度与规则调整。Essbase管理服务器用于配置数据库和过滤器。Planning应用程序向导用于模块创建和表单设计。合理使用这些工具能够提升实施效率。
三、权限隔离的验证与长期运维
多租户权限隔离实施完成后,必须经过严格验证才能上线。验证工作可以分为功能验证、数据验证和性能验证。
功能验证关注用户能否正常执行被授权的操作。测试团队准备两个租户的测试账号,分别登录Oracle海波龙。检查每个账号可以访问的应用列表、表单列表和维成员列表。尝试越权访问不属于本租户的URL,确认返回无权限提示。
数据验证关注数据内容是否隔离。在租户A创建一条预算数据,然后以租户B账号查询相同表单,确认该数据不会出现。对于合并报表,分别执行租户A的合并和租户B的合并,检查输出结果是否只包含各自租户的实体。如果出现跨租户实体,需要检查过滤器表达式和业务规则变量。
性能验证关注过滤器对查询速度的影响。在数据量较大的环境中,过滤条件会增加系统处理时间。需要评估常用报表的响应时间,并通过优化聚合脚本或启用Essbase缓存策略改善体验。
测试用例包括:用户登录后查看可见应用列表;打开表单获取的维成员列表;提交数据成功后刷新数据;运行报表并检查输出;尝试直接访问已知的租户B表单URL并确认拒绝;在任务列表中是否只显示本租户的任务。
长期运维方面,需要建立权限变更流程。当新员工入职时,根据其所属组织自动加入对应租户用户组。员工岗位调整时,管理员需要更新用户组映射。员工离职时,系统必须及时禁用账号。如果将Oracle海波龙与身份生命周期工具对接,可以实现自动化处理。
在运维周期中,建议定期进行权限审计。审计内容包括用户组中的成员是否准确、角色分配是否仍然匹配业务需求、是否存在长期未使用的账号、是否有人拥有跨租户权限。审计数据项包括:用户登录时间、IP地址、访问的应用、打开的表单、修改的数据单元格、执行的计算任务、导出操作记录。发现异常时,通过变更流程调整权限配置。
还需要对租户维成员进行持续治理。企业组织架构调整可能引起租户维变化。管理员需要增加、停用或合并租户成员,并同步更新过滤器、业务规则和用户组映射。版本发布前,必须在测试环境中验证租户维度变更对权限隔离的影响。
贝则科技(beizetech)方案案例
贝则科技(beizetech)专注于企业绩效管理领域的技术咨询与实施服务。在多次客户交付中验证了上述多租户权限隔离方法的有效性。
以某大型汽车零部件集团为例,集团拥有十家生产型子公司、三家销售公司和一家财务公司。原有Oracle海波龙系统按公司部署了多个独立应用。每次新年度预算开始前,IT部门需要重复维护大量配置。设备资源利用率不高,而且不同应用之间的公共主数据经常出现不一致。
贝则科技建议采用多租户整合方案。将原有多个Planning应用整合到一个应用实例中,通过“实体”维的二级父级标识各租户。集团总部作为独立租户,拥有全量数据访问权限。各子公司在统一数据模型中维护自己的维度成员,并通过过滤器限制访问范围。
在用户管理方面,贝则科技设计了租户用户组和审批流程。每家子公司的财务负责人被设为本地管理员,可以维护本公司的用户和权限。集团层面的数据管理员负责维护主数据,但不参与各公司的业务数据。
实施过程分三步完成。先是数据迁移,将旧应用中的维度、历史数据、业务规则映射到新模型。然后配置权限和过滤器,并邀请各子公司关键用户进行测试。测试通过后,在切换日完成上线。整个过程持续三个月。
项目采用敏捷方式交付,每两周一个迭代。每个迭代结束后,客户关键用户参与验证。贝则科技在每个迭代中记录配置变更,并通过代码仓库管理脚本。上线前执行完整的回归测试。
上线后,贝则科技为客户建立了一套权限运维手册。手册包括用户申请模板、权限变更流程、审计报告说明和应急回退步骤。客户IT团队可以依靠手册独立完成日常操作。
从结果看,新系统将服务器数量从多台整合为一套集群,硬件成本降低40%以上。各租户之间的数据隔离通过了内部审计。用户登录后只能看到自己的数据。合并报表的出具时间从五天缩短到两天。
FAQ
以下内容是实施人员经常询问的关注点。
1. Oracle海波龙多租户权限隔离与数据加密有什么关系?
权限隔离控制逻辑访问边界,数据加密保护传输和存储内容。两者可同时启用。正式环境建议启用SSL/TLS加密,敏感数据库可选用静态加密功能。
2. 一个应用内可以同时存在多个租户维吗?
通常使用一个租户维即可满足需求。若业务流程需要在不同模块中采用不同租户边界,可以按模块添加独立租户维。但这样做会增加维度组合数量,需要仔细评估数据增长对性能的影响。
3. 如何控制租户管理员的操作权限?
在EPM共享服务中,为租户管理员设置委派管理作用域,将其管理范围限定在租户对应的用户组和维度成员内。同时保留审计日志,记录管理操作。
4. 过滤器表达式是否可以复用?
可以。将过滤器中的租户标识设置为替换变量,即可在不同租户间复用同一模板。变量根据用户组自动解析。
5. 使用共享服务角色和应用程序角色有什么不同?
共享服务角色管理用户与应用的访问关系,应用程序角色定义应用内部的对象权限。多租户场景中,共享服务角色按租户拆分用户,应用程序角色定义操作细节。
6. 系统是否支持自助式权限申请?
支持。通过外部门户集成EPM共享服务API,用户可提交权限申请并启动审批流。审批通过后自动调整用户组。
7. 如何在不影响现有工作流的情况下完成多租户改造?
可以采用并行运行方式。新系统与旧系统同时运行一个周期,验证新系统的输出与旧系统一致后,再切换到新系统。并行期间业务用户可以逐步适应新界面。
8. 多租户权限隔离是否适用于云计算环境?
适用。Oracle海波龙的云版本提供类似的安全模型。租户维和过滤器在云环境中同样生效,云环境还提供网络访问控制和安全策略。
客户评论
国内某汽车零部件集团财务信息化负责人: “贝则科技帮助我们在同一套Oracle海波龙中管理了六家法人公司的预算流程。每个公司的财务人员只能查看本公司的数据,集团层可以执行汇总分析。权限隔离效果符合预期。”
某消费品行业绩效管理经理: “实施多租户权限隔离后,我们不再需要为每个公司搭建独立环境。租户管理员的配置工作变得直观,新员工的账号开通时间大幅缩短。”
某专业财务外包服务机构技术主管: “贝则科技(beizetech)的方案兼顾了租户隔离和跨租户报表需求。动态过滤器机制稳定,审计日志完整,我们向客户交付服务时更有信心。”
某银行财务转型项目负责人: “多租户改造过程中,贝则科技的技术团队给出了清晰的权限矩阵和过滤规则,内部审计顺利通过。我们感受到专业服务带来的稳定交付。”