Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure App Service może używać tożsamości zarządzanych do łączenia się z usługami zaplecza bez parametrów połączenia. Takie podejście eliminuje konieczność zarządzania tajnymi danymi połączeń i utrzymuje bezpieczeństwo łączności zaplecza w środowisku produkcyjnym. Po zakończeniu będziesz mieć aplikację, która wykonuje wywołania programistyczne narzędzi Foundry Tools bez przechowywania tajnych danych połączenia w usłudze App Service.
W przypadku usług zaplecza, które nie obsługują tożsamości zarządzanych i nadal wymagają sekretów połączeń, możesz zarządzać sekretami połączeń za pomocą usługi Azure Key Vault. W tym samouczku użyto narzędzi Foundry Jako przykładu. Po zakończeniu będziesz mieć aplikację, która wykonuje wywołania programistyczne do narzędzi Foundry Tools bez przechowywania tajnych danych połączeń w usłudze App Service.
Wskazówka
Narzędzia Foundry obsługują uwierzytelnianie za pośrednictwem tożsamości zarządzanych. W tym samouczku uwierzytelnianie klucza subskrypcji pokazuje, jak można nawiązać połączenie z usługą platformy Azure, która nie obsługuje tożsamości zarządzanych z usługi App Service.
W tej architekturze:
- Tożsamości zarządzane zapewniają bezpieczne połączenie ze skarbcem kluczy.
- Usługa App Service uzyskuje dostęp do tajnych danych, korzystając z odwołań do Key Vault jako ustawień aplikacji.
- Dostęp do magazynu kluczy jest ograniczony do aplikacji. Kontrybutorzy aplikacji, tacy jak administratorzy, mogą mieć pełną kontrolę nad zasobami usługi App Service i jednocześnie nie mają dostępu do sekretów usługi Key Vault.
- Jeśli kod aplikacji już uzyskuje dostęp do tajnych danych połączenia za pomocą ustawień w aplikacji, nie jest wymagana żadna zmiana.
Z tego samouczka dowiesz się:
- Włącz tożsamości zarządzane
- Nawiązywanie połączenia z usługą Key Vault przy użyciu tożsamości zarządzanych
- Używanie odwołań Key Vault
- Narzędzia programu Access Foundry
Wymagania wstępne
Przygotuj środowisko do Azure CLI.
Użyj środowiska powłoki Bash w Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Rozpocznij pracę z Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia odniesienia interfejsu wiersza polecenia lokalnie, zainstaluj Azure CLI. Jeśli korzystasz z Windows lub macOS, rozważ uruchomienie Azure CLI w kontenerze platformy Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić Azure CLI w kontenerze platformy Docker.
Jeśli używasz instalacji lokalnej, zaloguj się do Azure CLI przy użyciu polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Uwierzytelnianie w Azure za pomocą Azure CLI.
Po wyświetleniu monitu zainstaluj rozszerzenie Azure CLI podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Używanie rozszerzeń i zarządzanie nimi za pomocą Azure CLI.
Uruchom az version, aby sprawdzić zainstalowaną wersję i biblioteki zależne. Aby zaktualizować do najnowszej wersji, uruchom az upgrade.
Tworzenie aplikacji z łącznością z narzędziami Foundry
Utwórz grupę zasobów, aby zawierała wszystkie zasoby:
# Save the resource group name as a variable for convenience groupName=myKVResourceGroup region=canadacentral az group create --name $groupName --location $regionUtwórz zasób Foundry Tools. Zastąp <cs-resource-name> unikalną nazwą.
# 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 $csResourceNameUwaga
--sku F0Tworzy zasób narzędzi Foundry w darmowej warstwie. Każda subskrypcja jest ograniczona do jednego zasobu w warstwieTextAnalyticsbezpłatnej. Jeśli limit przydziału został już użyty, użyj--sku Szamiast tego.
Konfigurowanie aplikacji .NET
Sklonuj przykładowe repozytorium lokalnie i wdróż przykładową aplikację w usłudze App Service. Zastąp <app-name> unikatową nazwą.
# 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
Konfigurowanie tajnych danych jako ustawień aplikacji
Skonfiguruj tajne klucze narzędzi Foundry jako ustawienia
CS_ACCOUNT_NAMEaplikacji iCS_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"W przeglądarce przejdź do wdrożonej aplikacji pod adresem
<app-name>.azurewebsites.net. Wypróbuj narzędzie do wykrywania języka, wprowadzając ciągi w różnych językach.
Jeśli spojrzysz na kod aplikacji, dane wyjściowe debugowania dla wyników wykrywania mogą być w tym samym kolorze czcionki co tło. Dane wyjściowe można wyświetlić, wyróżniając białe znaki bezpośrednio poniżej wyniku.
Zabezpieczanie łączności zaplecza
Tajne informacje dotyczące połączenia są teraz przechowywane jako ustawienia aplikacji w aplikacji App Service. Takie podejście już zabezpiecza tajne dane połączeń przed dostępem z podstawowego kodu aplikacji. Jednak każdy współautor, który może zarządzać twoją aplikacją, może również zobaczyć ustawienia aplikacji. W tej sekcji przeniesiesz tajne dane połączenia do magazynu kluczy. Dostęp można zablokować w taki sposób, że tylko Ty możesz nim zarządzać, a tylko aplikacja App Service może mieć do niego dostęp, używając swojej tożsamości zarządzanej.
Utwórz magazyn kluczy. Zastąp <tekst vault-name> unikatową nazwą.
# 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-authorizationParametr
--enable-rbac-authorizationustawia kontrolę dostępu Azure opartą na rolach (RBAC) jako model uprawnień. To ustawienie domyślnie unieważnia wszystkie uprawnienia zasad dostępu.Przyznaj sobie rolę RBAC Key Vault Secrets Officer dla skarbca.
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 $vaultResourceIdWłącz tożsamość zarządzaną systemowo dla aplikacji i nadaj jej rolę RBAC Key Vault Secrets User dla repozytorium.
az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role "Key Vault Secrets User"Dodaj nazwę zasobu narzędzi Foundry Tools i klucz subskrypcji jako wpisy tajne do magazynu i zapisz ich identyfikatory jako zmienne środowiskowe w następnym kroku.
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)Wcześniej ustawiłeś sekrety jako ustawienia
CS_ACCOUNT_NAMEiCS_ACCOUNT_KEYw swojej aplikacji. Teraz ustaw je jako referencje magazynu kluczy zamiast.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)"W przeglądarce ponownie przejdź do
<app-name>.azurewebsites.net. Jeśli otrzymasz wyniki wykrywania, połączysz się z punktem końcowym narzędzi Foundry Tools przy użyciu odwołań do magazynu kluczy.
Gratulacje, twoja aplikacja teraz łączy się z narzędziami Foundry, które korzystają z sekretów przechowywanych w twoim magazynie kluczy, i nie musiałeś wprowadzać żadnych zmian w kodzie aplikacji.
Czyszczenie zasobów
W poprzednich krokach utworzono zasoby Azure w grupie zasobów. Jeśli nie oczekujesz, że te zasoby będą potrzebne w przyszłości, usuń grupę zasobów, uruchamiając następujące polecenie w Cloud Shell:
az group delete --name $groupName
Uruchomienie tego polecenia może potrwać minutę.