Вызов для возврата секрета из KeyVault через SecretClient с использованием учетных данных управляемой идентификации не возвращается из вызова Java
Я запускаю Ubuntu на виртуальной машине Linux в облаке Azure. Для этой виртуальной машины установлено значение «Системная идентификация». Мое хранилище ключей предоставило моей виртуальной машине роль администратора хранилища ключей.
Мой код Java ниже взят из примера на https://github.com/Azure/azure-sdk-for-java/wiki/Azure-Identity-Examples Результат показан ниже. У меня включена отладка для com.azure. Когда он создает учетные данные, я получаю одну строку выходных данных из кода Azure SDK, который ищет переменные среды.
LOGGER.debug("Retrieve Credentials from Azure");
KeyVaultSecret keyVaultSecret = null;
try {
String keyVaultURL = "https://" + uCCVMAttributesUpdate.getAzureKeyVault() +
AZURE_KEYVAULT_SUFFIX;
LOGGER.debug("keyVaultURL<" + keyVaultURL + ">");
SecretClient secretClient = new SecretClientBuilder()
.httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS))
.vaultUrl( keyVaultURL )
.credential (new ManagedIdentityCredentialBuilder().build() )
.buildClient();
LOGGER.debug("SecretClient created");
keyVaultSecret = secretClient.getSecret(AZURE_SECRET_NAME);
LOGGER.debug("Secrets retrieved");
} catch (Exception e) {
LOGGER.error("Caught exception reading Azure secrets", e);
}
Вывод:
2021-03-22 15:21:48 - [pool-3-thread-1] [DEBUG] [com.impl.ServiceImpl] - Получение учетных данных из Azure 2021-03-22 15:21:48 - [pool-3 -thread-1] [DEBUG] [com.impl.ServiceImpl] - keyVaultURL https://KeyVaultName.vault.azure.net/ 2021-03-22 15:21:48 - [pool-3-thread-1] [DEBUG] [com.azure.core.util.logging.ClientLogger] - Azure Identity = ›Найдено следующие переменные среды:
Кто-нибудь знает, в чем может быть проблема, или что еще я мог сделать, чтобы получить дополнительную отладку?
Мне нужно выяснить, почему вызов не возвращается, не генерирует исключение или не выводит дополнительную отладку. Кроме того, я не понимаю, когда он ищет переменные среды, поскольку я использую ManagedIdentityCredentialBuilder.
Кстати, я получил тот же результат, используя DefaultAzureCredential, который, как объясняется в следующей ссылке, сначала попытается найти управляемое удостоверение, а затем откатится к другим методам, которые используют переменные среды: https://docs.microsoft.com/en-us/java/api/overview/azure/identity-readme?view=azure-java-stable
Спасибо за любую помощь.