如何管理数据流java管道中的属性和秘密值?

kse8i1jr  于 2021-06-26  发布在  Java
关注(0)|答案(2)|浏览(260)

我有一些用java编写的数据流管道,它们在不同的环境/项目(开发、uat、生产)的gcp上运行。目前,环境配置(主要是云sql示例和bigquery数据集的连接参数)使用java类中的静态Map(key=env,value=map of properties)和实用程序类来管理,以便从云存储中动态加载其他文件。
在这种情况下,管理配置的最佳实践(如果有的话)是什么?
基本上,我看到两种配置参数:
普通值(在spring应用程序中存储在普通属性文件中的内容)
秘密值(包含必须加密的数据的属性文件—数据库的用户名/密码、api密钥—在k8s上下文中可以作为秘密装载的内容)
谢谢。

qvtsj1bj

qvtsj1bj1#

在google云平台中处理秘密值的一种方法是使用secretmanager处理对存储密码的加密和访问控制。
在java代码中,您可以使用GoogleCloudSecretManagerMaven模块来获取所需的秘密值

uz75evzq

uz75evzq2#

我想您会发现本教程对如何从数据流管道访问secretmanager很有帮助
“到目前为止,dataflow还不提供存储和访问机密的本机支持。为了保护这些秘密,通常的方法是在运行数据管道时使用云kms对秘密进行加密和解密。通过新推出的secret manager,我们现在可以将这些机密存储在secret manager中,并从我们的管道访问它们,从而提供更好的安全性和易用性。”
下面的代码使用secretmanagersdk访问给定jdbc url secret名称的密钥。

private static String jdbcUrlTranslator(String jdbcUrlSecretName) {
  try (SecretManagerServiceClient client = SecretManagerServiceClient.create()) {
    AccessSecretVersionResponse response = client.accessSecretVersion(jdbcUrlSecretName);

    return response.getPayload().getData().toStringUtf8();
  } catch (IOException e) {
    throw new RuntimeException("Unable to read JDBC URL secret");
  }
}

public static void main(String[] args) {
  PipelineOptionsFactory.register(MainPipelineOptions.class);

  MainPipelineOptions options =
      PipelineOptionsFactory.fromArgs(args)
          .withValidation()
          .as(MainPipelineOptions.class);

  NestedValueProvider<String, String> jdbcUrlValueProvider =
      NestedValueProvider.of(
          options.getJdbcUrlSecretName(), MainPipeline::jdbcUrlTranslator);

  Pipeline pipeline = Pipeline.create(options);

  pipeline
      .apply("SQL Server - Read Sales.Customers_Archive",
          JdbcIO.<KV<Integer, String>>read()
              .withDataSourceConfiguration(
                  JdbcIO.DataSourceConfiguration.create(
                      StaticValueProvider.of("com.microsoft.sqlserver.jdbc.SQLServerDriver"),
                      jdbcUrlValueProvider)
              );

  // Other transforms

  pipeline.run();
}

相关问题