访问 Azure Key Vault 进行本地开发
Accessing Azure Key Vault for local development
我正在尝试从本地开发角度使用 Service Principle 凭据访问本地 Azure Key Vault。
但 Azure SDK 似乎总是在检查 IMDS 连接(“169.254.169.254”)
我用来取回秘密的代码:
SecretClient secretClient = new SecretClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
我还添加了以下变量作为环境变量:
- AZURE_CLIENT_ID
- AZURE_CLIENT_SECRET
- AZURE_TENANT_ID
有人可以帮助我了解如何使用 java
中的服务原则从我们的本地访问 Azure 资源,例如 Key Vault
要使用服务主体在本地进行身份验证,只需使用 ClientSecretCredential
。
样本:
import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
import com.azure.security.keyvault.secrets.models.KeyVaultSecret;
public class vacate {
public static void main(String[] args) {
String clientId="xxxxxx";
String clientSecret="xxxxxx";
String tenantId="xxxxxx";
ClientSecretCredential credential1 = new ClientSecretCredentialBuilder()
.tenantId(tenantId)
.clientId(clientId)
.clientSecret(clientSecret)
.build();
SecretClient secretClient = new SecretClientBuilder()
.vaultUrl("<your-key-vault-url>")
.credential(credential1)
.buildClient();
//do other things
}
}
其实我觉得你用的DefaultAzureCredential
应该也可以,它会尝试在following order中创建一个有效的凭证,如果你已经正确设置了环境变量,它应该可以,如果不,只要像上面那样使用 ClientSecretCredential
就可以了。
它解决我的问题的方式(可能也会帮助其他人):
确实如Joy的回答中所说,你需要使用ClientSecretCredential或者你也可以使用Azure Toolkit for IntelliJ进行身份验证
我使用的是旧的 Azure 身份,它将转到旧的身份验证端点 login.microsoftonline.com/{{tenant_id}},在升级到最新版本(1.2.1)后得到修复。 3).现在它转到 login.microsoftonline.com/common/oauth2
的新终点
对我来说,我也遇到了很多 SSL 错误。要修复它,请将以下证书添加到受信任的证书中:
- DigiCert 全球根 CA
- DigiCert SHA2 安全服务器 CA
如果您的网络在代理后面,您还需要配置代理并将相应的 CA 根证书添加到您的密钥库和信任库。
我正在尝试从本地开发角度使用 Service Principle 凭据访问本地 Azure Key Vault。
但 Azure SDK 似乎总是在检查 IMDS 连接(“169.254.169.254”)
我用来取回秘密的代码:
SecretClient secretClient = new SecretClientBuilder()
.vaultUrl(keyVaultUri)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
我还添加了以下变量作为环境变量:
- AZURE_CLIENT_ID
- AZURE_CLIENT_SECRET
- AZURE_TENANT_ID
有人可以帮助我了解如何使用 java
中的服务原则从我们的本地访问 Azure 资源,例如 Key Vault要使用服务主体在本地进行身份验证,只需使用 ClientSecretCredential
。
样本:
import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
import com.azure.security.keyvault.secrets.models.KeyVaultSecret;
public class vacate {
public static void main(String[] args) {
String clientId="xxxxxx";
String clientSecret="xxxxxx";
String tenantId="xxxxxx";
ClientSecretCredential credential1 = new ClientSecretCredentialBuilder()
.tenantId(tenantId)
.clientId(clientId)
.clientSecret(clientSecret)
.build();
SecretClient secretClient = new SecretClientBuilder()
.vaultUrl("<your-key-vault-url>")
.credential(credential1)
.buildClient();
//do other things
}
}
其实我觉得你用的DefaultAzureCredential
应该也可以,它会尝试在following order中创建一个有效的凭证,如果你已经正确设置了环境变量,它应该可以,如果不,只要像上面那样使用 ClientSecretCredential
就可以了。
它解决我的问题的方式(可能也会帮助其他人):
确实如Joy的回答中所说,你需要使用ClientSecretCredential或者你也可以使用Azure Toolkit for IntelliJ进行身份验证
我使用的是旧的 Azure 身份,它将转到旧的身份验证端点 login.microsoftonline.com/{{tenant_id}},在升级到最新版本(1.2.1)后得到修复。 3).现在它转到 login.microsoftonline.com/common/oauth2
的新终点对我来说,我也遇到了很多 SSL 错误。要修复它,请将以下证书添加到受信任的证书中:
- DigiCert 全球根 CA
- DigiCert SHA2 安全服务器 CA
如果您的网络在代理后面,您还需要配置代理并将相应的 CA 根证书添加到您的密钥库和信任库。