Share via


API-k biztonságossá tétele ügyféltanúsítvány-alapú hitelesítéssel az API Managementben

A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint

Az API Management biztonságos hozzáférést tesz lehetővé az API-khoz (ügyfél–API Management) az ügyféltanúsítványok és a kölcsönös TLS-hitelesítés használatával. A csatlakozó ügyfél által bemutatott tanúsítványokat érvényesítheti, és a szabályzatkifejezések segítségével összevetheti a tanúsítványok tulajdonságait a kívánt értékekkel.

Az API háttérszolgáltatáshoz való hozzáférésének ügyféltanúsítványokkal (azaz API Management to backend) való védelmével kapcsolatos információkért tekintse meg a háttérszolgáltatások ügyféltanúsítvány-hitelesítéssel történő védelmét ismertető témakört.

Az API-engedélyezés elméleti áttekintését lásd : Hitelesítés és API-k engedélyezése az API Managementben.

Tanúsítványbeállítások

A tanúsítványok ellenőrzése érdekében az API Management összevetheti őket az API Management-példányában felügyelt tanúsítványokkal. Ha úgy dönt, hogy az API Managementtel felügyeli az ügyféltanúsítványokat, a következő lehetőségek közül választhat:

A Key Vault-tanúsítványok használata azért ajánlott, mert segít az API Management biztonságának javításában:

  • A kulcstartókban tárolt tanúsítványok a szolgáltatások között újra felhasználhatók
  • Részletes hozzáférési szabályzatok alkalmazhatók a kulcstartókban tárolt tanúsítványokra
  • A kulcstartóban frissített tanúsítványok automatikusan el lesznek forgatva az API Managementben. A key vault frissítése után az API Management tanúsítványa 4 órán belül frissül. Manuálisan is frissítheti a tanúsítványt az Azure Portalon vagy a felügyeleti REST API-val.

Előfeltételek

  • Ha még nem hozott létre API Management szolgáltatáspéldányt, olvassa el az API Management szolgáltatáspéldány létrehozása című témakört.

  • Hozzá kell férnie a tanúsítványhoz és a jelszóhoz egy Azure-kulcstartóban való felügyelethez, vagy fel kell töltenie az API Management szolgáltatásba. A tanúsítványnak CER vagy PFX formátumban kell lennie. Önaláírt tanúsítványok engedélyezettek.

    Ha önaláírt tanúsítványt használ, telepítse a megbízható legfelső szintű és köztes hitelesítésszolgáltatói tanúsítványokat is az API Management-példányban.

    Feljegyzés

    A hitelesítésszolgáltatói tanúsítványok a tanúsítványérvényesítéshez nem támogatottak a használatszinten.

A Key Vault integrációjának előfeltételei

  1. Ha még nincs kulcstartója, hozzon létre egyet. A kulcstartó létrehozásának lépéseit a rövid útmutatóban találja : Kulcstartó létrehozása az Azure Portal használatával.

    A tanúsítvány kulcstartóba való létrehozásához vagy importálásához tekintse meg a következő rövid útmutatót: Tanúsítvány beállítása és lekérése az Azure Key Vaultból az Azure Portal használatával.

  2. Engedélyezze a rendszer által hozzárendelt vagy felhasználó által hozzárendelt felügyelt identitást az API Management-példányban.

