如何防止特定组访问某些 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 Data Rest - 如何防止通过 PATCH 更新特定字段?