Oktatóanyag: Felügyelt identitás használata az Azure Functions meghívásához egy Azure Spring Apps-alkalmazásból
Feljegyzés
Az Azure Spring Apps az Azure Spring Cloud szolgáltatás új neve. Bár a szolgáltatásnak új neve van, bizonyos helyeken a régi nevet fogja látni egy darabig, miközben az eszközök, például képernyőképek, videók és diagramok frissítésével dolgozunk.
Ez a cikk a következőre vonatkozik: ✔️ Basic/Standard ✔️ Enterprise
Ez a cikk bemutatja, hogyan hozhat létre felügyelt identitást az Azure Spring Appsben üzemeltetett alkalmazásokhoz, és hogyan hívhatja meg a HTTP által aktivált függvényeket.
Az Azure Functions és az App Services is beépített támogatást nyújt a Microsoft Entra-hitelesítéshez. Ezzel a beépített hitelesítési funkcióval és az Azure Spring Apps felügyelt identitásaival modern OAuth szemantikával hívhatja meg a RESTful szolgáltatásokat. Ez a módszer nem igényel titkos kulcsok kódban való tárolását, és részletesebb vezérlőket biztosít a külső erőforrásokhoz való hozzáférés szabályozásához.
Előfeltételek
- Azure-előfizetés. Ha nem rendelkezik előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot .
- Az Azure CLI 2.45.0-s vagy újabb verziója.
- Git.
- Apache Maven 3.0-s vagy újabb verzió.
- Telepítse az Azure Functions Core Tools 4.x-es verzióját.
Erőforráscsoport létrehozása
Az erőforráscsoport olyan logikai tároló, amelybe a rendszer üzembe helyezi és kezeli az Azure-erőforrásokat. Az alábbi paranccsal hozzon létre egy erőforráscsoportot egy függvényalkalmazáshoz:
az group create --name <resource-group-name> --location <location>
További információkért lásd az az group create parancsot.
Függvényalkalmazás létrehozása
Függvényalkalmazás létrehozásához először létre kell hoznia egy háttértárfiókot. Az az storage account create parancsot használhatja.
Fontos
Minden függvényalkalmazásnak és tárfióknak egyedi névvel kell rendelkeznie.
A tárfiók létrehozásához használja az alábbi parancsot. Cserélje le <a függvényalkalmazás nevét> a függvényalkalmazás nevére, a< tárfiók nevét> pedig a tárfiók nevére.
az storage account create \
--resource-group <resource-group-name> \
--name <storage-account-name> \
--location <location> \
--sku Standard_LRS
A tárfiók létrehozása után a következő paranccsal hozza létre a függvényalkalmazást:
az functionapp create \
--resource-group <resource-group-name> \
--name <function-app-name> \
--consumption-plan-location <location> \
--os-type windows \
--runtime node \
--storage-account <storage-account-name> \
--functions-version 4
Jegyezze fel a visszaadott hostNames
értéket, amely formátuma https://<your-functionapp-name>.azurewebsites.net
. Használja ezt az értéket a függvényalkalmazás gyökér URL-címében a függvényalkalmazás teszteléséhez.
A Microsoft Entra-hitelesítés engedélyezése
Az alábbi lépésekkel engedélyezheti a Microsoft Entra-hitelesítést a függvényalkalmazás eléréséhez.
Az Azure Portalon keresse meg az erőforráscsoportot, majd nyissa meg a létrehozott függvényalkalmazást.
A navigációs panelen válassza a Hitelesítés lehetőséget, majd a fő panelen válassza az Identitásszolgáltató hozzáadása lehetőséget.
Az Identitásszolgáltató hozzáadása lapon válassza a Microsoftot az Identitásszolgáltató legördülő menüből.
Válassza a Hozzáadás lehetőséget.
Az Identitásszolgáltató hozzáadása lapon található Alapszintű beállításoknál állítsa be a támogatott fióktípusokatbármely Microsoft Entra-címtárra – több-bérlősre.
Hitelesítés nélküli kérések beállítása HTTP 401 Jogosulatlanra: API-khoz ajánlott. Ez a beállítás biztosítja, hogy a rendszer minden nem hitelesített kérést elutasítson (401 válasz).
Válassza a Hozzáadás lehetőséget.
A beállítások hozzáadása után a függvényalkalmazás újraindul, és a rendszer az összes további kérést a Microsoft Entra-azonosítón keresztül kéri a bejelentkezésre. Tesztelheti, hogy a nem hitelesített kérések jelenleg elutasítva vannak-e a függvényalkalmazás gyökér URL-címével (a parancs kimenetében hostNames
az functionapp create
adja vissza). Ezután a rendszer átirányítja a szervezet Microsoft Entra bejelentkezési képernyőjére.
A későbbi használathoz szüksége lesz az alkalmazásazonosítóra és az alkalmazásazonosító URI-ra. Az Azure Portalon keresse meg a létrehozott függvényalkalmazást.
Az alkalmazásazonosító lekéréséhez válassza a Hitelesítés lehetőséget a navigációs panelen, majd másolja ki a függvényalkalmazás nevét tartalmazó identitásszolgáltató alkalmazás-(ügyfél-) azonosítóját .
Az alkalmazásazonosító URI-jának lekéréséhez válassza az API-k megjelenítése lehetőséget a navigációs panelen, majd másolja az alkalmazásazonosító URI-értékét .
HTTP által aktivált függvény létrehozása
Egy üres helyi könyvtárban az alábbi parancsokkal hozzon létre egy új függvényalkalmazást, és adjon hozzá egy HTTP-aktivált függvényt:
func init --worker-runtime node
func new --template HttpTrigger --name HttpTrigger
Alapértelmezés szerint a függvények kulcsalapú hitelesítéssel védik a HTTP-végpontokat. Ha engedélyezni szeretné a Microsoft Entra-hitelesítést a függvényekhez való hozzáférés biztonságossá tételéhez, állítsa be a authLevel
kulcsot anonymous
a function.json fájlban, ahogyan az alábbi példában látható:
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
...
}
]
}
További információkért tekintse meg az Azure Functions HTTP-eseményindítójának éles környezetben történő biztonságossá tételéről készült HTTP-végpontot.
Az alábbi paranccsal tegye közzé az alkalmazást az előző lépésben létrehozott példányon:
func azure functionapp publish <function-app-name>
A közzétételi parancs kimenetének tartalmaznia kell az újonnan létrehozott függvény URL-címét, ahogyan az a következő kimenetben látható:
Deployment completed successfully.
Syncing triggers...
Functions in <your-functionapp-name>:
HttpTrigger - [httpTrigger]
Invoke url: https://<function-app-name>.azurewebsites.net/api/httptrigger
Azure Spring Apps-szolgáltatáspéldány és -alkalmazás létrehozása
A spring bővítmény hozzáadásához és az Azure Spring Apps új példányának létrehozásához használja az alábbi parancsokat:
az extension add --upgrade --name spring
az spring create \
--resource-group <resource-group-name> \
--name <Azure-Spring-Apps-instance-name> \
--location <location>
A következő paranccsal hozzon létre egy, a paraméter által --assign-identity
kért, rendszer által hozzárendelt felügyelt identitással ellátott msiapp
alkalmazást:
az spring app create \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name "msiapp" \
--assign-endpoint true \
--assign-identity
Spring Boot-mintaalkalmazás létrehozása a függvény meghívásához
Ez a minta meghívja a HTTP által aktivált függvényt úgy, hogy először kér egy hozzáférési jogkivonatot az MSI-végponttól, és ezzel a jogkivonattal hitelesíti a függvény HTTP-kérését. További információ: A jogkivonat lekérése a hozzáférési jogkivonat beszerzéséhez az Azure-beli virtuális gépen lévő Azure-erőforrások felügyelt identitásainak http-használatával című szakaszában.
A következő paranccsal klónozza a mintaprojektet:
git clone https://github.com/Azure-Samples/azure-spring-apps-samples.git
Az alábbi paranccsal adja meg a függvény URI-ját és az eseményindító nevét az alkalmazás tulajdonságai között:
cd azure-spring-apps-samples/managed-identity-function vim src/main/resources/application.properties
Ha felügyelt identitást szeretne használni az Azure Spring Apps-alkalmazásokhoz, adja hozzá az alábbi tulajdonságokat ezekkel az értékekkel az src/main/resources/application.properties fájlhoz.
azure.function.uri=https://<function-app-name>.azurewebsites.net azure.function.triggerPath=httptrigger azure.function.application-id.uri=<function-app-application-ID-uri>
A mintaalkalmazás csomagolásához használja a következő parancsot:
mvn clean package
Az alkalmazás üzembe helyezéséhez használja a következő parancsot az Azure Spring Appsben:
az spring app deploy \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name "msiapp" \ --artifact-path target/asc-managed-identity-function-sample-0.1.0.jar
Az alkalmazás teszteléséhez használja a következő parancsot a nyilvános végpont vagy a tesztvégpont eléréséhez:
curl https://<Azure-Spring-Apps-instance-name>-msiapp.azuremicroservices.io/func/springcloud
A válasz törzsében a következő üzenet lesz visszaadva.
Function Response: Hello, springcloud. This HTTP triggered function executed successfully.