Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служба приложений Azure может использовать управляемые удостоверения для подключения к бэкенд-сервисам без строки подключения. Этот подход устраняет необходимость управления секретами подключения и поддерживает безопасность соединений бэкэнда в рабочей среде. По завершении у вас есть приложение, которое выполняет программные вызовы средств Foundry, не сохраняя секреты подключения в службе приложений.
Для внутренних служб, которые не поддерживают управляемые удостоверения и по-прежнему требуют секретов подключения, можно использовать Azure Key Vault для управления секретами подключения. В этом руководстве в качестве примера используются средства Foundry. По завершении у вас есть приложение, которое выполняет программные обращения к Foundry Tools, не сохраняя секреты подключения в App Service.
Совет
Средства Foundry поддерживают проверку подлинности с помощью управляемых удостоверений. В этом руководстве используется аутентификация с использованием ключа подписки, чтобы продемонстрировать, как подключиться к службе Azure, которая не поддерживает управляемые удостоверения из App Service.
При использовании этой архитектуры:
- Управляемые удостоверения обеспечивают безопасное подключение к хранилищу ключей.
- Служба App Service получает доступ к секретам, используя ссылки на Key Vault в качестве настроек приложения.
- Доступ к хранилищу ключей открыт только приложению. Участники приложений, такие как администраторы, могут иметь полный контроль над ресурсами службы приложений и в то же время не имеют доступа к секретам Key Vault.
- Если код приложения уже обращается к секретам подключения с использованием параметров приложения, никакое изменение не требуется.
Из этого руководства вы узнаете:
- Включение управляемых идентификаций
- Использование управляемых удостоверений для подключения к Key Vault
- Использование ссылок на Key Vault
- Доступ к инструментам литейного производства
Предварительные условия
Подготовьте среду для Azure CLI.
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье Начало работы с Azure Cloud Shell.
Если вы предпочитаете локально запускать команды справки CLI, установите Azure CLI. Если вы работаете на Windows или macOS, попробуйте запустить Azure CLI в контейнере Docker. Дополнительные сведения см. в разделе Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Дополнительные параметры входа см. в разделе Аутентификация в Azure с использованием Azure CLI.
При появлении запроса установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в разделе Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Создание приложения с подключением к средствам Foundry
Создайте группу ресурсов для хранения всех ресурсов:
# Save the resource group name as a variable for convenience groupName=myKVResourceGroup region=canadacentral az group create --name $groupName --location $regionСоздайте ресурс средств Foundry. Замените <cs-resource-name> уникальным именем.
# Save the resource name as a variable for convenience. csResourceName=<cs-resource-name> az cognitiveservices account create --resource-group $groupName --name $csResourceName --location $region --kind TextAnalytics --sku F0 --custom-domain $csResourceNameПримечание.
--sku F0создает ресурс Foundry Tools на бесплатном уровне. Для каждой подписки установлена квота на один ресурс уровня бесплатного тарифаTextAnalytics. Если вы уже использовали квоту, используйте--sku Sвместо этого.
Настройка приложения .NET
Клонируйте пример репозитория локально и разверните пример приложения в Службе приложений. Замените <app-name> уникальным именем.
# Save the app name as a variable for convenience
appName=<app-name>
# Clone the 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
Настройка секретов в качестве параметров приложения
Настройте секреты средств Foundry как параметры приложения
CS_ACCOUNT_NAMEиCS_ACCOUNT_KEY.# Get the subscription key for the Foundry Tools 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"В браузере перейдите к развернутому приложению по адресу
<app-name>.azurewebsites.net. Попробуйте детектор языка, введя строки на различных языках.
При просмотре кода приложения выходные данные отладки для результатов обнаружения могут находиться в том же цвете шрифта, что и фон. Вы можете увидеть результат, выделив белое пространство непосредственно под ним.
Защита внутреннего подключения
Секреты подключения теперь хранятся в качестве параметров приложения в приложении службы приложений. Этот подход уже защищает секреты подключения из базы кода приложения. Однако любой участник, способный управлять приложением, может увидеть и его параметры. В этом разделе вы переместите секреты подключения в хранилище ключей. Вы заблокируете доступ, чтобы только вы могли управлять им, и только приложение службы приложений может считывать его с помощью управляемого удостоверения.
Создайте хранилище ключей. Замените текст <vault-name> уникальным именем.
# Save the key vault name as a variable for convenience vaultName=<vault-name> az keyvault create --resource-group $groupName --name $vaultName --location $region --sku standard --enable-rbac-authorizationПараметр
--enable-rbac-authorizationзадает управление доступом в Azure на основе ролей (RBAC) как модель разрешений. Этот параметр запрещает все разрешения политик доступа по умолчанию.Предоставьте себе роль Офицер по секретам Key Vault RBAC для хранилища.
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 $vaultResourceIdВключите управляемое удостоверение, назначаемое системой для вашего приложения, и предоставьте ему роль RBAC Пользователь секретов Key Vault для хранилища ключей.
az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role "Key Vault Secrets User"Добавьте имя ресурса Foundry Tools и ключ подписки в качестве секретов в хранилище и сохраните их идентификаторы в качестве переменных среды для следующего шага.
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)Ранее секреты были заданы как параметры приложения
CS_ACCOUNT_NAMEиCS_ACCOUNT_KEYв приложении. Теперь их нужно задать в качестве ссылок на хранилище ключей.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)"В браузере снова перейдите на
<app-name>.azurewebsites.net. Если вы получите результаты обнаружения обратно, вы подключаетесь к конечной точке Foundry Tools с помощью ссылок на хранилище ключей.
Поздравляем, ваше приложение теперь подключается к средствам Foundry с помощью секретов, хранимых в хранилище ключей, и вы не внесите никаких изменений в код приложения.
Очистка ресурсов
На предыдущих этапах вы создали ресурсы Azure в группе ресурсов. Если вы не ожидаете, что эти ресурсы потребуются в будущем, удалите группу ресурсов, выполнив следующую команду в Cloud Shell:
az group delete --name $groupName
Эта команда может занять минуту на выполнение.