Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure App Service puede usar identidades administradas para conectarse a servicios back-end sin un connection string, lo que elimina los secretos de conexión para administrar y mantener la conectividad de back-end segura en un entorno de producción. En el caso de los servicios back-end que no admiten identidades administradas y que siguen necesitando secretos de conexión, puede usar Key Vault para administrar secretos de conexión. En este tutorial se usa Foundry Tools como ejemplo para mostrar cómo se realiza en la práctica. Cuando termines, tendrás una aplicación que realiza llamadas programáticas a "Foundry Tools", sin almacenar secretos de conexión dentro de "App Service".
Sugerencia
Las herramientas de Foundry admiten la autenticación mediante identidades administradas, pero en este tutorial se usa la autenticación de clave de subscription para demostrar cómo puede conectarse a un servicio de Azure que no admite identidades administradas desde App Services.
Con esta arquitectura:
- La conectividad con Key Vault está protegida por identidades administradas
- App Service accede a los secretos mediante Key Vault referencias como configuración de la aplicación.
- El acceso al almacén de claves está restringido a la aplicación. Los colaboradores de la aplicación, como los administradores, pueden tener un control completo de los recursos de App Service y, al mismo tiempo, no tienen acceso a los secretos de Key Vault.
- Si el código de la aplicación ya tiene acceso a los secretos de conexión con la configuración de la aplicación, no se requiere ningún cambio.
Lo qué aprenderá:
- Habilitar identidades administradas
- Uso de identidades administradas para conectarse a Key Vault
- Uso de referencias de Key Vault
- Acceder a herramientas Foundry
Requisitos previos
Prepare el entorno para el Azure CLI.
Use el entorno de Bash en Azure Cloud Shell. Para obtener más información, consulte Get started with Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si se ejecuta en Windows o macOS, considere la posibilidad de ejecutar Azure CLI en un contenedor de Docker. Para obtener más información, consulte Cómo ejecutar el Azure CLI en un contenedor de Docker.
Si usa una instalación local, inicie sesión en el Azure CLI mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Authenticate para Azure con Azure CLI.
Cuando se le solicite, instale la extensión Azure CLI en el primer uso. Para obtener más información sobre las extensiones, consulte Use y administre extensiones con el Azure CLI.
Ejecute az version para ver la versión y las bibliotecas dependientes que están instaladas. Para actualizar a la versión más reciente, ejecute az upgrade.
Creación de una aplicación con conectividad con Las herramientas de Foundry
Cree un grupo de recursos que contenga todos los recursos:
# Save resource group name as variable for convenience groupName=myKVResourceGroup region=westeurope az group create --name $groupName --location $regionCree un recurso para los servicios de Azure AI. Reemplace <cs-resource-name> por un nombre único de su elección.
# Save resource name as variable for convenience. csResourceName=<cs-resource-name> az cognitiveservices account create --resource-group $groupName --name $csResourceName --location $region --kind TextAnalytics --sku F0 --custom-domain $csResourceNameNota:
--sku F0crea un recurso de nivel gratuito de servicios de Azure AI. Cada suscripción está limitada a una cuota de un recursoTextAnalyticsgratuito. Si ya supera la cuota, use--sku Sen su lugar.
Configuración de .NET aplicación
Clone el repositorio de ejemplo localmente e implemente la aplicación de ejemplo en App Service. Reemplace <app-name> por un nombre de aplicación único.
# Save app name as variable for convenience
appName=<app-name>
# Clone sample application
git clone https://github.com/Azure-Samples/app-service-language-detector.git
cd app-service-language-detector/dotnet
az webapp up --sku F1 --resource-group $groupName --name $appName --plan $appName --location $region
Configurar secretos como ajustes de la aplicación
Configure los secretos de Foundry Tools como configuraciones de
CS_ACCOUNT_NAMEyCS_ACCOUNT_KEYde la aplicación.# Get subscription key for Cognitive Services resource csKey1=$(az cognitiveservices account keys list --resource-group $groupName --name $csResourceName --query key1 --output tsv) az webapp config appsettings set --resource-group $groupName --name $appName --settings CS_ACCOUNT_NAME="$csResourceName" CS_ACCOUNT_KEY="$csKey1"En el explorador, vaya a la aplicación de implementación en
<app-name>.azurewebsites.nety pruebe el detector de idioma con cadenas en varios idiomas.
Si mira el código de la aplicación, puede observar que la salida de depuración de los resultados de la detección tiene el mismo color de fuente que el fondo. Puede verlo intentando resaltar el espacio en blanco directamente debajo del resultado.
Conectividad de back-end segura
En este momento, los secretos de conexión se almacenan como configuración de la aplicación en la aplicación App Service. Este enfoque ya está protegiendo los secretos de conexión desde el código base de la aplicación. Sin embargo, cualquier colaborador que pueda gestionar su aplicación también puede acceder a la configuración de la aplicación. En este paso, moverá los secretos de conexión a un almacén de claves y limitará el acceso para garantizar que únicamente usted pueda administrarlo y que únicamente la aplicación App Service pueda leerlo mediante su identidad administrada.
Cree un Key Vault. Reemplace <vault-name> por un nombre de aplicación único.
# Save app name as variable for convenience vaultName=<vault-name> az keyvault create --resource-group $groupName --name $vaultName --location $region --sku standard --enable-rbac-authorizationEl parámetro
--enable-rbac-authorizationestablece el control de acceso basado en roles (RBAC) de Azure como el modelo de permisos. Esta configuración invalida de manera predeterminada todos los permisos de las directivas de acceso.Déselo a usted mismo el rol Key Vault Secrets Officer RBAC para la bóveda.
vaultResourceId=$(az keyvault show --name $vaultName --query id --output tsv) myId=$(az ad signed-in-user show --query id --output tsv) az role assignment create --role "Key Vault Secrets Officer" --assignee-object-id $myId --assignee-principal-type User --scope $vaultResourceIdHabilite la identidad administrada asignada por el sistema para su aplicación y otórguele el rol Key Vault Secrets User de RBAC para la bóveda.
az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role "Key Vault Secrets User"Agregue el nombre del recurso de servicios de Azure AI y la clave de suscripción como secretos a la bóveda, y guarde sus IDs como variables de entorno para el siguiente paso.
csResourceKVUri=$(az keyvault secret set --vault-name $vaultName --name csresource --value $csResourceName --query id --output tsv) csKeyKVUri=$(az keyvault secret set --vault-name $vaultName --name cskey --value $csKey1 --query id --output tsv)Anteriormente, estableciste los secretos como configuraciones de la aplicación
CS_ACCOUNT_NAMEyCS_ACCOUNT_KEY. Ahora, en vez de eso, configúrelos como referencias del almacén de claves.az webapp config appsettings set --resource-group $groupName --name $appName --settings CS_ACCOUNT_NAME="@Microsoft.KeyVault(SecretUri=$csResourceKVUri)" CS_ACCOUNT_KEY="@Microsoft.KeyVault(SecretUri=$csKeyKVUri)"En el explorador, vuelva a navegar a
<app-name>.azurewebsites.net. Si obtiene resultados de detección, entonces está conectado al punto de conexión de Azure AI Services con referencias de Azure Key Vault.
Enhorabuena, tu aplicación ahora se conecta a Foundry Tools mediante secretos guardados en el almacén de claves, sin realizar cambios en el código de tu aplicación.
Limpieza de recursos
En los pasos anteriores, creó recursos de Azure en un grupo de recursos. Si no espera necesitar estos recursos en el futuro, elimine el grupo de recursos ejecutando el comando siguiente en el Cloud Shell:
az group delete --name $groupName
Este comando puede tardar varios segundos en ejecutarse.