Zabezpieczanie agenta n8n za pomocą Identyfikator agenta Microsoft Entra

W tym przewodniku pokazano, jak wdrożyć n8n w Azure Container Apps z integracją Identyfikator agenta Microsoft Entra. Wdrożenie używa interfejsu wiersza polecenia dewelopera Azure (azd) do aprowizowania infrastruktury, tworzenia obiektów tożsamości Microsoft Entra i automatycznego konfigurowania przepływów pracy n8n.

W przeciwieństwie do wzorca Authentication with Microsoft Entra ID Auth SDK (sidecar), stosowanego w przypadku agentów niestandardowych, integracja n8n korzysta z węzła społeczności n8n-nodes-entraagentid do bezpośredniego uzyskiwania tokenów w przepływach pracy n8n. Wdrożone przepływy pracy przedstawiają przepływy tokenów autonomicznych (tylko aplikacje) i w imieniu (OBO) z dostępem do Microsoft Graph i Microsoft Graph MCP Server for Enterprise, https://mcp.svc.cloud.microsoft/enterprise.

Uwaga / Notatka

W tym przykładzie pokazano użycie węzła społecznościowego n8n-nodes-entraagentid w n8n. Nie jest to wskazówki dotyczące wdrażania n8n na Azure w środowisku produkcyjnym.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że masz następujące elementy:

  • Subskrypcja Azure z limitem przydziału na Azure OpenAI (GPT-4o lub podobnym), Elastyczny serwer PostgreSQL i Azure Container Apps.
  • Administrator globalny w dzierżawie Microsoft Entra. Ta rola jest wymagana, ponieważ automatyzacja tworzy wiele obiektów Microsoft Entra i udziela zgody administratora na uprawnienia. Użyj Privileged Identity Management (PIM), aby aktywować tę rolę dokładnie na czas.

Azure Cloud Shell (zalecane) zawiera wszystkie wstępnie zainstalowane elementy: Azure CLI, interfejs wiersza polecenia dewelopera Azure (azd), program PowerShell 7 i narzędzie Git.

Jeśli korzystasz lokalnie zamiast Cloud Shell, przed kontynuowaniem zainstaluj następujące narzędzia:

Uwierzytelnij zarówno Azure CLI, jak i Azure Developer CLI, tak aby polecenia wdrażania mogły tworzyć zasoby w ramach subskrypcji i zarządzać nimi:

az login
azd auth login

Klonowanie i wdrażanie

Całe wdrożenie jest uruchamiane za pomocą jednego polecenia azd up, które aprowizuje infrastrukturę Azure i automatycznie konfiguruje n8n. Wykonaj następujące kroki, aby wdrożyć n8n:

  1. Otwórz Azure Cloud Shell i wybierz PowerShell.

  2. Sklonuj repozytorium i uruchom wdrożenie:

    git clone https://github.com/astaykov/n8n-aca.git && cd n8n-aca && azd auth login && azd up
    

    W Azure Cloud Shell azd auth login wyświetla kod urządzenia. Otwórz wyświetlany adres URL i wprowadź kod do uwierzytelnienia, a następnie azd up kontynuuje automatycznie.

  3. Po wyświetleniu monitu podaj następujące wartości:

    • Nazwa środowiska: Dowolna nazwa (na przykład my-n8n). Służy do izolowania tego wdrożenia.
    • Azure subscription: Wybierz subskrypcję do wdrożenia.
    • Azure location: Wybierz region (na przykład northeurope).
    • Adres e-mail administratora n8n: Adres e-mail dla konta właściciela n8n.
    • n8n hasło administratora: Hasło dla konta admina n8n (co najmniej 8 znaków, małe i wielkie litery, cyfra).
  4. W fazie poprowizowaniu automatyzacja wykonuje drugie logowanie. Zostanie wyświetlony kod urządzenia. Otwórz adres URL i wprowadź kod. Ten krok wymaga roli Administratora Globalnego lub Administratora Aplikacji. Następnie hak azd up poaprowizacyjny:

    • Tworzy obiekty Identyfikator agenta Microsoft Entra (Szablon, Tożsamość agenta, Użytkownik agenta).
    • Włącza Microsoft Graph MCP Server for Enterprise.
    • Czeka, aż n8n będzie gotowe.
    • Tworzy konto właściciela.
    • @astaykov/n8n-nodes-entraagentid Instaluje węzeł społeczności.
    • Generuje klucz interfejsu API dla automatyzacji n8n.
    • Tworzy wszystkie pięć poświadczeń z rzeczywistymi wartościami.
    • Importuje i aktywuje trzy pokazowe przepływy pracy.

Po zakończeniu wdrażania skrypt wyświetla adres URL n8n i podsumowanie konfiguracji. Identyfikator tenant jest automatycznie wykrywany z logowania do Azure, więc nie jest wymagana żadna ręczna konfiguracja.

