【问题标题】:database credentials and leiningen?数据库凭据和 leiningen?
【发布时间】:2012-12-15 21:07:56
【问题描述】:

我正在开发一个 clojure Web 应用程序,使用 leiningen 2 进行构建和部署。这是一个非常普通的 web 应用程序,我正在使用 compojure、ring 和 lein-beanstalk。我的应用需要同时使用数据库凭据和 S3 凭据,我不确定在我的应用中存储和访问它们的最佳方式。

使用 leiningen 2 处理需要与我的应用程序一起部署的数据库凭据等敏感信息的常用方法是什么?

我可以在弹性豆茎上设置环境变量,但如果可能的话,我想避免这条路线。

【问题讨论】:

    标签: clojure leiningen amazon-elastic-beanstalk


    【解决方案1】:

    有两种方法。一种是使用环境变量,如果您的所有配置值都是字符串并且您不需要任意嵌套,这很好。您最好的选择是 Environ:https://github.com/weavejester/environ

    另一个不错的选择是从类路径中读取 Clojure 数据文件。您可以使用dev-resources 目录将开发配置设置检查到您的项目中,并使用您的部署工具将生产配置放在类路径中。这里的优点是您的配置可以是带有嵌套映射等的任意 Clojure 值。对此最好的是 Carica:https://github.com/sonian/carica

    【讨论】:

    • 感谢您,environ 正是我所需要的!再次感谢,也感谢 lein,太棒了
    【解决方案2】:

    我非常喜欢使用环境变量来跟踪变量环境。 ;-)

    其他人使用-Ddb=foo 选项传递它们并使用(System/getProperty "db") 读取它们

    【讨论】:

      【解决方案3】:

      看看 Confijulate - 我为实现此模式而创建的库:

      https://github.com/bbbates/confijulate

      您可以将密码或密钥存储在外部文件中,并通过系统属性加载。在连接到 S3 或 dB 的函数中,您可以使用通过相同机制加载的密钥对其进行解密。只需确保您读入的文件只能由 Web 用户(tomcat 或 jboss 或您与 beanstalk 一起使用的任何容器)读取。

      【讨论】:

        猜你喜欢
        • 2021-10-24
        • 2016-09-25
        • 2014-10-19
        • 2014-10-17
        • 2021-04-12
        • 1970-01-01
        • 2016-02-27
        • 2021-03-10
        • 1970-01-01
        相关资源
        最近更新 更多