Вызов для возврата секрета из KeyVault через SecretClient с использованием учетных данных управляемой идентификации не возвращается из вызова Java
Вызов для возврата секрета из 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] - Получение учетных данных из Azure2021-03-22 15:21:48 - [pool-3-thread-1][DEBUG][com.impl.ServiceImpl] - keyVaultURLhttps://KeyVaultName.vault.azure.net/2021-03-22 15:21:48 - [pool-3-thread-1][ ОТЛАДКА][com.azure.core.util.logging.ClientLogger] - Идентификация Azure => Обнаружены следующие переменные среды:
Кто-нибудь знает, в чем может быть проблема, или что еще я мог сделать, чтобы получить дополнительную отладку?
Мне нужно выяснить, почему вызов не возвращается, не генерирует исключение или не выводит дополнительную отладочную информацию. Кроме того, я не понимаю, когда он ищет переменные среды, поскольку я использую ManagedIdentityCredentialBuilder.
Кстати, я получил тот же результат, используя DefaultAzureCredential, который в следующей ссылке объясняет, сначала попытается найти управляемое удостоверение, а затем откатиться к другим методам, которые используют переменные среды:https://docs.microsoft.com/en-us/java/api / обзор / лазурный / идентификатор-readme? view = лазурный-Java-стабильный
Спасибо за любую помощь.
2 ответа
Код выглядит правильно. Вы можете где-нибудь использовать DefaultAzureCredential, только EnvironmentCredential относится к переменным среды.
Примечание: не работает в локальной среде, см. Здесь .
В
ManagedIdentityCredential
работает только в средах Azure служб, поддерживающих аутентификацию с управляемой идентификацией. Это не работает в локальной среде.
Эта строка, кажется, просто логин в лазурном идентификаторе даже для MSI.
Но приведенное выше не решит вашу проблему. Возможно, вы можете попробовать последнюю версию azure-identity (я думаю, что это 1.2.4) и поместить ее в первую из ваших зависимостей (чтобы убедиться, что последняя версия azure-core).
И какой-либо другой вывод после этого журнала?