Sdílet prostřednictvím


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

Poznámka:

Plány Basic, Standard a Enterprise budou od poloviny března 2025 vyřazeny ze 3letého období vyřazení. Doporučujeme přejít na Azure Container Apps. Další informace najdete v oznámení o vyřazení Azure Spring Apps.

Od 30. září 2024 bude od 30. září 2024 zastaralý plán s úplným vypnutím po šesti měsících. Doporučujeme přejít na Azure Container Apps. Další informace najdete v tématu Migrace spotřeby Azure Spring Apps Úrovně Standard a vyhrazeného plánu do Azure Container Apps.

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 <function-app-name> názvem vaší aplikace funkcí a <storage-account-name> 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.
  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).
  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í.

Snímek obrazovky webu Azure Portal zobrazující stránku Ověřování pro aplikaci funkcí se zvýrazněným názvem aplikace funkcí ve zprostředkovateli identity

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.

Snímek obrazovky webu Azure Portal zobrazující stránku Zveřejnit rozhraní API pro aplikaci funkcí se zvýrazněným identifikátorem URI ID aplikace

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ých bodů 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