A Key Vaulthoz való hozzáférés konfigurálása

  1. A portálon keresse meg a kulcstartót.

  2. A bal oldali menüben válassza az Access-konfigurációt, és jegyezze fel a konfigurált engedélymodellt.

  3. Az engedélymodelltől függően konfiguráljon kulcstartó-hozzáférési szabályzatot vagy Azure RBAC-hozzáférést egy API Management által felügyelt identitáshoz.

    Kulcstartó hozzáférési szabályzatának hozzáadása:

    1. A bal oldali menüben válassza az Access-szabályzatok lehetőséget.
    2. Az Access-szabályzatok lapon válassza a + Létrehozás lehetőséget.
    3. Az Engedélyek lap Titkos engedélyek csoportjában válassza a Beolvasás és a Lista lehetőséget, majd a Tovább gombot.
    4. Az Egyszerű lapon válassza ki az egyszerű nevet, keresse meg a felügyelt identitás erőforrásnevét, majd válassza a Tovább gombot. Ha rendszer által hozzárendelt identitást használ, az egyszerű az API Management-példány neve.
    5. Kattintson ismét a Tovább gombra. A Véleményezés + létrehozás lapon válassza a Létrehozás lehetőséget.

    Az Azure RBAC-hozzáférés konfigurálása:

    1. A bal oldali menüben válassza a Hozzáférés-vezérlés (IAM) lehetőséget.
    2. A Hozzáférés-vezérlés (IAM) lapon válassza a Szerepkör-hozzárendelés hozzáadása lehetőséget.
    3. A Szerepkör lapon válassza a Key Vault tanúsítványfelhasználója lehetőséget.
    4. A Tagok lapon válassza a Felügyelt identitás>+ Tagok kijelölése lehetőséget.
    5. A Felügyelt identitás kiválasztása lapon válassza ki a rendszer által hozzárendelt felügyelt identitást vagy az API Management-példányhoz társított felhasználó által hozzárendelt felügyelt identitást, majd válassza a Kiválasztás lehetőséget.
    6. Válassza az Áttekintés + hozzárendelés lehetőséget.

A Key Vault tűzfalának követelményei

Ha a Key Vault tűzfala engedélyezve van a kulcstartón, a következő további követelmények teljesülnek:

  • A kulcstartó eléréséhez az API Management-példány rendszer által hozzárendelt felügyelt identitását kell használnia.

  • A Key Vault tűzfalában engedélyezze a Megbízható Microsoft-szolgáltatások engedélyezését a tűzfal lehetőség megkerüléséhez.

  • Győződjön meg arról, hogy a helyi ügyfél IP-címe átmenetileg hozzáférhet a kulcstartóhoz, miközben kiválaszt egy tanúsítványt vagy titkos kulcsot, amelyet fel szeretne adni az Azure API Managementbe. További információ: Az Azure Key Vault hálózati beállításainak konfigurálása.

    A konfiguráció befejezése után letilthatja az ügyfél címét a Key Vault tűzfalán.

A virtuális hálózatra vonatkozó követelmények

Ha az API Management-példány virtuális hálózaton van üzembe helyezve, konfigurálja a következő hálózati beállításokat is:

  • Szolgáltatásvégpont engedélyezése az Azure Key Vaultban az API Management alhálózaton.
  • Konfiguráljon egy hálózati biztonsági csoportot (NSG- szabályt) az AzureKeyVault és az AzureActiveDirectory szolgáltatáscímkék kimenő forgalmának engedélyezéséhez.

További információ: Hálózati konfiguráció az Azure API Management virtuális hálózaton való beállításakor.

Key Vault-tanúsítvány hozzáadása

Tekintse meg a Key Vault integrációjának előfeltételeit.

Fontos

Amikor kulcstartó-tanúsítványt ad hozzá az API Management-példányhoz, rendelkeznie kell a kulcstartó titkos kulcsainak listázásához szükséges engedélyekkel.

Figyelemfelhívás

Ha key vault-tanúsítványt használ az API Managementben, ügyeljen arra, hogy ne törölje a kulcstartó eléréséhez használt tanúsítványt, kulcstartót vagy felügyelt identitást.

Key Vault-tanúsítvány hozzáadása az API Managementhez:

  1. Az Azure Portalon keresse meg az API Management-példányt.

  2. A Biztonság területen válassza a Tanúsítványok lehetőséget.

  3. Válassza a Tanúsítványok>+ Hozzáadás lehetőséget.

  4. Az Azonosító mezőben adjon meg egy tetszőleges nevet.

  5. A Tanúsítvány területen válassza a Key Vault lehetőséget.

  6. Adja meg egy kulcstartó-tanúsítvány azonosítóját, vagy válassza a Kiválasztás lehetőséget egy tanúsítvány kulcstartóból való kiválasztásához.

    Fontos

    Ha saját maga adja meg a key vault tanúsítványazonosítóját, győződjön meg arról, hogy nem rendelkezik verzióinformációval. Ellenkező esetben a tanúsítvány nem forog automatikusan az API Managementben a kulcstartó frissítését követően.

  7. Az ügyfélidentitásban válasszon ki egy rendszer által hozzárendelt vagy egy meglévő, felhasználó által hozzárendelt felügyelt identitást. Megtudhatja, hogyan vehet fel vagy módosíthat felügyelt identitásokat az API Management szolgáltatásban.

    Feljegyzés

    Az identitásnak engedélyekre van szüksége a tanúsítvány kulcstartóból való lekéréséhez és listázásához. Ha még nem konfigurálta a kulcstartóhoz való hozzáférést, az API Management kéri, hogy automatikusan konfigurálhassa az identitást a szükséges engedélyekkel.

  8. Válassza a Hozzáadás lehetőséget.

    Képernyőkép a Key Vault-tanúsítvány api Managementhez való hozzáadásáról a portálon.

  9. Válassza a Mentés lehetőséget.

