Encryption 如何在cloud foundry中加密用户提供的服务值?

Encryption 如何在cloud foundry中加密用户提供的服务值?,encryption,spring-boot,cloud-foundry,Encryption,Spring Boot,Cloud Foundry,我正试图在CloudFoundry上加密我的用户名和密码。目前,我将这些值存储为CUPS(VCAP_服务) 我想对它进行加密,这样它会显示某种类型的令牌/加密或UUID,而不是我的实际用户名和密码。我如何能够加密这些值,以便在查看我的VCAP_服务时不会暴露这些值 云铸造提供的服务示例 VCAP_SERVICES= { cleardb: [ { name: "cleardb-1", label: "cleardb", plan: "spark",

我正试图在CloudFoundry上加密我的用户名和密码。目前,我将这些值存储为CUPS(VCAP_服务)

我想对它进行加密,这样它会显示某种类型的令牌/加密或UUID,而不是我的实际用户名和密码。我如何能够加密这些值,以便在查看我的VCAP_服务时不会暴露这些值

云铸造提供的服务示例

VCAP_SERVICES=
{
  cleardb: [
    {
      name: "cleardb-1",
      label: "cleardb",
      plan: "spark",
      credentials: {
        SPRING_DATASOURCE_URL: "jdbc:oracle:thin:@//spring.guru.csi0i9rgj9ws.us-east-1.rds.a‌​mazonaws.com:1521/OR‌​C",
        SPRING_DATASOURCE_USERNAME: "UserAdmin",
        SPRING_DATASOURCE_PASSWORD: "p4ssw0rd",
        SPRING_DATASOURCE_initialize: "false"
      }
    }
  ]
正如您所看到的,上面的VCAP_服务是公开的,我如何对其进行加密,以便像下面的示例一样对用户名和密码进行加密

所需输出

 Username: hVB5j5GgdiP78xCSV9sNv4FeqQJducBxXlB81090ozYB
 Password: hVB523fff78xCSV9sNv4FeqQ341090324234fdfdsrrf 

根据要归档的内容,您可以使用您提到的spring vault或hashicorp service broker的外部vault实例在应用程序中以安全的方式检索/存储凭据

另外,屏幕截图上的Mongodb服务凭据不是加密的,而是由ServiceBroker随机生成的

最重要的是,您不应该在应用程序清单中存储/提供服务凭据,而是通过解析环境变量VCAP_services来获取此凭据(对于绑定的cloudfoundry服务)。


外部服务应通过CUPS呈现给cloud foundry应用程序,具体取决于您想要归档的内容。您可以使用您提到的spring vault或hashicorp service broker的外部vault实例在应用程序中以安全的方式检索/存储凭据

另外,屏幕截图上的Mongodb服务凭据不是加密的,而是由ServiceBroker随机生成的

最重要的是,您不应该在应用程序清单中存储/提供服务凭据,而是通过解析环境变量VCAP_services来获取此凭据(对于绑定的cloudfoundry服务)。


外部服务应该通过CUPS提供给cloud foundry应用程序,因为您似乎已经在使用Spring,您可能需要查看Spring云配置

对于较大的项目,它可以使您的配置易于外部化和管理。一种常见的设置是将配置存储在Git中(但还有其他后端,包括Vault),SpringCloudConfig然后作为服务器运行,并将配置提供给正在运行的应用程序(客户端)。您的应用程序(客户端)不需要做更多的事情,只需要包含Spring云配置依赖项和几行配置。设置是通过环境和PropertySource抽象自动获取和集成的,这使得集成非常干净,您不需要做很多工作

对于较小的项目,它的开销可能比您希望的要大。对于启动,您必须运行Spring云服务器。如果您只有一个或两个小应用程序,则运行SCC服务器的资源可能超过您的一个或多个应用程序的总数。复杂性将是另一个问题。使用SCC肯定会增加一些复杂性和可能的故障场景。您需要充分了解发生的情况,以便在出现问题时进行故障排除

您可能需要考虑的是较小的项目,只是在CFF中使用用户提供的服务。这些都是用来存储配置设置的中心位置(不必仅仅是数据库,也可以是键和其他东西)。然后,您可以将这些应用绑定到应用,以向该应用公开配置设置

云控制器管理谁可以访问您的服务,这有一定的安全性。我相信云控制器存储的信息在静止时也是加密的,这是一个优点。也就是说,信息是通过环境变量(即VCAP_服务)向应用程序公开的,因此容器中任何可以看到环境变量的内容都可以读取您的设置


使用用户提供的服务是解决环境变量的一个步骤。不是从安全的角度来看,而是从管理的角度来看。您可以创建一次用户提供的服务,然后将其绑定到任意数量的应用程序。使用env变量,您需要为每个应用程序设置这些变量。它更乏味,而且容易出错。您还可以将服务名称放入manifest.yml文件中,使其自动绑定到应用程序,并仍将其检查到源代码管理中。如果您将带有敏感信息的env变量放入manifest.yml中,您可能不想将其签入源代码管理,并且必须更加小心地处理该文件。

由于您似乎已经在使用Spring,您可能需要查看Spring云配置

对于较大的项目,它可以使您的配置易于外部化和管理。一种常见的设置是将配置存储在Git中(但还有其他后端,包括Vault),SpringCloudConfig然后作为服务器运行,并将配置提供给正在运行的应用程序(客户端)。您的应用程序(客户端)不需要做更多的事情,只需要包含Spring云配置依赖项和几行配置。设置是通过环境和PropertySource抽象自动获取和集成的,这使得集成非常干净,您不需要做很多工作

对于较小的项目,它的开销可能比您希望的要大。对于启动,您必须运行Spring云服务器。如果您只有一个或两个小应用程序,则运行SCC服务器的资源可能超过您的一个或多个应用程序的总数。复杂性将是另一个问题。使用SCC肯定会增加一些复杂性和可能的故障场景。您需要充分了解发生的情况,以便在出现问题时进行故障排除

您可能需要考虑的是较小的项目,只是在CFF中使用用户提供的服务。这些都是用来存储配置设置的中心位置(不必只是数据库)。

 Username: hVB5j5GgdiP78xCSV9sNv4FeqQJducBxXlB81090ozYB
 Password: hVB523fff78xCSV9sNv4FeqQ341090324234fdfdsrrf