如何在ml-gradle(MarkLogic)项目中访问Azure Key Vault获取密码
在Gradle MarkLogic项目中使用Azure Key Vault存储的密码
步骤1:添加Azure Key Vault相关依赖
在项目的build.gradle(或build.gradle.kts)中引入访问Azure Key Vault所需的Gradle插件和依赖库:
plugins { id "com.microsoft.azure.azure-keyvault" version "1.12.0" } dependencies { implementation "com.azure:azure-security-keyvault-secrets:4.6.0" implementation "com.azure:azure-identity:1.12.0" }
步骤2:配置Key Vault访问权限
- 本地开发:执行
az login登录你的Azure账号,确保该账号拥有目标Key Vault的Secret Reader权限 - 生产环境:为运行Gradle的服务主体/托管身份分配Key Vault的
Secret Reader角色,避免使用账号密码硬编码
步骤3:读取密钥并配置MarkLogic连接
在build.gradle中添加代码,从Key Vault拉取密码,结合已有的username属性完成MarkLogic配置:
import com.azure.identity.DefaultAzureCredentialBuilder import com.azure.security.keyvault.secrets.SecretClient import com.azure.security.keyvault.secrets.SecretClientBuilder // 初始化Key Vault客户端 def keyVaultUrl = "https://你的密钥保管库名称.vault.azure.net/" def secretClient = new SecretClientBuilder() .vaultUrl(keyVaultUrl) .credential(new DefaultAzureCredentialBuilder().build()) .buildClient() // 获取存储的密码 def mlPassword = secretClient.getSecret("你的密码密钥名称").getValue() // 配置MarkLogic连接参数 marklogic { host = "你的MarkLogic主机地址" port = 8000 username = project.properties["username"] // 复用已配置的username属性 password = mlPassword authType = "DIGEST" }
步骤4:避免敏感信息泄露
- 不要硬编码Key Vault地址或密钥名称,改用Gradle属性或环境变量传递:
def keyVaultUrl = project.findProperty("keyVaultUrl") ?: System.getenv("AZURE_KEY_VAULT_URL") def secretName = project.findProperty("mlPasswordSecretName") ?: System.getenv("ML_PASSWORD_SECRET_NAME") - 在
.gitignore中排除包含敏感属性的配置文件,防止提交到版本库
内容的提问来源于stack exchange,提问作者Rashmi Ranjan Acharya
相关产品推荐
相关产品推荐