Eksplorowanie wdrożonych zasobów

Wdrożenie tworzy zasoby platformy Azure, obiekty tożsamości Microsoft Entra i zasoby konfiguracji n8n, które współpracują ze sobą, aby obsługiwać przykładowe przepływy pracy.

Przeglądanie zasobów infrastruktury Azure

Wdrożenie tworzy następujące zasoby Azure:

  • Środowisko usługi Container Apps: Zawiera n8n i test SPA.
  • Aplikacja kontenera n8n: Uruchamia oficjalny n8nio/n8n obraz z wejściem HTTPS.
  • Statyczna aplikacja internetowa: Przetestuj SPA dla przepływu webhook OBO.
  • Serwer elastyczny PostgreSQL: Trwałe przechowywanie dla przepływów pracy, poświadczeń i historii wykonywania (serii B1ms z możliwością obciążenia szczytowego).
  • Konto magazynu i udział plików: Katalog trwały /home/node/.n8n . Węzły społeczności i konfiguracja przetrwają ponowne uruchomienia.
  • Azure OpenAI: Wdrożenie modelu GPT wykorzystywane w przepływach pracy agenta sztucznej inteligencji.
  • Log Analytics Workspace: Diagnostyka i monitorowanie.

Przeglądanie obiektów tożsamości Microsoft Entra

Automatyzacja tworzy te obiekty raz i ponownie używa ich w kolejnych uruchomieniach:

  • Szablon tożsamości agenta: Rejestracja aplikacji, która wystawia tokeny w imieniu Agent Identities za pośrednictwem poświadczeń tożsamości federacyjnej.
  • Jednostka usługi tożsamości agenta: Jednostka usługi agenta sztucznej inteligencji. Uzyskuje niezależnie tokeny Microsoft Graph i MCP.
  • Konto użytkownika agenta: Tożsamość użytkownika tylko w chmurze, która umożliwia przepływy tokenów delegowanych (OBO).
  • Rejestracja aplikacji jednostronicowej (SPA): Aplikacja kliencka dla demonstracji webhooka, wstępnie skonfigurowana z adresami URI przekierowania i uprawnieniami API Blueprint.

Sprawdź poświadczenia i przepływy pracy w n8n

Hak postprovisioningowy automatycznie konfiguruje n8n.

Utworzone poświadczenia:

  • EntraAgentID — Autonomous: Token microsoft interfejs Graph API tylko dla aplikacji (bez kontekstu użytkownika).
  • EntraAgentID — OBO użytkownika agenta: Token delegowany w imieniu użytkownika agenta.
  • Azure OpenAI: Połączenie z wdrożonym modelem GPT dla przepływów pracy agenta sztucznej inteligencji.
  • Menedżer uwierzytelniania agentID — token dostępu: Przekazywanie tokenu z Menedżera uwierzytelniania do węzłów podrzędnych.
  • Bearer z AuthManager: Przekazywanie Bearer tokenu dla wywołań MCP.

Zaimportowane przepływy pracy:

  • Menedżer uwierzytelniania agenta — użytkownik agenta z rozwiązaniem MCP Enterprise: Uzyskuje delegowany token MCP dla użytkownika agenta i przekazuje go do przepływu podrzędnego.
  • HTTP Żądanie z tokenem agenta autonomicznego: Demonstruje autonomicznego agenta wywołującego Microsoft Graph bezpośrednio za pomocą tokenu tylko dla aplikacji.
  • Webhook — agent interaktywny (działający w imieniu użytkownika): Punkt wejścia webhooka, który odbiera token okaziciela ze SPA, wywołuje Auth Manager i odpowiada za pośrednictwem serwera Graph MCP w imieniu zalogowanego użytkownika.

Omówienie przepływu tokenów

Wdrożenie n8n obsługuje dwa wzorce przepływu tokenów:

  • Autonomiczny (tylko dla aplikacji): Przepływ pracy n8n używa poświadczeń Projektu tożsamości agenta z poświadczeniami tożsamości federacyjnej do zdobycia tokenu aplikacji tylko dla głównego obiektu usługi tożsamości agenta. Następnie przepływ pracy bezpośrednio wywołuje Microsoft Graph, używając tego tokena. Nie jest zaangażowany żaden kontekst użytkownika.

  • On-behalf-of (OBO) z MCP: SPA oparte na przeglądarce wysyła token nosiciela do webhook n8n. Webhook wywołuje przepływ pracy Menadżera Uwierzytelniania, który używa poświadczeń "Blueprint" do uzyskania delegowanego tokenu w imieniu użytkownika agenta. Menedżer uwierzytelniania przekazuje token do podprocesu, który wywołuje serwer Microsoft Graph MCP dla Enterprise, przekształcając wywołania narzędzia MCP na żądania API Microsoft Graph przy użyciu tokenu delegowanego.

