Inicio rápido: Usar Bicep para crear y publicar una definición de aplicación administrada de Azure
Artículo
Este inicio rápido describe cómo traer su propio almacenamiento para crear y publicar una definición de aplicación administrada de Azure en el catálogo de servicios. La definición del catálogo de servicios está disponible para los miembros de su organización.
Para crear y publicar una definición de aplicación administrada en el catálogo de servicios, deberá realizar las siguientes tareas:
Usar Bicep para desarrollar la plantilla y convertirla en una plantilla de Azure Resource Manager (plantilla de ARM). La plantilla define los recursos de Azure implementados por la aplicación administrada.
Utilice el comando Bicep build para convertir Bicep en JSON. Después de convertir el archivo en JSON, compruebe la precisión del código.
Defina los elementos de la interfaz de usuario del portal cuando implemente la aplicación administrada.
Cree un paquete .zip que contenga los archivos de JSON necesarios. El archivo de paquete .zip tiene un límite de 120 MB para las definiciones de aplicación administrada de un catálogo de servicios.
Implemente la definición de aplicación administrada para que esté disponible en el catálogo de servicios.
Para completar las tareas de este artículo, necesitará lo siguiente:
Una cuenta de Azure con una suscripción activa y permisos para recursos de Microsoft Entra, como usuarios, grupos o entidades de servicio. Antes de comenzar, si no tiene una cuenta, cree una gratuita.
Todas las definiciones de aplicaciones administradas incluyen un archivo denominado mainTemplate.json. La plantilla define los recursos de Azure que se van a implementar, y no difiere de una plantilla de ARM normal. Puede desarrollar la plantilla mediante Bicep y, a continuación, convertir el archivo de Bicep en JSON.
Abra Visual Studio Code, cree un archivo con el nombre mainTemplate.bicep (se distingue entre mayúsculas y minúsculas) y guárdelo.
Agregue el código de Bicep siguiente y guarde el archivo. Define los recursos de la aplicación administrada para implementar un plan de App Service, App Service y una cuenta de almacenamiento.
Use PowerShell o la CLI de Azure para compilar el archivo mainTemplate.json . Vaya al directorio donde guardó el archivo Bicep y ejecute el comando build.
Para más información, vaya a Compilación de Bicep.
Después de convertir el archivo Bicep en JSON, el archivo mainTemplate.json debe coincidir con el ejemplo siguiente. Puede tener valores diferentes en las propiedades de metadata para version y templateHash.
Como publicador, define la experiencia del portal para crear la aplicación administrada. El archivo createUiDefinition.json genera la interfaz de usuario del portal. Defina cómo los usuarios proporcionan la entrada para cada parámetro mediante elementos de control, como las listas desplegables y los cuadros de texto.
En este ejemplo, la interfaz de usuario le pide que escriba el prefijo de nombre de App Service y el nombre del plan de App Service. Durante la implementación de mainTemplate.json, las variables appServiceName usan la función uniqueString para anexar una cadena de 13 caracteres a los prefijos de nombre para que los nombres sean únicos globalmente en Azure.
Abra Visual Studio Code, cree un archivo con el nombre createUiDefinition.json (se distingue entre mayúsculas y minúsculas) y guárdelo.
Agregue el siguiente código JSON y guárdelo.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview",
"parameters": {
"basics": [
{}
],
"steps": [
{
"name": "webAppSettings",
"label": "Web App settings",
"subLabel": {
"preValidation": "Configure the web app settings",
"postValidation": "Completed"
},
"elements": [
{
"name": "appServicePlanName",
"type": "Microsoft.Common.TextBox",
"label": "App Service plan name",
"placeholder": "App Service plan name",
"defaultValue": "",
"toolTip": "Use alphanumeric characters or hyphens with a maximum of 40 characters.",
"constraints": {
"required": true,
"regex": "^[a-z0-9A-Z-]{1,40}$",
"validationMessage": "Only alphanumeric characters or hyphens are allowed, with a maximum of 40 characters."
},
"visible": true
},
{
"name": "appServiceName",
"type": "Microsoft.Common.TextBox",
"label": "App Service name prefix",
"placeholder": "App Service name prefix",
"defaultValue": "",
"toolTip": "Use alphanumeric characters or hyphens with minimum of 2 characters and maximum of 47 characters.",
"constraints": {
"required": true,
"regex": "^[a-z0-9A-Z-]{2,47}$",
"validationMessage": "Only alphanumeric characters or hyphens are allowed, with a minimum of 2 characters and maximum of 47 characters."
},
"visible": true
}
]
}
],
"outputs": {
"location": "[location()]",
"appServicePlanName": "[steps('webAppSettings').appServicePlanName]",
"appServiceNamePrefix": "[steps('webAppSettings').appServiceName]"
}
}
}
Agregue los dos archivos a un paquete de archivo denominado app.zip. Los dos archivos tienen que estar en el nivel raíz del archivo .zip. Si los archivos estuvieran en una carpeta, cuando cree la definición de la aplicación administrada, recibirá un error indicando que los archivos necesarios no están presentes.
Cargue app.zip en una cuenta de almacenamiento de Azure para que pueda usarla al implementar la definición de la aplicación administrada. El nombre de la cuenta de almacenamiento debe ser único globalmente en Azure y su longitud debe ser de entre 3 y 24 caracteres (solo letras en minúsculas y números). En el comando, reemplace el marcador de posición <pkgstorageaccountname>, incluyendo los corchetes angulares (<>), por el nombre de la cuenta de almacenamiento único.
En Visual Studio Code, abra un nuevo terminal de PowerShell e inicie sesión en su suscripción de Azure.
Connect-AzAccount
Este comando abrirá el explorador predeterminado y le solicitará iniciar sesión en Azure. Para obtener más información, vaya a Inicio de sesión con Azure PowerShell.
Después de conectarse, ejecute los siguientes comandos.
La variable $pkgstorageparms usa la expansión de PowerShell para mejorar la legibilidad de los valores de parámetro usados en el comando para crear la nueva cuenta de almacenamiento. La expansión se usa en otros comandos de PowerShell que usan varios valores de parámetro.
Después de crear la cuenta de almacenamiento, agregue la asignación de rol Colaborador de datos de Storage Blob al ámbito de la cuenta de almacenamiento. Asigne acceso a su cuenta de usuario de Microsoft Entra. En función del nivel de acceso de Azure, es posible que necesite otros permisos asignados por el administrador. Para más información, consulte Asignación de roles de Azure para el acceso a datos de blobs y Asignación de roles de Azure mediante Azure Portal.
Después de agregar el rol a la cuenta de almacenamiento, este tarda unos minutos en activarse en Azure. A continuación, puede crear el contexto necesario para crear el contenedor y cargar el archivo.
Use el siguiente comando para almacenar el URI del archivo de paquete en una variable denominada packageuri. Usará el valor de variable al implementar la definición de aplicación administrada.
En Visual Studio Code, abra una nueva sesión de terminal de Bash e inicie sesión en su suscripción de Azure. Por ejemplo, si tiene Git instalado, seleccione Git Bash.
az login
Este comando abrirá el explorador predeterminado y le solicitará iniciar sesión en Azure. Para obtener más información, vaya a Inicio de sesión con la CLI de Azure.
Después de conectarse, ejecute los siguientes comandos.
La barra diagonal inversa (\) es un carácter de continuación de línea para mejorar la legibilidad de los parámetros del comando y se usa en muchos de los comandos de la CLI de Azure. La variable pkgstgacct contiene el nombre de la cuenta de almacenamiento para su uso en otros comandos.
Después de crear la cuenta de almacenamiento, agregue la asignación de rol Colaborador de datos de Storage Blob al ámbito de la cuenta de almacenamiento. Asigne acceso a su cuenta de usuario de Microsoft Entra. En función del nivel de acceso de Azure, es posible que necesite otros permisos asignados por el administrador. Para más información, vaya a Asignación de un rol de Azure para el acceso a datos de blob.
Después de agregar el rol a la cuenta de almacenamiento, este tarda unos minutos en activarse en Azure. A continuación, puede usar el parámetro --auth-mode login en los comandos para crear el contenedor y cargar el archivo.
Use el siguiente comando para almacenar el URI del archivo de paquete en una variable denominada packageuri. Usará el valor de variable al implementar la definición de aplicación administrada.
Creación de la definición de aplicación administrada
En esta sección, obtiene información de identidad de Microsoft Entra ID, crea un grupo de recursos e implementa la definición de aplicación administrada.
Obtención del identificador de grupo y el identificador de definición de roles
El siguiente paso consiste en seleccionar un usuario, grupo de seguridad o aplicación para administrar los recursos para el cliente. Esta identidad tiene permisos en el grupo de recursos administrado según el rol asignado. El rol puede ser cualquier rol integrado en Azure, como Propietario o Colaborador.
En este ejemplo se usa un grupo de seguridad, y la cuenta de Microsoft Entra deberá ser miembro del grupo. Para obtener el identificador de objeto del grupo, reemplace el marcador de posición <managedAppDemo>, incluyendo los corchetes angulares (<>), por el nombre del grupo. Usará el valor de variable al implementar la definición de aplicación administrada.
principalid=$(az ad group show --group <managedAppDemo> --query id --output tsv)
A continuación, obtenga el identificador de definición de rol para el rol integrado de Azure que desee para conceder acceso al usuario, grupo o aplicación. Usará el valor de variable al implementar la definición de aplicación administrada.
El lockLevel del grupo de recursos administrados impedirá que el cliente realice operaciones no deseadas en este grupo de recursos. Actualmente, ReadOnly es el único nivel de bloqueo admitido. ReadOnly especifica que el cliente solo puede leer los recursos presentes en el grupo de recursos administrado. Las identidades del publicador a las que se concede acceso al grupo de recursos administrados están exentas del nivel de bloqueo.
Creación del archivo de parámetros
La plantilla de implementación de la definición de aplicación administrada necesita entradas para varios parámetros. El comando de implementación le pedirá los valores o podrá crear un archivo de parámetros para los valores. En este ejemplo, se usa un archivo de parámetros para pasar los valores de parámetro al comando de implementación.
En Visual Studio Code, cree un archivo denominado deployDefinition.parameters.json y guárdelo.
Agregue lo siguiente al archivo de parámetros y guárdelo. A continuación, reemplace <placeholder values>, incluyendo los corchetes angulares (<>), por sus valores.
using './deployDefinition.bicep'
param managedApplicationDefinitionName = 'sampleBicepManagedApplication'
param packageFileUri = '<placeholder for the packageFileUri>'
param principalId = '<placeholder for principalid value>'
param roleId = '<placeholder for roleid value>'
En la tabla siguiente se describen los valores de parámetro de la definición de aplicación administrada.
Parámetro
Valor
managedApplicationDefinitionName
Nombre de la definición de aplicación administrada. En este ejemplo, use sampleBicepManagedApplication.
packageFileUri
Escriba el URI en el archivo de paquete .zip. Use el valor de la variable packageuri.
principalId
Identificador de entidad de seguridad de publicadores que necesita permisos para administrar recursos en el grupo de recursos administrados. Use el valor de la variable principalid.
roleId
Id. de rol para los permisos para el grupo de recursos administrados. Por ejemplo: Propietario, Colaborador o Lector. Use el valor de la variable roleid.
Para obtener los valores de la variable:
Azure PowerShell: en PowerShell, escriba $variableName para mostrar el valor de una variable.
CLI de Azure: en Bash, escriba echo $variableName para mostrar el valor de una variable.
Implementación de la definición
Al implementar la definición de la aplicación administrada, estará disponible en el catálogo de servicios. Este proceso no implementará los recursos de la aplicación administrada.
Cree un grupo de recursos denominado bicepDefinitionGroup e implemente la definición de aplicación administrada.
Get-AzManagedApplicationDefinition enumera todas las definiciones disponibles del grupo de recursos especificado, como sampleBicepManagedApplication.
az managedapp definition list --resource-group bicepDefinitionGroup
El comando enumera todas las definiciones disponibles del grupo de recursos especificado, como sampleBicepManagedApplication.
Asegurarse de que los usuarios pueden acceder a la definición
Tiene acceso a la definición de la aplicación administrada, pero desea asegurarse de que otros usuarios de su organización puedan acceder a ella. Concédales al menos el rol de lector en la definición. Es posible que hayan heredado este nivel de acceso de la suscripción o del grupo de recursos. Para comprobar quién tiene acceso a la definición y agregar usuarios o grupos, vaya a Asignación de roles de Azure mediante Azure Portal.
Limpieza de recursos
Si va a implementar la definición, continúe con la sección Pasos siguientes que se vincula al artículo para implementar la definición con Bicep.
Si ha terminado con la definición de aplicación administrada, puede eliminar los grupos de recursos que creó denominados packageStorageGroup y bicepDefinitionGroup.
Muestre las características de Microsoft Entra ID para modernizar las soluciones de identidad, implementar soluciones híbridas e implementar la gobernanza de identidades.