Есть ли в Java работающий код для подключения к Azure Keyvault для получения секретов с использованием идентификаторов управляемых служб - PullRequest
0 голосов
/ 02 мая 2019

Я создаю приложение, которое подключается к Azure keyvault для извлечения его секретов с использованием идентификатора управляемой службы.

Я пытался соединиться с keyvault, не используя управляемые удостоверения, и это работало, но с MSI я не могу соединиться. Несколько вещей, которые я пробовал:

1) Время ожидания этого фрагмента кода:

MSICredentials credentials = new MSICredentials(AzureEnvironment.AZURE);
log.debug("Credentials acquired");
KeyVaultClient keyVaultClient =  new KeyVaultClient(credentials);
log.debug("Key Vault client created");
String secret = 
    keyVaultClient.getSecret("https://<key-vault-name>.vault.azure.net/",
    "<secret-name>").value(); 

2) Этот фрагмент кода выдает ошибку в первой строке, говоря, что конечная точка == ноль. что, глядя на библиотеку, означает, что мне нужно предоставить MSI_ENDPOINT, что я не уверен, что это такое.

AppServiceMSICredentials credentials = 
        new AppServiceMSICredentials(AzureEnvironment.AZURE);

log.debug("Credentials acquired");

    KeyVaultClient keyVaultClient =  new KeyVaultClient(credentials);

    log.debug("Key Vault client created");

    String secret = 
        keyVaultClient.getSecret("https://<key-vault-name>.vault.azure.net/",
        "<secret-name>").value(); 

Любая помощь с этим приветствуется.

1 Ответ

0 голосов
/ 03 мая 2019

Мы можем использовать AppServiceMsiCredential класс для достижения результата

, вы можете прочитать все о параметре здесь

import com.microsoft.azure.AzureEnvironment;
import com.microsoft.azure.credentials.AppServiceMSICredentials;
import com.microsoft.azure.keyvault.KeyVaultClient;
import com.microsoft.azure.keyvault.models.KeyBundle;

AppServiceMSICredentials credentials = new AppServiceMSICredentials(AzureEnvironment.AZURE);
KeyVaultClient keyVaultClient = new KeyVaultClient(credentials);
keyVaultClient.getSecret("https://xxxx.vault.azure.net","secretName");

Когда MSIВключено для службы приложений / любого ресурса, доступны две переменные среды MSI_ENDPOINT и MSI_SECRET (обратите внимание, что они меняются при каждом перезапуске службы приложений) и могут использоваться для получения токена доступа для данного ресурса.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...