集中属性文件管理

时间:2016-06-28 04:17:28

标签: mule

全部,

我正在寻找一个集中的物业管理解决方案,例如:我在Mule中有一个流程/应用程序。我有不同环境的多个属性文件。与其他任何应用程序一样,它非常有用。

这些文件中配置的属性几乎都是用户名,密码,目标端点等。但我不想在这些简单的文件中公开它们。相反,我正在寻找一个集中式解决方案,我可以将我的属性配置为键,只需使用我的应用程序中的键。

像这样的东西

数据库用户= $ {中央 - 属性 - key.database.user}

而不是

数据库用户= dbuser1

我知道,我可以在这里使用类似Zuul的内容。但据我所知,Zuul没有托管解决方案。 (我不想在内部托管和管理任何事情;))

想法?还有其他最佳方法吗?

4 个答案:

答案 0 :(得分:2)

我之前使用过Zuul和Mule。它比手动处理属性文件更容易。优点是: 1)基于UI的键值对定义 2)环境分离(如具有DEV,TEST和UAT配置的Zuul实例以及PROD配置的单独实例) 3)Mule支持属性的Zuul集成 4)Zuul中的数据可以加密(它在内部维护数据库中的数据) 5)可以对配置数据进行用户访问控制

Zuul或使用Property / Secure属性占位符的一个缺点是我们无法动态访问值 - Mule强制重新部署app。为了解决这个问题,我们构建了包装器API,它在运行时从Zuul(基于环境)获取属性。这些在Mule / Zuul中没有开箱即用,但它主要是为了避免重启。

谢谢,

Ananth

答案 1 :(得分:0)

我会在回购中使用多个文件,例如dev.properties,qa.properties和stage.properties。这些将保留在项目中。然后prod.properties将留在我的个人机器上。

然后我会将其添加到mule配置中:

<context:property-placeholder location="classpath:${env}.properties"/>

在mule-app.properties中我会添加:

env=dev

如果有人在dev,qa上篡改了数据库或端点,那么第一阶段就不会像我们那样担心如果它们会损害生产。对于生产,我会编写将prod.properties复制到项目中的操作,设置env = prod,然后在部署准备好放入生产服务器的app目录之前执行Maven clean包。

你怎么看?如果您同意,请告诉我,并就答案给我一个投票。

答案 2 :(得分:0)

我希望你已经在使用大卫提到的内容了。我还看到ZUUL的博文是针对旧版本的mule。

正如我从您的解释中所理解的那样,虽然您要求存储属性的集中式机制,但是对它的需求是安全性和相应的以下答案。

骡子现在有一个更好的功能,如下面的

  • 安全属性:当我们使用Anypoint云时,提到的属性将为Asterisked,例如: ****。无需提供属性文件中的属性或保持为空,并且在部署Admin时提供详细信息并且还将屏蔽
  • 属性占位符加密:使用时,属性文件中的属性将被加密

请仔细阅读以下链接以获取更多信息。

https://docs.mulesoft.com/mule-user-guide/v/3.6/mule-credentials-vault

https://docs.mulesoft.com/mule-user-guide/v/3.6/installing-anypoint-enterprise-security

为此,您需要将Blele安全模块从bleow站点安装到Anypoint studio(就像eclipse)

http://security-update-site.s3.amazonaws.com/

在那里安装安全模块表单。

Mule还提供了其他功能,作为企业安全解决方案的一部分。

答案 3 :(得分:0)

对于特定于环境的密码,我们通常在上下文中添加最后一个文件:property-placeholder -

<context:property-placeholder ignore-resource-not-found="true" 
    location="project-common.properties,env/project-${env_name}.properties,file:///var/mule/properties/project.properties"/>

当然,您可以按照您想要的方式命名属性。然后,所有密码都将转到服务器上的file:///var/mule/properties/project.properties,并且只有mule用户具有读取权限。