W obu wzorcach Agent Identity Blueprint działa jako fabryka tokenów. Strategia tożsamości agenta wystawia tokeny dla tożsamości agenta bez przechowywania poświadczeń na samym agencie. Węzeł społecznościowy menedżera autoryzacji obsługuje pozyskiwanie tokenów i buforowanie AES-256-GCM w każdym uruchomieniu przepływu pracy.

Wdrażanie testowego SPA (opcjonalnie)

Test SPA to statyczna aplikacja JavaScript, która demonstruje przepływ elementu webhook OBO z przeglądarki.

  1. Wdróż go po zakończeniu początkowej konfiguracji:

    azd deploy spa
    

Omówienie zakresów serwera MCP

Konfiguracja udziela następujących delegowanych MCP.* zakresów głównej usłudze Agent Identity. Zakresy te odzwierciedlają ich odpowiedniki Microsoft Graph (na przykład MCP.User.Read.All odpowiada User.Read.All):

  • MCP.User.Read.All: Odczyt wszystkich użytkowników.
  • MCP.Organization.Read.All: Odczytaj informacje o organizacji dzierżawy.
  • MCP.Group.Read.All: Odczyt wszystkich grup.
  • MCP.GroupMember.Read.All: Odczyt członkostw grup.
  • MCP.Application.Read.All: Odczyt rejestracji aplikacji i głównych jednostek usługowych.
  • MCP.AuditLog.Read.All: Odczyt dzienników logowania i audytu.
  • MCP.Reports.Read.All: Odczyt raportów dotyczących użycia Microsoft 365.
  • MCP.Policy.Read.All: Odczyt zasad dostępu warunkowego.
  • MCP.Domain.Read.All: Odczytywanie zweryfikowanych domen.
  • MCP.Device.Read.All: Odczyt urządzeń zarejestrowanych w Microsoft Entra.

Aby dodać więcej zakresów, zmodyfikuj tablicę $MCP_SCOPES w scripts/Setup-EntraAgentId.ps1 i ponownie uruchom azd provision.

Uwaga / Notatka

Serwer MCP obsługuje tylko delegowane przepływy uprawnień. Użyj poświadczeń autonomicznych dla wywołań Microsoft Graph tylko przez aplikację.

Ponowne uruchamianie i aktualizowanie wdrożenia

Wdrożenie jest w pełni idempotentne:

  • Bicep pomija zasoby Azure, które już istnieją.
  • Środowisko azd zapisuje identyfikatory obiektów Microsoft Entra (Blueprint, tożsamość agenta, użytkownik agenta, sekret Blueprint) po pierwszym uruchomieniu i ponownie używa ich w kolejnych uruchomieniach.
  • Konfiguracja n8n (poświadczenia, przepływy pracy) jest stosowana świeżo po każdym uruchomieniu, co umożliwia naprawienie uszkodzonego stanu.

Aby ponownie uruchomić tylko skrypty wykonywane po aprowizacji, bez modyfikowania infrastruktury, ponownie uruchom proces aprowizacji. Szablony Bicep nie wykrywają żadnych zmian w infrastrukturze i wykonują jedynie hooki wdrożenia:

azd provision   # Bicep detects no changes, runs hooks only

Ręczne uruchamianie skryptów (opcjonalnie)

Skrypty konfiguracji można uruchamiać niezależnie w razie potrzeby:

  • Pełne end-to-end (Microsoft Entra i n8n):

    .\scripts\Run-All.ps1 `
        -TenantId  "<your-tenant-id>" `
        -N8nUrl    "https://ca-n8n-<token>.<region>.azurecontainerapps.io"
    
  • Tylko konfiguracja n8n (pomiń konfigurację Entra):

    .\scripts\Configure-N8n.ps1 `
        -N8nUrl          "https://ca-n8n-<token>.<region>.azurecontainerapps.io" `
        -OwnerEmail      "admin@contoso.com" `
        -OwnerPassword   "MyStr0ngPassword!"
    
  • Tylko konfiguracja Entra:

    .\scripts\Setup-EntraAgentId.ps1 `
        -TenantId  "<your-tenant-id>" `
        -N8nUrl    "https://ca-n8n-<token>.<region>.azurecontainerapps.io"
    

Uprzątnij zasoby

Usuń wszystkie zasoby Azure utworzone przez wdrożenie i przeczyść wszystkie zachowane stany wdrożenia:

azd down --purge

Uwaga / Notatka

Polecenie azd down usuwa zasoby Azure, ale nie usuwa obiektów Microsoft Entra, takich jak plany, identyfikatory agentów lub konta użytkowników agentów. Usuń te obiekty ręcznie w centrum administracyjne Microsoft Entra, jeśli nie są już potrzebne.