Estoy tratando de acceder a mi keyvault de azure que tengo configurado desde mi aplicación web que, debido al legado, no se puede registrar en azure.
Por ahora, a través de los servicios conectados, "conecté" la aplicación con Key Vault, que luego modificó el archivo web.config e instaló un montón de archivos nuget.
Cuando ahora trato de obtener el secreto que he almacenado en mi bóveda de claves azul a través de
var secret = ConfigurationManager.AppSettings["ApiKey"];Parece que recibo este error cuando ejecuto el sitio
Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException: Parameters: Connectionstring: [No connection string specified], Resource: https://vault.azure.net, Authority: https://login.windows.net/311a22fd-9576-40ab-977e-a2f0a4d2cd36. Exception Message: Tried the following 4 methods to get an access token, but none of them worked. Parameters: Connectionstring: [No connection string specified], Resource: https://vault.azure.net, Authority: https://login.windows.net/311a22fd-9576-40ab-977e-a2f0a4d2cd36. Exception Message: Tried to get token using Managed Service Identity. Unable to connect to the Managed Service Identity (MSI) endpoint. Please check that you are running on an Azure resource that has MSI setup. Parameters: Connectionstring: [No connection string specified], Resource: https://vault.azure.net, Authority: https://login.windows.net/311a22fd-9576-40ab-977e-a2f0a4d2cd36. Exception Message: Tried to get token using Visual Studio. Access token could not be acquired. Visual Studio Token provider file not found at "C:\Users\local.temp.page\AppData\Local\.IdentityService\AzureServiceAuth\tokenprovider.json" Parameters: Connectionstring: [No connection string specified], Resource: https://vault.azure.net, Authority: https://login.windows.net/311a22fd-9576-40ab-977e-a2f0a4d2cd36. Exception Message: Tried to get token using Azure CLI. Access token could not be acquired. ERROR: Please run 'az login' to setup account. Parameters: Connectionstring: [No connection string specified], Resource: https://vault.azure.net, Authority: https://login.windows.net/311a22fd-9576-40ab-977e-a2f0a4d2cd36. Exception Message: Tried to get token using Active Directory Integrated Authentication. Access token could not be acquired. unknown_user_type: Unknown User Typey lo que dice es correcto, no tengo una cadena de conexión explícita a la bóveda de claves, pero ¿debería "conectar" el servicio a la bóveda de claves no haber manejado esto? ¿Y tener una cadena de conexión versionada en git no sería contrario a la intuición en relación con el almacenamiento de la contraseña?
Entonces, ¿cómo accedo a mis servicios conectados, sin almacenar realmente las credenciales de acceso a la bóveda de claves de Azure?
¿Y cómo administro dos almacenes de claves dentro de una solución (uno para el entorno de desarrollo y otro para el entorno de producción)?
¿Cómo accedo a mis servicios conectados, sin almacenar realmente las credenciales de acceso a Azure Key Vault?
Consulte los pasos para leer un secreto almacenado en una instancia de Azure Key Vault y Usar una identidad administrada para conectar Key Vault a una aplicación web de Azure en .NET
¿Cómo administro dos almacenes de claves dentro de una solución (uno para el entorno de desarrollo y otro para el entorno de producción)?
Consulte la gestión de almacenes de claves en el entorno de desarrollo , el entorno de producción y los entornos de producción y desarrollo.
Consulte esto para obtener más información.
Tiene una aplicación de .net framework que se ejecuta en las instalaciones. Necesita algún secreto de KeyVault disponible para su aplicación, pero no puede obtenerlo del código de su aplicación cuando lo necesita. Tampoco desea poner el secreto real en su web.config en git (lo cual es bueno). Además, tiene el problema de los entornos múltiples.
Dado todo esto, primero sugeriría que en lugar de tener una cadena de conexión en su web.config, simplemente agregue un token para ello. Esto está totalmente bien para ponerlo en su repositorio de Git.
<configuration> <appSettings> <add key="ApiKey" value="API_KEY" /> Luego crea su aplicación como lo haría hoy, lo que da como resultado una carpeta de publicación que contiene el archivo web.config . Puede llamar a esto su fase de construcción .
Antes de ejecutar la implementación real en IIS, debe reemplazar el token con el valor real de KeyVault. Para esto, su proceso de implementación necesitará acceso a KeyVault (pero no a su aplicación). La forma en que lo haga depende de cómo implemente la aplicación. Podría ser solo un script de Powershell que obtiene el secreto y modifica web.config. Si usa Azure Pipelines, puede vincular variables directamente a KeyVault . Si implementa en el entorno de producción, simplemente obtiene el secreto de un KeyVault diferente. Esto también garantiza que pueda usar el mismo artefacto de compilación para múltiples entornos, solo que con una configuración diferente.