Краткое руководство. Создание и публикация определения управляемого приложения Azure
Статья
Это краткое руководство содержит общие сведения о работе со службой "Управляемые приложения Azure". Вы создаете и публикуете определение управляемого приложения, которое хранится в каталоге служб и предназначено для членов вашей организации.
Ниже представлен порядок публикации управляемого приложения в каталоге услуг.
Создайте шаблон Azure Resource Manager (шаблон ARM), определяющий ресурсы, развертываемые с помощью управляемого приложения.
Определите элементы пользовательского интерфейса для портала при развертывании управляемого приложения.
Создайте пакет .zip, содержащий необходимые JSON-файлы. Размер ZIP-файла пакета для определения управляемого приложения каталога услуг не должен превышать 120 МБ.
Опубликуйте определение управляемого приложения, чтобы оно было доступно в каталоге служб.
Если определение управляемого приложения превышает 120 МБ или вы хотите использовать собственную учетную запись хранения по соображениям соответствия вашей организации, перейдите к краткому руководству. Создание и публикация определения управляемого приложения Azure.
Вы можете использовать Bicep для разработки определения управляемого приложения, но его необходимо преобразовать в json шаблона ARM, прежде чем опубликовать определение в Azure. Дополнительные сведения см. в кратком руководстве. Использование Bicep для создания и публикации определения управляемого приложения Azure.
Для работы с этим кратким руководством вам потребуется следующее:
Учетная запись Azure с активной подпиской и разрешениями для ресурсов Microsoft Entra, таких как пользователи, группы или субъекты-службы. Если у вас нет учетной записи, создайте бесплатную учетную запись, прежде чем начинать работу.
В каждом определении управляемого приложения указан файл с именем mainTemplate.json. Шаблон определяет ресурсы Azure для развертывания и не отличается от обычного шаблона ARM.
Откройте Visual Studio Code, создайте файл с именем mainTemplate.json (с учетом регистра) и сохраните его.
Добавьте следующие данные JSON и сохраните файл. Он определяет ресурсы для развертывания Служба приложений и плана Служба приложений. Шаблон использует Служба приложений базовый план (B1), который имеет затраты по мере использования. Дополнительные сведения см. в разделе о ценах на службу приложение Azure в Linux.
В качестве издателя вы определяете интерфейс портала для создания управляемого приложения. Файл createUiDefinition.json создает пользовательский интерфейс портала. Вы определяете, как пользователи предоставляют входные данные для каждого параметра с помощью элементов управления, таких как раскрывающийся список и текстовые поля.
В этом примере пользовательский интерфейс запрашивает ввод префикса имени Служба приложений и имени плана Служба приложений. Во время развертывания mainTemplate.jsonappServiceName переменные используют uniqueString функцию для добавления 13-символьной строки к префиксу имени, чтобы имя было глобально уникальным в Azure.
Откройте Visual Studio Code, создайте файл с именем createUiDefinition.json (с учетом регистра) и сохраните его.
Добавьте следующий код JSON в файл и сохраните его.
JSON
{
"$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]"
}
}
}
Добавьте два файла в файл пакета с именем app.zip. Приведенные выше два файла должны быть расположены на корневом уровне ZIP-файла. Если файлы находятся в папке, при создании определения управляемого приложения вы получите сообщение об ошибке, которое указывает, что необходимые файлы отсутствуют.
Отправьте app.zip в учетную запись хранения Azure, чтобы ее можно было использовать при развертывании определения управляемого приложения. Имя учетной записи хранения должно быть глобально уникальным в Azure, а его длина должна составлять 3–24 символа (допускаются только строчные буквы и цифры). В команде замените заполнитель <pkgstorageaccountname> , включая угловые скобки (<>), на имя уникальной учетной записи хранения.
Переменная $pkgstorageparms использует splatting PowerShell для улучшения удобочитаемости значений параметров, используемых в команде для создания новой учетной записи хранения. Splatting используется в других командах PowerShell, использующих несколько значений параметров.
После создания учетной записи хранения добавьте участника данных BLOB-объектов хранилища ролей в область учетной записи хранения. Назначьте доступ к учетной записи пользователя Microsoft Entra. В зависимости от уровня доступа в Azure может потребоваться другие разрешения, назначенные администратором. Дополнительные сведения см. в статье "Назначение роли Azure для доступа к данным BLOB-объектов" и назначение ролей Azure с помощью портал Azure.
После добавления роли в учетную запись хранения потребуется несколько минут, чтобы стать активным в Azure. Затем можно создать контекст, необходимый для создания контейнера и отправки файла.
В Visual Studio Code откройте новый сеанс терминала Bash и войдите в подписку Azure. Если вы установили Git, выберите Git Bash.
Azure CLI
az login
Команда открывает браузер по умолчанию и запрашивает вход в Azure. Дополнительные сведения см. в разделе "Вход с помощью Azure CLI".
Azure CLI
az group create --name packageStorageGroup --location westus
az storage account create \
--name<pkgstorageaccountname> \
--resource-group packageStorageGroup \
--location westus \
--sku Standard_LRS \
--kind StorageV2 \
--min-tls-version TLS1_2 \
--allow-blob-public-accesstrue \
--allow-shared-key-accessfalsepkgstgacct=$(az storage account show \
--resource-group packageStorageGroup \
--name<pkgstorageaccountname> \
--query name \
--output tsv)
Обратная косая черта (\) — это символ продолжения строки для улучшения удобочитаемости параметров команды и используется во многих командах Azure CLI. Переменная pkgstgacct содержит имя учетной записи хранения для использования в других командах.
После создания учетной записи хранения добавьте участника данных BLOB-объектов хранилища ролей в область учетной записи хранения. Назначьте доступ к учетной записи пользователя Microsoft Entra. В зависимости от уровня доступа в Azure может потребоваться другие разрешения, назначенные администратором. Дополнительные сведения см. в статье Назначение роли Azure для доступа к данным BLOB-объектов.
После добавления роли в учетную запись хранения потребуется несколько минут, чтобы стать активным в Azure. Затем можно использовать параметр --auth-mode login в командах для создания контейнера и отправки файла.
Выберите "Создать ресурс" на домашней странице портала.
Найдите учетную запись хранения и выберите ее из доступных параметров.
Выберите " Создать" на странице учетных записей хранения.
На вкладке Базовые введите необходимые данные.
Группа ресурсов: выберите "Создать" , чтобы создать группу ресурсов packageStorageGroup .
Имя учетной записи хранения: введите уникальное имя учетной записи хранения. Имя учетной записи хранения должно быть глобально уникальным в Azure, а его длина должна составлять 3–24 символа (допускаются только строчные буквы и цифры).
На вкладке "Дополнительно" используйте следующие параметры.
Выберите " Требовать безопасную передачу для операций REST API".
Выберите "Разрешить включение анонимного доступа" для отдельных контейнеров.
Снимите флажок Включить доступ к ключу учетной записи хранения.
Проверьте минимальную версию TLS версии 1.2.
Примите значения по умолчанию на других вкладках.
Выберите Просмотр и создание, а затем нажмите кнопку Создать.
Выберите "Перейти к ресурсу ", чтобы перейти к учетной записи хранения.
После создания учетной записи хранения добавьте участника данных BLOB-объектов хранилища ролей в область учетной записи хранения. Назначьте доступ к учетной записи пользователя Microsoft Entra. В зависимости от уровня доступа в Azure может потребоваться другие разрешения, назначенные администратором. Дополнительные сведения см. в статье Назначение роли Azure для доступа к данным BLOB-объектов. После добавления роли в учетную запись хранения потребуется несколько минут, чтобы стать активным в Azure.
Создайте контейнер и отправьте файл app.zip :
Перейдите в хранилище данных и выберите контейнеры.
Настройте свойства контейнера и нажмите кнопку "Создать".
Имя: appcontainer.
Уровень общедоступного доступа: выберите большой двоичный объект.
Выберите appcontainer.
Нажмите кнопку "Отправить " и следуйте инструкциям по отправке файла app.zip в контейнер.
Вы можете перетащить файл на портал или перейти к расположению файла на компьютере.
После отправки файла выберите app.zip в контейнере.
Скопируйте URL-адрес файла app.zip из URL-адреса обзора>.
Запишите URL-адрес файла app.zip , так как он необходим для создания определения управляемого приложения.
Создание определения управляемого приложения
В этом разделе вы получите сведения об удостоверениях из идентификатора Microsoft Entra ID, создайте группу ресурсов и разверните определение управляемого приложения.
Получение идентификатора группы и идентификатора определения роли
Следующим шагом является выбор пользователя, группы безопасности или приложения для управления ресурсами для клиента. Это удостоверение имеет разрешения для управляемой группы ресурсов в соответствии с назначенной ролью. Это может быть любая встроенная роль Azure, например "Владелец" или "Участник".
В этом примере используется группа безопасности, а учетная запись Microsoft Entra должна быть членом группы. Чтобы получить идентификатор объекта группы, замените заполнитель <managedAppDemo> , включая угловые скобки (<>), именем группы. Значение этой переменной используется при развертывании определения управляемого приложения.
Затем получите идентификатор определения роли встроенной роли Azure, которую вы хотите предоставить пользователю, группе или приложению. Значение этой переменной используется при развертывании определения управляемого приложения.
Azure PowerShell
$roleid=(Get-AzRoleDefinition -Name Owner).Id
В этом примере используется группа безопасности, а учетная запись Microsoft Entra должна быть членом группы. Чтобы получить идентификатор объекта группы, замените заполнитель <managedAppDemo> , включая угловые скобки (<>), именем группы. Значение этой переменной используется при развертывании определения управляемого приложения.
principalid=$(az ad group show --group<managedAppDemo>--query id --output tsv)
Затем получите идентификатор определения роли встроенной роли Azure, которую вы хотите предоставить пользователю, группе или приложению. Значение этой переменной используется при развертывании определения управляемого приложения.
Azure CLI
roleid=$(az role definition list --name Owner --query[].name --output tsv)
На портале идентификатор группы и идентификатор роли настраиваются при публикации определения управляемого приложения.
Команда blob создает переменную для хранения URL-адреса для файла пакета .zip . Эта переменная используется в команде, которая создает определение управляемого приложения.
После выполнения команды в вашей группе ресурсов будет определение управляемого приложения.
Далее приведены некоторые параметры, которые использовались в предыдущем примере:
ResourceGroupName: имя группы ресурсов, в которой создается определение управляемого приложения.
LockLevel: в lockLevel управляемой группе ресурсов клиент не может выполнять нежелательные операции с этой группой ресурсов. В настоящее время поддерживается только тип блокировки ReadOnly. ReadOnly указывает, что клиент может только считывать ресурсы, присутствующих в управляемой группе ресурсов. Удостоверения издателя, которым предоставлен доступ к управляемой группе ресурсов, освобождаются от уровня блокировки.
Authorization: описывает идентификатор субъекта и идентификатор определения роли, которые используются для предоставления разрешения управляемой группе ресурсов.
"${principalid}:$roleid" или вы можете использовать фигурные скобки для каждой переменной "${principalid}:${roleid}".
Разделяйте значения запятыми: "${principalid1}:$roleid1", "${principalid2}:$roleid2".
PackageFileUri: расположение файла пакета .zip , содержащего необходимые файлы.
Создайте группу ресурсов для определения управляемого приложения.
Azure CLI
az group create --name appDefinitionGroup --location westus
Команда blob создает переменную для хранения URL-адреса для файла пакета .zip . Эта переменная используется в команде, которая создает определение управляемого приложения.
После выполнения команды в вашей группе ресурсов будет определение управляемого приложения.
Далее приведены некоторые параметры, которые использовались в предыдущем примере:
resource-group: имя группы ресурсов, в которой создается определение управляемого приложения.
lock-level: в lockLevel управляемой группе ресурсов клиент не может выполнять нежелательные операции с этой группой ресурсов. В настоящее время поддерживается только тип блокировки ReadOnly. ReadOnly указывает, что клиент может только считывать ресурсы, присутствующих в управляемой группе ресурсов. Удостоверения издателя, которым предоставлен доступ к управляемой группе ресурсов, освобождаются от уровня блокировки.
authorizations: описывает идентификатор субъекта и идентификатор определения роли, которые используются для предоставления разрешения управляемой группе ресурсов.
"$principalid:$roleid" или вы можете использовать фигурные скобки, например "${principalid}:${roleid}".
Для разделения значений используйте пробел: "$principalid1:$roleid1" "$principalid2:$roleid2".
package-file-uri: расположение файла пакета .zip , содержащего необходимые файлы.
Чтобы опубликовать определение управляемого приложения из портал Azure, выполните следующие действия.
Выберите "Создать ресурс" на домашней странице портала.
Найдите определение управляемого приложения каталога служб и выберите его из доступных параметров.
Выберите "Создать" на странице "Определение управляемого приложения каталога служб".
На вкладке "Основные сведения" введите следующие сведения и нажмите кнопку "Далее".
Сведения о проекте:
Выберите имя своей подписки.
Создайте группу ресурсов с именем appDefinitionGroup.
Сведения об экземпляре:
Имя: введите имя, например имя экземпляра. Имя не используется в определении, но для формы требуется запись.
Регион: западная часть США
Сведения о приложении:
Имя: sampleManagedApplication
Отображаемое имя: пример управляемого приложения
Описание. Пример управляемого приложения, которое развертывает веб-ресурсы
На вкладке "Пакет" введите URI файла пакета для файла app.zip.
Пропустить вкладку "Параметры управления".
На вкладке "Проверка подлинности и уровень блокировки" введите следующие сведения, а затем нажмите кнопку "Проверить и создать".
Уровень блокировки: выбор только для чтения.
Выберите Добавить участников.
Роли: выбор владельца.
Выберите субъекты: выберите имя группы, например managedAppDemo.
Уровень блокировки в управляемой группе ресурсов запрещает клиенту выполнять нежелательные операции с этой группой ресурсов. Read Only указывает, что клиент может только считывать ресурсы, присутствующих в управляемой группе ресурсов. Удостоверения издателя, которым предоставлен доступ к управляемой группе ресурсов, освобождаются от уровня блокировки.
После отображения прохождения проверки нажмите кнопку "Создать".
По завершении развертывания у вас есть определение управляемого приложения в группе ресурсов.
Убедитесь, что пользователи могут видеть ваше определение.
У вас есть доступ к определению управляемого приложения, но вы хотите, чтобы другие пользователи в вашей организации могли получить к нему доступ. Предоставьте им роль читателя в определении. Они могли наследовать этот уровень доступа из подписки или группы ресурсов. Сведения о том, как проверить, кто имеет доступ к определению, и добавить пользователей или группы, см. в статье Назначение ролей Azure с помощью портала Azure.
Очистка ресурсов
Если вы собираетесь развернуть определение, перейдите к разделу "Дальнейшие действия ", который ссылается на статью для развертывания определения.
Если вы завершите работу с определением управляемого приложения, можно удалить группы ресурсов, созданные с именем packageStorageGroup и appDefinitionGroup.
Продемонстрировать функции идентификатора Microsoft Entra для модернизации решений удостоверений, реализации гибридных решений и реализации управления удостоверениями.
В этой статье описываются концепции Управляемых приложений Azure, предоставляющих облачные решения, которые клиенты могут легко развертывать и применять.
Описывает развертывание управляемого приложения каталога служб для управляемого приложения Azure с помощью Azure PowerShell, Azure CLI или портал Azure.
Сведения о том, как создавать определения пользовательского интерфейса для портала Azure. Этот процесс используется при определении Управляемых приложений Azure.