Kurz: Použití spravované identity k vyvolání Azure Functions z aplikace Azure Spring Apps

Poznámka:

Azure Spring Apps je nový název služby Azure Spring Cloud. Přestože má služba nový název, na některých místech uvidíte starý název, protože pracujeme na aktualizaci prostředků, jako jsou snímky obrazovky, videa a diagramy.

Tento článek se vztahuje na: ✔️ Basic/Standard ✔️ Enterprise

V tomto článku se dozvíte, jak vytvořit spravovanou identitu pro aplikaci hostovanou v Azure Spring Apps a jak ji použít k vyvolání funkcí aktivovaných protokolem HTTP.

Azure Functions i App Services mají integrovanou podporu ověřování Microsoft Entra. Pomocí této integrované funkce ověřování spolu se spravovanými identitami pro Azure Spring Apps můžete vyvolat služby RESTful pomocí moderní sémantiky OAuth. Tato metoda nevyžaduje ukládání tajných kódů do kódu a poskytuje podrobnější ovládací prvky pro řízení přístupu k externím prostředkům.

Požadavky

Vytvoření skupiny zdrojů

Skupina prostředků je logický kontejner, ve kterém se nasazují a spravují prostředky Azure. Pomocí následujícího příkazu vytvořte skupinu prostředků, která bude obsahovat aplikaci funkcí:

az group create --name <resource-group-name> --location <location>

Další informace najdete v příkazu az group create .

Vytvoření aplikace funkcí

Pokud chcete vytvořit aplikaci funkcí, musíte nejprve vytvořit záložní účet úložiště. Můžete použít příkaz az storage account create .

Důležité

Každá aplikace funkcí a účet úložiště musí mít jedinečný název.

K vytvoření účtu úložiště použijte následující příkaz. Nahraďte <název> aplikace function-app názvem vaší aplikace Funkcí a< názvem> účtu úložiště názvem vašeho účtu úložiště.

az storage account create \
    --resource-group <resource-group-name> \
    --name <storage-account-name> \
    --location <location> \
    --sku Standard_LRS

Po vytvoření účtu úložiště pomocí následujícího příkazu vytvořte aplikaci Funkcí:

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

Poznamenejte si vrácenou hostNames hodnotu, která je ve formátu https://<your-functionapp-name>.azurewebsites.net. Tuto hodnotu použijte v kořenové adrese URL aplikace funkcí pro testování aplikace funkcí.

Povolení ověřování Microsoft Entra

Pomocí následujícího postupu povolte ověřování Microsoft Entra pro přístup k vaší aplikaci funkcí.

  1. Na webu Azure Portal přejděte do skupiny prostředků a otevřete aplikaci funkcí, kterou jste vytvořili.

  2. V navigačním podokně vyberte Ověřování a pak v hlavním podokně vyberte Přidat zprostředkovatele identity.

  3. Na stránce Přidat zprostředkovatele identity vyberte Microsoft z rozevírací nabídky zprostředkovatele identity.

    Screenshot of the Azure portal showing the Add an identity provider page with Microsoft highlighted in the identity provider dropdown menu.

  4. Vyberte Přidat.

  5. Nastavení Základy na stránce Přidat zprostředkovatele identity nastavte podporované typy účtů na Libovolný adresář Microsoft Entra – Více tenantů.

  6. Nastavte neověřené požadavky na HTTP 401 Neautorizováno: doporučeno pro rozhraní API. Toto nastavení zajišťuje, že všechny neověřené požadavky budou odepřeny (odpověď 401).

    Screenshot of the Azure portal showing the Add an identity provider page with Support account types and Unauthenticated requests highlighted.

  7. Vyberte Přidat.

Po přidání nastavení se aplikace funkcí restartuje a všechny následné požadavky se zobrazí výzva k přihlášení prostřednictvím ID Microsoft Entra. Můžete otestovat, že neověřené požadavky se aktuálně zamítají pomocí kořenové adresy URL aplikace function (vrácených ve hostNames výstupu az functionapp create příkazu). Pak byste měli být přesměrováni na přihlašovací obrazovku Microsoft Entra vaší organizace.

K pozdějšímu použití potřebujete ID aplikace a identifikátor URI ID aplikace. Na webu Azure Portal přejděte do aplikace funkcí, kterou jste vytvořili.