Tanúsítvány feltöltése

Ügyféltanúsítvány feltöltése az API Managementbe:

  1. Az Azure Portalon keresse meg az API Management-példányt.

  2. A Biztonság területen válassza a Tanúsítványok lehetőséget.

  3. Válassza a Tanúsítványok>+ Hozzáadás lehetőséget.

  4. Az Azonosító mezőben adjon meg egy tetszőleges nevet.

  5. A Tanúsítvány területen válassza az Egyéni lehetőséget.

  6. Tallózással válassza ki a tanúsítvány .pfx fájlját, és adja meg a jelszavát.

  7. Válassza a Hozzáadás lehetőséget.

    Képernyőkép egy ügyféltanúsítvány api Managementbe való feltöltéséről a portálon.

  8. Válassza a Mentés parancsot.

Feljegyzés

Ha csak a tanúsítványt szeretné használni az ügyfél API Managementtel való hitelesítéséhez, feltölthet egy CER-fájlt.

Ügyféltanúsítványok fogadásának és ellenőrzésének engedélyezése az API Management-példány számára

Fejlesztői, alapszintű, standard vagy prémium szintű

Ha HTTP/2-n keresztül szeretné fogadni és ellenőrizni az ügyféltanúsítványokat a Fejlesztői, Alapszintű, Alapszintű v2, Standard, Standard v2 vagy Prémium szinteken, engedélyeznie kell az Ügyféltanúsítvány egyeztetése beállítást az Egyéni tartomány panelen az alább látható módon.

Ügyféltanúsítvány egyeztetése

Használati szint

Ha ügyféltanúsítványokat szeretne fogadni és ellenőrizni a Használat rétegben, engedélyeznie kell az Ügyféltanúsítvány kérése beállítást az Egyéni tartományok panelen az alább látható módon.

Ügyféltanúsítvány kérése

Szabályzat ügyféltanúsítványok ellenőrzéséhez

A validate-client-certificate szabályzat használatával ellenőrizze az API Management-példányban üzemeltetett API-k eléréséhez használt ügyféltanúsítvány egy vagy több attribútumát.

Konfigurálja a szabályzatot egy vagy több attribútum ellenőrzésére, beleértve a tanúsítványkibocsátót, a tulajdonost, az ujjlenyomatot, a tanúsítvány online visszavonási listával való érvényesítését és más jellemzőket.

Tanúsítványérvényesítés környezeti változókkal

A változóval szabályzatkifejezéseket is létrehozhat az context ügyféltanúsítványok ellenőrzéséhez. A következő szakaszok példái a context.Request.Certificate tulajdonságot és más context tulajdonságokat használó kifejezéseket mutatják be.

Feljegyzés

Előfordulhat, hogy a kölcsönös tanúsítványhitelesítés nem működik megfelelően, ha az API Management-átjáró végpontja az Application Gatewayen keresztül van közzétéve. Ennek az az oka, hogy az Application Gateway 7. rétegbeli terheléselosztóként működik, és külön SSL-kapcsolatot hoz létre a háttér API Management szolgáltatással. Következésképpen az ügyfél által a kezdeti HTTP-kérelemben csatolt tanúsítvány nem lesz továbbítva az APIM-nak. Áthidaló megoldásként azonban a tanúsítványt a kiszolgálóváltozók beállításával továbbíthatja. Részletes útmutatásért tekintse meg a kölcsönös hitelesítési kiszolgáló változóit.

