首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安全服务帐户凭据json密钥kotlin

安全服务帐户凭据json密钥kotlin
EN

Stack Overflow用户
提问于 2022-03-16 13:01:16
回答 2查看 298关注 0票数 1

因此,我试图在本地主机上获取服务应用程序凭据,但遇到了一些问题。我创建并下载了json密钥,我希望保护它们,而不是让它们成为纯文本。

我想知道最好的方法。我有这样的代码:

代码语言:javascript
复制
fun getServiceAccountCredentials(
    pathToFallBackCredentialsFile: String
): ServiceAccountCredentials {
    return try {
        getApplicationDefault() as ServiceAccountCredentials
    } catch (e: IOException) {
        return ServiceAccountCredentials.fromStream(FileInputStream(pathToFallBackCredentialsFile))
    } catch (e: ClassCastException) {
        return ServiceAccountCredentials.fromStream(this::class.java.classLoader.getResourceAsStream(pathToFallBackCredentialsFile))
    }
}

这里的问题是,我的JSON文件在我的存储库中以纯文本形式公开。

EN

回答 2

Stack Overflow用户

发布于 2022-03-16 14:23:40

选项

  1. 对它们进行加密,然后让应用程序解密它们。然而,如果解密密钥位于同一个存储库中,那么您只将问题转移到了另一个地方,尽管有人需要有人读取/执行您的代码才能获得它们。
  2. 将如何运行您的应用程序,例如在库内的Docker容器中运行,或者在您的数据中心运行的另一个应用程序?如果是这样,那么您将责任传递给应用程序容器管理器,在启动时注入凭据(和其他环境细节),例如使用Kubernetes配置地图。我们这样做,并将生产配置映射保存在单独的DevOps中--只有repository.
  3. There才是解决此问题的专门机密管理解决方案,您的应用程序在运行时向机密管理器发出了它所需的机密信息,例如https://www.hashicorp.com/products/vault或云供应商

的一些自定义。

票数 1
EN

Stack Overflow用户

发布于 2022-03-28 10:25:57

我找到了解决办法。

我从GCP中激活了秘密管理器,并在那里添加了JSON文件。

要获取java/kotlin应用程序中的秘密(如果没有spring,则可以使用“spring gcp-初学者-分泌管理器”),我使用了以下代码。

代码语言:javascript
复制
fun accessSecretVersion(secretId: String?, versionId: String?): String {
    val googleCredentials = GoogleCredentials.getApplicationDefault() as UserCredentials
    val projectId = googleCredentials.quotaProjectId
    return getSecret(projectId, secretId, versionId)
}

fun getSecret(projectId: String?, secretId: String?, versionId: String?): String {
    SecretManagerServiceClient.create().use { client ->
        val secretVersionName = SecretVersionName.of(projectId, secretId, versionId)

        val response = client.accessSecretVersion(secretVersionName)

        return response.payload.data.toStringUtf8()
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71497577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档