Служба приложений контейнера Docker на лазурном языке. Как использовать DefaultAzureCredential для хранилища ключей

У меня есть служба контейнерных приложений, работающая в лазурном режиме, и она отлично работает.

Однако, если я хочу запустить этот контейнер локально, это не удастся, потому что он не может пройти аутентификацию для чтения хранилища ключей в Azure.

      .ConfigureAppConfiguration((context, config) =>
{
    var builtConfig = config.Build();

    string SecretUri = $"https://{builtConfig["KeyVaultName"]}.vault.azure.net/";
    var secretClient = new SecretClient(new Uri(SecretUri), new DefaultAzureCredential(new DefaultAzureCredentialOptions { ExcludeSharedTokenCacheCredential = true }));
    config.AddAzureKeyVault(secretClient, new KeyVaultSecretManager());
})

При работе в лазурном режиме DefaultAzureCredential наследует свои разрешения от службы приложений, и это работает нормально.

Однако, если я хочу запустить контейнер локально для тестирования вне Azure, он не знает, какие разрешения использовать. Как мне с этим справиться? Могу ли я каким-то образом указать контейнеру, какие разрешения использовать, не внося изменений в контейнер?

2 ответа

Я обычно храню учетные данные для разработки Azure Key Vault по умолчанию в параметрах пользователя локально, когда я разрабатываю в Visual Studio. Затем я помещаю те же учетные данные, что и переменные среды, в Службы приложений Azure. Тогда он будет работать в обоих местах, если учетные данные названы одинаково.

Вы получаете доступ к секретам локального пользователя, щелкнув проект правой кнопкой мыши в Visual Studio.

Смотрите документацию для более подробной информации.

В DefaultAzureCredentialпопробует несколько типов учетных данных в порядке, показанном здесь , поэтому, если не устанавливать переменную среды и исключить SharedTokenCacheCredential с ExcludeSharedTokenCacheCredential = true, он будет использовать VisualStudioCredential to auth, то есть учетная запись пользователя, в которую вы вошли в VS.

Чтобы он работал локально, вам нужно добавить свою учетную запись пользователя в Access Policiesхранилища ключей с правильными разрешениями, следуйте этому документу . (Или, если вы выберете <tcode id="16571909"></tcode> в Access policies лезвие хранилища ключей, роль RBAC Key Vault Administratorтребуется, следуйте этому документу, чтобы добавить его.) После добавления он будет работать нормально.

Другие вопросы по тегам