如何防止特定组访问某些 Spring 应用程序上下文文件?

Posted

技术标签:

【中文标题】如何防止特定组访问某些 Spring 应用程序上下文文件?【英文标题】:How can I prevent specific groups from accessing certain Spring application context files? 【发布时间】:2017-07-11 04:22:37 【问题描述】:

在我们的应用程序中,我们根据从 Maven 命令行启动应用程序时指定的参数值启动某些 Spring 上下文文件。我使用参数 -DEnvironment=[NameOfEnv] 作为我的字段来确定启动应用程序时使用哪个上下文文件。代码存储在我们的 Enterprise BitBucket/Stash 中。

当我们(A 组)被要求与另一个组(B 组)共享应用程序时,问题就出现了,但是,由于他们在海外,我们的上下文文件中的大部分数据都被认为是“敏感的”,因此,他们无法访问/查看我们的应用程序上下文文件。

这是我的意思的说明:

AppContext File Visibility

我正在尝试弄清楚如何设置团队 B 以查看两个上下文文件而不是所有上下文文件,因为其他文件有他们看不到的敏感数据。

以下是一些解决方案/想法:

    仅使用其上下文文件创建重复的应用程序(最快且最脏,但更令人头疼) 不知何故从他们系统的本地位置加载上下文文件,这样他们就看不到我们的 从完全独立的存储库/项目中加载上下文文件,并相应地设置权限。所以会有两个独立的“上下文相关”存储库,一个用于团队 A 上下文文件,另一个用于团队 B 上下文文件。所以总共会有三个存储库,(1) 应用程序,(2) 团队 A 的上下文文件,(3) 团队 B 的上下文文件 可能对上下文文件进行加密,因此他们看不到实际值? 还有其他的吗?

我希望这有点清楚。

非常感谢!

【问题讨论】:

【参考方案1】:

如果您对所有内容都使用属性占位符,则上下文文件中应该没有任何敏感内容。

你需要做两件事:

1) 为每个团队使用不同的spring profiles,以便他们根据需要运行不同的应用程序。

2) 使用Property Placeholders 允许将所有敏感信息添加到属性文件中,而不是直接添加到上下文文件中。

然后,您可以为团队 A 和团队 B 提供不同的属性文件,并要求他们使用来自相同代码库和相同上下文文件的不同配置文件。

【讨论】:

过去几天我在 #1 上工作,现在正在运行应用程序,上下文文件中没有敏感数据!谢谢你的观点。关于#2,我需要阅读更多关于“个人资料”的内容,以确定如何在我的案例中应用它。我想将您的回复设置为答案,但我没有看到该选项。也许我还没有积分?

以上是关于如何防止特定组访问某些 Spring 应用程序上下文文件?的主要内容,如果未能解决你的问题,请参考以下文章

当特定的弹簧配置文件处于活动状态时,如何防止运行测试?

Spring boot,如何隐藏或防止加载实体的某些属性

如何防止访问 Symfony 2 中的特定路由

Spring Data Rest - 如何防止通过 PATCH 更新特定字段?

如何保护 Spring Security 中受 IP 地址限制的匿名访问?

如何使用 Appsync 在 cognito 中授予对某些用户组的访问权限