Fontos

  • 2021 májusától kezdve a context.Request.Certificate tulajdonság csak akkor kéri le a tanúsítványt, ha az API Management-példány true (Igaz) értékre állítja hostnameConfiguration a negotiateClientCertificate tulajdonságot. Alapértelmezés szerint negotiateClientCertificate False (Hamis) értékre van állítva.
  • Ha a TLS újratárgyalása le van tiltva az ügyfélben, TLS-hibák léphetnek fel a tanúsítvány a tulajdonság használatával context.Request.Certificate történő lekérésekor. Ha ez történik, engedélyezze a TLS újratárgyalási beállításait az ügyfélben.
  • A minősítés újratárgyalása nem támogatott az API Management 2-es szintű szintjeiben.

A kiállító és a tulajdonos ellenőrzése

Az alábbi szabályzatok konfigurálhatók az ügyféltanúsítvány kiállítójának és tulajdonosának ellenőrzésére:

<choose>
    <when condition="@(context.Request.Certificate == null || !context.Request.Certificate.Verify() || context.Request.Certificate.Issuer != "trusted-issuer" || context.Request.Certificate.SubjectName.Name != "expected-subject-name")" >
        <return-response>
            <set-status code="403" reason="Invalid client certificate" />
        </return-response>
    </when>
</choose>

Feljegyzés

A visszavont tanúsítványok listájának ellenőrzésének letiltásához használja context.Request.Certificate.VerifyNoRevocation() a következő helyett: context.Request.Certificate.Verify(). Ha az ügyféltanúsítvány önaláírt, a legfelső szintű (vagy köztes) hitelesítésszolgáltatói tanúsítványokat fel kell tölteni az API Managementbe context.Request.Certificate.Verify() , és context.Request.Certificate.VerifyNoRevocation() működnie kell.

Az ujjlenyomat ellenőrzése

Az alábbi szabályzatok konfigurálhatók az ügyféltanúsítvány ujjlenyomatának ellenőrzésére:

<choose>
    <when condition="@(context.Request.Certificate == null || !context.Request.Certificate.Verify() || context.Request.Certificate.Thumbprint != "DESIRED-THUMBPRINT-IN-UPPER-CASE")" >
        <return-response>
            <set-status code="403" reason="Invalid client certificate" />
        </return-response>
    </when>
</choose>

Feljegyzés

A visszavont tanúsítványok listájának ellenőrzésének letiltásához használja context.Request.Certificate.VerifyNoRevocation() a következő helyett: context.Request.Certificate.Verify(). Ha az ügyféltanúsítvány önaláírt, a legfelső szintű (vagy köztes) hitelesítésszolgáltatói tanúsítványokat fel kell tölteni az API Managementbe context.Request.Certificate.Verify() , és context.Request.Certificate.VerifyNoRevocation() működnie kell.

Ujjlenyomat ellenőrzése az API Managementbe feltöltött tanúsítványokon

Az alábbi példa bemutatja, hogyan ellenőrizheti egy ügyféltanúsítvány ujjlenyomatát az API Managementbe feltöltött tanúsítványokon:

<choose>
    <when condition="@(context.Request.Certificate == null || !context.Request.Certificate.Verify()  || !context.Deployment.Certificates.Any(c => c.Value.Thumbprint == context.Request.Certificate.Thumbprint))" >
        <return-response>
            <set-status code="403" reason="Invalid client certificate" />
        </return-response>
    </when>
</choose>

Feljegyzés

A visszavont tanúsítványok listájának ellenőrzésének letiltásához használja context.Request.Certificate.VerifyNoRevocation() a következő helyett: context.Request.Certificate.Verify(). Ha az ügyféltanúsítvány önaláírt, a legfelső szintű (vagy köztes) hitelesítésszolgáltatói tanúsítványokat fel kell tölteni az API Managementbe context.Request.Certificate.Verify() , és context.Request.Certificate.VerifyNoRevocation() működnie kell.

Tipp.

Az ebben a cikkben ismertetett ügyféltanúsítvány-probléma többféleképpen is nyilvánulhat meg, például a kérések lefagynak, a kérések az időkorlát túllépése után állapotkódot eredményeznek 403 Forbiddennull. context.Request.Certificate Ez a probléma általában körülbelül 60 KB vagy nagyobb tartalomhosszúságú kérelmeket érint POSTPUT . Annak érdekében, hogy ez a probléma ne fordul elő, kapcsolja be az "Ügyféltanúsítvány egyeztetése" beállítást a kívánt állomásnevekhez az "Egyéni tartományok" panelen, ahogyan az a dokumentum első képén látható. Ez a funkció nem érhető el a használatszinten.

Következő lépések