Служба приложений контейнера 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
требуется, следуйте этому документу, чтобы добавить его.) После добавления он будет работать нормально.