Spring Boot Gradle 插件凭据

Posted

技术标签:

【中文标题】Spring Boot Gradle 插件凭据【英文标题】:Spring Boot Gradle plugin credentials 【发布时间】:2022-01-16 10:30:58 【问题描述】:

我正在使用 Spring Boot Gradle 插件来构建 Docker 映像并将其推送到远程 Docker 注册表

bootBuildImage 
    imageName = "docker-repo/app-name"
    publish = true
    docker 
        publishRegistry 
            username = project.property('repoUsername')
            password = project.property('repoPassword')
        
    

Docker 存储库凭据存储在 ~/.gradle/gradle.properties 中。

这安全吗?是否需要在 CI/CD 环境中存储类似的 ~/.gradle/gradle.properties 文件?

从安全角度来看,最好的方法是什么?

【问题讨论】:

【参考方案1】:

我对此(意见)的看法是否定的。

使用 gradle.properties 将凭据存储为纯文本是一个坏主意。但它仍然可以广泛使用。

对我来说,我宁愿使用环境变量作为它高于纯文本的一层,在那里很难找到。

我可以向你保证,这两种方式都不好,但我想环境变量比纯文本更棘手。

这是我检索环境变量或查看 gradle.properties 的 gradle 方法

artifactoryUser = getConfigurationProperty("ARTIFACTORY_USER", "artifactoryUser", null)
artifactoryPwd = getConfigurationProperty("ARTIFACTORY_PWD", "artifactoryPwd", null)

String getConfigurationProperty(String envVar, String sysProp, String defaultValue) 
    def result = System.getenv(envVar) ?: project.findProperty(sysProp)
    result ?: defaultValue

我使用它,我确信有一种更安全的方法。

【讨论】:

以上是关于Spring Boot Gradle 插件凭据的主要内容,如果未能解决你的问题,请参考以下文章

多模块 Spring Boot 项目中的 Gradle 依赖插件

Spring Boot gradle 插件强制 Mockito 版本

spring boot gradle 插件、应用程序插件和 gradle 2.3 包装器

如何使用 spring-boot gradle 插件进行 proguard

使用Spring Boot Gradle插件的多模块项目

在父 build.gradle 中找不到 ID 为 spring-boot 的插件