Id aplikace získáte tak, že v navigačním podokně vyberete Možnost Ověřování a zkopírujete hodnotu ID aplikace (klienta) pro zprostředkovatele identity, který obsahuje název aplikace funkcí.

Screenshot of the Azure portal showing the Authentication page for a Function app, with the Function app name highlighted in the Identity provider.

Pokud chcete získat identifikátor URI ID aplikace, vyberte v navigačním podokně zveřejnit rozhraní API a zkopírujte hodnotu identifikátoru URI ID aplikace.

Screenshot of the Azure portal showing the Expose an API page for a Function app with the Application ID URI highlighted.

Vytvoření funkce aktivované protokolem HTTP

V prázdném místním adresáři vytvořte novou aplikaci funkcí pomocí následujících příkazů a přidejte funkci aktivovanou protokolem HTTP:

func init --worker-runtime node
func new --template HttpTrigger --name HttpTrigger

Funkce ve výchozím nastavení používají ověřování založené na klíčích k zabezpečení koncových bodů HTTP. Pokud chcete povolit ověřování Microsoft Entra pro zabezpečení přístupu k funkcím, nastavte authLevel klíč do anonymoussouboru function.json , jak je znázorněno v následujícím příkladu:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      ...
    }
  ]
}

Další informace najdete v části Zabezpečení koncového bodu HTTP v produkční části triggeru HTTP služby Azure Functions.

Pomocí následujícího příkazu publikujte aplikaci do instance vytvořené v předchozím kroku:

func azure functionapp publish <function-app-name>

Výstup příkazu publish by měl vypsat adresu URL nově vytvořené funkce, jak je znázorněno v následujícím výstupu:

Deployment completed successfully.
Syncing triggers...
Functions in <your-functionapp-name>:
    HttpTrigger - [httpTrigger]
        Invoke url: https://<function-app-name>.azurewebsites.net/api/httptrigger

Vytvoření instance a aplikace služby Azure Spring Apps

Pomocí následujících příkazů přidejte rozšíření Spring a vytvořte novou instanci Azure Spring Apps:

az extension add --upgrade --name spring
az spring create \
    --resource-group <resource-group-name> \
    --name <Azure-Spring-Apps-instance-name> \
    --location <location>

Pomocí následujícího příkazu vytvořte aplikaci msiapp s přiřazenou spravovanou identitou přiřazenou systémem podle požadavku parametru --assign-identity :

az spring app create \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name "msiapp" \
    --assign-endpoint true \
    --assign-identity

Vytvoření ukázkové aplikace Spring Boot pro vyvolání funkce

Tato ukázka vyvolá funkci aktivovanou protokolem HTTP tak, že nejprve požádá o přístupový token z koncového bodu MSI a použije ho k ověření požadavku HTTP funkce. Další informace najdete v části Získání tokenu pomocí http tématu Použití spravovaných identit pro prostředky Azure na virtuálním počítači Azure k získání přístupového tokenu.

  1. Pomocí následujícího příkazu naklonujte ukázkový projekt:

    git clone https://github.com/Azure-Samples/azure-spring-apps-samples.git
    
  2. Pomocí následujícího příkazu zadejte identifikátor URI funkce a název triggeru ve vlastnostech aplikace:

    cd azure-spring-apps-samples/managed-identity-function
    vim src/main/resources/application.properties
    
  3. Pokud chcete použít spravovanou identitu pro aplikace Azure Spring Apps, přidejte následující vlastnosti s těmito hodnotami do src/main/resources/application.properties.

    azure.function.uri=https://<function-app-name>.azurewebsites.net
    azure.function.triggerPath=httptrigger
    azure.function.application-id.uri=<function-app-application-ID-uri>
    
  4. Pomocí následujícího příkazu zabalte ukázkovou aplikaci:

    mvn clean package
    
  5. Pomocí následujícího příkazu nasaďte aplikaci do Azure Spring Apps:

    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
    
  6. Pomocí následujícího příkazu přejděte k veřejnému koncovému bodu nebo testovacímu koncovému bodu a otestujte aplikaci:

    curl https://<Azure-Spring-Apps-instance-name>-msiapp.azuremicroservices.io/func/springcloud
    

    V textu odpovědi se vrátí následující zpráva.

    Function Response: Hello, springcloud. This HTTP triggered function executed successfully.
    

Další kroky