Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Integrace služby Azure API Management (APIM) s rozhraním API Microsoft Fabric pro GraphQL výrazně vylepšuje možnosti vašeho rozhraní API tím, že poskytuje robustní škálovatelnost a funkce zabezpečení. APIM funguje jako brána na podnikové úrovni, která přidává pokročilé funkce, včetně správy identit, omezování rychlosti, ukládání odpovědí do mezipaměti, ochrany před hrozbami a centralizovaného monitorování – to vše beze změny konfigurace rozhraní FABRIC API.
Směrováním požadavků GraphQL prostřednictvím služby APIM můžete škálovat, abyste zvládli zvýšený provoz, implementovali sofistikované zásady zabezpečení a získali přehled o vzorech využití rozhraní API ve vaší organizaci.
Tento článek vás provede integrací služby APIM s rozhraním API Fabric pro GraphQL, konfigurací ověřování spravovaných identit a implementací zásad ukládání do mezipaměti a omezování rychlosti.
Kdo používá Azure API Management s GraphQL
Integrace služby APIM je cenná pro:
- Podnikoví architekti vystavující Fabric data prostřednictvím centralizované a řízené brány rozhraní API pro přístup v rámci celé organizace
- Administrátoři Fabricu implementující zásady omezování rychlosti, ukládání do mezipaměti a zabezpečení pro ochranu kapacity a dat Fabricu
- Týmy zabezpečení IT , které vyžadují pokročilé ověřování, autorizaci a ochranu před hrozbami pro přístup k datům Fabric
- Platformní týmy spravující a řídící více GraphQL rozhraní API Fabric napříč odděleními a obchodními jednotkami
Integraci SLUŽBY APIM používejte v případě, že potřebujete funkce služby API Management na podnikové úrovni, jako je omezování rychlosti, ukládání do mezipaměti, zásady zabezpečení a centralizované zásady správného řízení pro vaše rozhraní API Fabric GraphQL.
Požadavky
Než začnete, ujistěte se, že máte:
- Rozhraní API Fabric pro GraphQL už bylo vytvořeno. Pokud ne, přečtěte si téma Vytvoření rozhraní API pro GraphQL nebo použití příkazu Start s ukázkovou databází SQL na portálu API pro GraphQL.
- Instance služby Azure API Management. Pokyny k nastavení najdete v tématu Vytvoření instance služby API Management.
- Oprávnění k vytváření spravovaných identit a konfiguraci zásad APIM
Přidání rozhraní API GraphQL Fabric do služby Azure API Management
Prvním krokem při integraci služby APIM s Fabric je import vašeho GraphQL API do služby Azure API Management. Tento proces vytvoří proxy server, který směruje požadavky prostřednictvím služby APIM při zachování připojení ke zdrojům dat Fabric. Importem rozhraní API vytvoříte základ pro přidávání podnikových funkcí, jako jsou zásady ověřování, ukládání do mezipaměti a omezování rychlosti.
Proces importu vyžaduje ze svého rozhraní FABRIC GraphQL API dva informace: adresu URL koncového bodu (kde APIM odesílá požadavky) a soubor schématu (který definuje strukturu rozhraní API a dostupné operace).
Export podrobností rozhraní GraphQL API
Nejprve shromážděte požadované informace z rozhraní API GraphQL Fabric.
Otevření rozhraní GraphQL API na portálu Fabric
Na pásu karet vyberte Kopírovat koncový bod a získejte URL adresu vašeho rozhraní API.
Vyberte Exportovat schéma pro stažení souboru schématu GraphQL do vašeho místního zařízení.
Import rozhraní API do služby APIM
S připravenou adresou URL koncového bodu a souborem schématu teď můžete zaregistrovat rozhraní GraphQL API v APIM. Tím se vytvoří definice rozhraní API, kterou APIM používá k ověřování požadavků, generování dokumentace a použití zásad. Schéma, které nahrajete, definuje, jaké dotazy a mutace mohou klienti provádět.
Přejděte na instanci služby API Management na webu Azure Portal.
Výběr rozhraní API>+ Přidat rozhraní API
Výběr ikony GraphQL
Na obrazovce Vytvořit ze schématu GraphQL zadejte:
- Zobrazovaný název: Přátelský název rozhraní API
- Název: Identifikátor rozhraní API
- Koncový bod rozhraní GraphQL API: Adresa URL koncového bodu, kterou jste zkopírovali z Fabric
Vyberte Nahrát schéma a zvolte soubor schématu, který jste stáhli.
Konfigurace ověřování spravovaných identit
Teď, když je vaše rozhraní GraphQL API zaregistrované v APIM, musíte nakonfigurovat, jak se APIM ověřuje s Fabric. Spravované identity poskytují zabezpečenou metodu ověřování bez hesla, která eliminuje nutnost ukládat přihlašovací údaje v konfiguraci SLUŽBY APIM. Azure automaticky spravuje životní cyklus identit a zpracovává získávání tokenů, takže je tento přístup bezpečnější a jednodušší než tradiční metody ověřování.
Nastavení ověřování zahrnuje tři hlavní kroky: vytvoření spravované identity v Azure, udělení oprávnění pro přístup k pracovnímu prostoru Fabric a zdrojům dat a konfigurace služby APIM pro použití této identity při odesílání požadavků do prostředků infrastruktury.
Vytvoření a přiřazení spravované identity
Nejprve vytvořte spravovanou identitu, kterou APIM používá k ověření:
- Vytvořte spravovanou identitu přiřazenou uživatelem na webu Azure Portal.
- Poznamenejte si ID klienta spravované identity – potřebujete ID klienta pro konfiguraci zásad.
Udělte spravované identitě oprávnění v systému Fabric
Po vytvoření spravované identity musíte jí udělit oprávnění pro přístup k prostředkům Infrastruktury. Spravovaná identita potřebuje přístup k samotné položce rozhraní GraphQL API i ke všem zdrojům dat, ke které se připojuje (například k jezerům nebo skladům). Přidání identity jako člena pracovního prostoru je nejjednodušší přístup, protože uděluje přístup ke všem položkám v pracovním prostoru najednou.
- Otevření pracovního prostoru Fabric obsahujícího rozhraní GraphQL API
- Vyberte Spravovat přístup
- Přidejte spravovanou identitu (například apim-id) s alespoň rolí přispěvatele .
Návod
Podrobnější řízení můžete dosáhnout udělením oprávnění přímo jednotlivým položkám systému Fabric (API a jeho zdrojům dat) místo přístupu na úrovni prostoru pro spolupráci. Podrobné řízení je zvlášť důležité, pokud vaše rozhraní API používá ověřování jednotného přihlašování (SSO). Další informace najdete v tématu Souhrn ověřování a oprávnění.
Konfigurace služby APIM pro použití spravované identity
S oprávněními udělenými ve Fabric musíte službě APIM sdělit, kterou spravovanou identitu použít. Toto přidružení umožňuje službě APIM autentizovat se jako tato identita při provádění požadavků na rozhraní API GraphQL Fabric.
- Na webu Azure Portal přejděte k vaší instanci APIM.
- Přejděte do Zabezpečení>Spravované identity
- Přidejte uživatelsky přiřazenou spravovanou identitu, kterou jste vytvořili dříve
Přidání zásad ověřování
Posledním krokem ověřování je přidání zásady APIM, která získá přístupový token pomocí spravované identity a zahrne jej do žádostí do Fabric. Politika se spouští při každém požadavku a automaticky zpracovává získávání a obnovení tokenů. Zásada používá authentication-managed-identity element k získání tokenu pro prostředek rozhraní Fabric API a pak ho přidá do autorizační hlavičky.
V rozhraní API GraphQL v APIM vyberte kartu Zásady rozhraní API .
Úprava zásad příchozího zpracování
Přidejte následující XML pod
<inbound><base/>:<authentication-managed-identity resource="https://analysis.windows.net/powerbi/api" client-id="YOUR-MANAGED-IDENTITY-CLIENT-ID" output-token-variable-name="token-variable" ignore-error="false" /> <set-header name="Authorization" exists-action="override"> <value>@("Bearer " + (string)context.Variables["token-variable"])</value> </set-header>Nahraďte
YOUR-MANAGED-IDENTITY-CLIENT-IDID klienta spravované identity.Uložit zásadu
Test připojení
Než budete pokračovat v přidávání ukládání do mezipaměti a omezování rychlosti, ověřte, že nastavení ověřování funguje správně. Testování teď zajišťuje, že všechny problémy, se kterými se setkáte později, nesouvisí s konfigurací ověřování.
- V APIM přejděte ke GraphQL API.
- Přechod na kartu Test
- Proveďte ukázkový dotaz nebo mutaci, abyste potvrdili, že připojení funguje.
Konfigurace ukládání odpovědí do mezipaměti
Ukládání odpovědí do mezipaměti výrazně snižuje latenci volajících rozhraní API a snižuje zatížení back-endu u zdrojů dat Fabric. APIM podporuje integrované ukládání do mezipaměti nebo externí instance Redis. Pro rozhraní GraphQL API používá ukládání do mezipaměti text požadavku (dotaz GraphQL) jako klíč mezipaměti a zajišťuje, aby stejné dotazy vracely odpovědi uložené v mezipaměti.
Výhody ukládání odpovědí GraphQL do mezipaměti:
- Nižší latence: Odpovědi uložené v mezipaměti se okamžitě vrátí bez dotazování systému Fabric.
- Nižší spotřeba kapacity: Méně požadavků na Fabric snižuje využití CU (jednotka kapacity)
- Lepší škálovatelnost: Zpracování více souběžných uživatelů bez zvýšení zatížení back-endu
Přidejte zásady ukládání do mezipaměti
Pokud chcete implementovat ukládání do mezipaměti, upravíte stávající zásady ověřování tak, aby se přidala logika vyhledávání mezipaměti a úložiště. Zásady kontrolují odpovědi uložené v mezipaměti před předáváním požadavků do Fabric a úspěšné odpovědi ukládají pro budoucí použití. Tento úplný příklad zásad ukazuje, jak funguje ověřování a ukládání do mezipaměti:
<policies>
<inbound>
<base />
<!-- Authenticate with managed identity -->
<authentication-managed-identity
resource="https://analysis.windows.net/powerbi/api"
client-id="YOUR-MANAGED-IDENTITY-CLIENT-ID"
output-token-variable-name="token-variable"
ignore-error="false" />
<set-header name="Authorization" exists-action="override">
<value>@("Bearer " + (string)context.Variables["token-variable"])</value>
</set-header>
<!-- Check if response is cached -->
<cache-lookup-value
key="@(context.Request.Body.As<String>(preserveContent: true))"
variable-name="cachedResponse"
default-value="not_exists" />
</inbound>
<backend>
<!-- Only forward request if not cached -->
<choose>
<when condition="@(context.Variables.GetValueOrDefault<string>("cachedResponse") == "not_exists")">
<forward-request />
</when>
</choose>
</backend>
<outbound>
<base />
<choose>
<!-- Return cached response if it exists -->
<when condition="@(context.Variables.GetValueOrDefault<string>("cachedResponse") != "not_exists")">
<set-body>@(context.Variables.GetValueOrDefault<string>("cachedResponse"))</set-body>
</when>
<!-- Cache successful responses for 60 seconds -->
<when condition="@((context.Response.StatusCode == 200) && (context.Variables.GetValueOrDefault<string>("cachedResponse") == "not_exists"))">
<cache-store-value
key="@(context.Request.Body.As<String>(preserveContent: true))"
value="@(context.Response.Body.As<string>(preserveContent: true))"
duration="60" />
</when>
</choose>
</outbound>
<on-error>
<base />
</on-error>
</policies>
Jak tato zásada funguje:
- Příchozí: Ověřuje se pomocí spravované identity a kontroluje, jestli je odpověď uložená v mezipaměti na základě dotazu GraphQL.
- Backend: Přeskočí přesměrování požadavku na Fabric, pokud existuje odpověď uložená v mezipaměti.
- Odchozí: Vrátí odpovědi uložené v mezipaměti nebo nové úspěšné odpovědi po dobu 60 sekund.
Ověřte, že ukládání do mezipaměti funguje
Ověření, že se požadavky ukládají do mezipaměti:
V APIM spusťte stejný dotaz GraphQL dvakrát.
Trasování volání rozhraní API za účelem zobrazení přístupů do mezipaměti
Optimalizace doby trvání mezipaměti
V příkladu se používá 60sekundová doba trvání mezipaměti. Upravte dobu trvání na základě požadavků na aktuálnost dat:
- Aktualizace s vysokou frekvencí: Pro často se měnící data používejte kratší doby trvání (10–30 sekund).
- Statická nebo referenční data: Pro data, která se mění zřídka, použijte delší dobu trvání (5 až 60 minut).
- Požadavky v reálném čase: Neuchovávejte dotazy do mezipaměti, které musí vždy vracet nejnovější data
Pokročilé scénáře ukládání do mezipaměti, včetně zneplatnění mezipaměti a externí konfigurace Redis, najdete v tématu Zásady ukládání do mezipaměti APIM.
Omezování rychlosti
Počet volání rozhraní API, které klient může provést v určitém časovém období, můžete omezit. Tady je příklad položky zásad omezení rychlosti, kterou můžete přidat níže <inbound><base/> , která pro daného uživatele vynucuje maximálně dvě volání každých 60 sekund:
<rate-limit-by-key
calls="2"
renewal-period="60"
counter-key="@(context.Request.Headers.GetValueOrDefault("Authorization"))"
increment-condition="@(context.Response.StatusCode == 200)"
remaining-calls-variable-name="remainingCallsPerUser" />
Po odeslání více než dvou volání rozhraní API za minutu se zobrazí chybová zpráva:
{
"statusCode": 429,
"message": "Rate limit is exceeded. Try again in 58 seconds."
}
Další informace o konfiguraci zásad omezování rychlosti v APIM najdete v dokumentaci.
Osvědčené postupy
Při integraci služby APIM s rozhraním API Fabric pro GraphQL postupujte podle těchto doporučení:
Zabezpečení
- Použití spravovaných identit: Preferování spravovaných identit před klíči rozhraní API nebo připojovacími řetězci pro ověřování
- Implementace nejnižšího oprávnění: Udělte pouze minimální oprávnění potřebná pro spravovanou identitu.
- Povolení pouze HTTPS: Konfigurace SLUŽBY APIM pro odmítnutí požadavků HTTP a vynucení HTTPS
- Ověření vstupů: Použití zásad APIM k ověření dotazů GraphQL před předáním do Fabric
Performance
- Ukládání často přístupných dat do mezipaměti: Identifikace běžných dotazů a nastavení odpovídajících dob trvání mezipaměti
- Monitorování míry zásahu mezipaměti: Používejte analýzy APIM ke sledování efektivity mezipaměti.
- Optimalizace limitů rychlosti: Vyvážení uživatelského prostředí s ochranou kapacity
- Použijte regionální nasazení: Nasazení APIM ve stejné oblasti jako vaše kapacita Fabric
Monitorování a zásady správného řízení
- Povolení diagnostiky: Konfigurace protokolování diagnostiky APIM pro sledování využití rozhraní API
- Nastavení upozornění: Vytváření upozornění pro porušení omezení rychlosti a chyby
- Verzování vašich API: Použijte verzování APIM k řízení jakýchkoli nekompatibilních změn
- Zdokumentujte svá rozhraní API: Použití vývojářského portálu APIM k poskytnutí dokumentace k rozhraní API
Optimalizace nákladů
- Správně dimenzovaná omezení rychlosti: Nastavte limity, které odpovídají vaší vrstvě kapacity.
- Monitorování spotřeby kapacity: Sledování využití kapacity APIM i Fabricu
- Použití ukládání do mezipaměti strategicky: Vyvážení požadavků na aktuálnost díky úsporám kapacity
- Kontrola vzorů využití: Pravidelně analyzujte, které dotazy spotřebovávají nejvíce prostředků.
Shrnutí
Integrace rozhraní Microsoft Fabric API pro GraphQL se službou Azure API Management spojuje výkonné datové funkce Fabric s funkcemi brány rozhraní API na podnikové úrovni služby APIM. Tato kombinace poskytuje:
- Rozšířené zabezpečení: Ověřování spravovaných identit, ochrana před hrozbami a řízení přístupu na základě zásad
- Vylepšená škálovatelnost: Ukládání odpovědí do mezipaměti, omezování rychlosti a distribuce zatížení napříč několika back-endy
- Lepší výkon: Nižší latence prostřednictvím ukládání do mezipaměti a optimalizovaného směrování požadavků
- Centralizované zásady správného řízení: Jednotné monitorování, správa verzí a správa napříč několika rozhraními API
- Řízení nákladů: Omezování rychlosti a ukládání do mezipaměti snižují spotřebu kapacity Fabricu
Podle kroků konfigurace a osvědčených postupů v tomto článku můžete vytvořit robustní, zabezpečenou a škálovatelnou vrstvu rozhraní API, která podporuje produkční úlohy ve vaší organizaci.