Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DOTYCZY: Wszystkie warstwy usługi API Management
Usługa API Management zapewnia możliwość zabezpieczenia dostępu do interfejsów API (czyli klienta do usługi API Management) przy użyciu certyfikatów klienta i wzajemnego uwierzytelniania TLS. Aby zweryfikować certyfikaty prezentowane przez klienta nawiązującego połączenie i sprawdzić właściwości certyfikatu względem żądanych wartości, można użyć wyrażeń zasad.
Aby uzyskać informacje na temat zabezpieczania dostępu do usługi zaplecza interfejsu API przy użyciu certyfikatów klienta (czyli usługi API Management do zaplecza), zobacz Jak zabezpieczyć usługi zaplecza przy użyciu uwierzytelniania certyfikatu klienta.
Aby zapoznać się z koncepcyjnym omówieniem autoryzacji interfejsu API, zobacz Uwierzytelnianie i autoryzacja interfejsów API w usłudze API Management.
Opcje certyfikatu
W celu weryfikacji certyfikatu usługa API Management może sprawdzać certyfikaty zarządzane w danym wystąpieniu usługi API Management. Jeśli zdecydujesz się na zarządzanie certyfikatami klienta przy użyciu usługi API Management, dostępne są następujące opcje:
- Odwołanie do certyfikatu zarządzanego w usłudze Azure Key Vault
- Dodanie pliku certyfikatu bezpośrednio w usłudze API Management
Uwaga
Obecnie integracja z magazynem kluczy dla tego scenariusza nie jest dostępna w obszarach roboczych.
Korzystanie z certyfikatów magazynu kluczy jest zalecane, ponieważ pomaga zwiększyć bezpieczeństwo usługi API Management:
- Certyfikaty przechowywane w magazynach kluczy mogą być ponownie używane w usługach
- Szczegółowe zasady dostępu można stosować do certyfikatów przechowywanych w magazynach kluczy
- Certyfikaty aktualizowane w magazynie kluczy są automatycznie obracane w usłudze API Management. Po aktualizacji w magazynie kluczy certyfikat w usłudze API Management zostanie zaktualizowany w ciągu 4 godzin. Możesz również ręcznie odświeżyć certyfikat przy użyciu witryny Azure Portal lub interfejsu API REST zarządzania.
Wymagania wstępne
Jeśli jeszcze nie utworzono wystąpienia usługi API Management, zobacz Tworzenie wystąpienia usługi API Management.
Musisz mieć dostęp do certyfikatu i hasła do zarządzania w magazynie kluczy platformy Azure lub przekazać go do usługi API Management. Certyfikat musi być w formacie CER lub PFX. Certyfikaty z podpisem własnym są dozwolone.
Jeśli używasz certyfikatu z podpisem własnym, zainstaluj również zaufane certyfikaty głównego i pośredniego urzędu certyfikacji w wystąpieniu usługi API Management.
Uwaga
Certyfikaty urzędu certyfikacji do weryfikacji certyfikatu nie są obsługiwane w warstwie Zużycie.
Wymagania wstępne dotyczące integracji z magazynem kluczy
Jeśli nie masz jeszcze magazynu kluczy, utwórz go. Aby uzyskać informacje na temat tworzenia magazynu kluczy, zobacz Szybki start: tworzenie magazynu kluczy przy użyciu witryny Azure Portal.
Włącz tożsamość zarządzaną przypisaną przez system lub przypisaną przez użytkownika w usłudze API Management.
Konfigurowanie dostępu do magazynu kluczy
- W portalu przejdź do skrytki kluczy.
- W menu po lewej stronie wybierz pozycję Ustawienia>Konfiguracja dostępu. Zwróć uwagę na skonfigurowany model uprawnień .
- W zależności od modelu uprawnień skonfiguruj zasady dostępu magazynu kluczy lub dostęp RBAC platformy Azure dla tożsamości zarządzanej usługi API Management.
Aby dodać zasady dostępu do magazynu kluczy:
- W menu po lewej stronie wybierz pozycję Zasady dostępu.
- Na stronie Zasady dostępu wybierz pozycję + Utwórz.
- Na karcie Uprawnienia w obszarze Uprawnienia w obszarze Uprawnienia tajne wybierz pozycję Pobierz i wyświetl, a następnie wybierz pozycję Dalej.
- Na karcie Główne wyszukaj nazwę zasobu tożsamości zarządzanej, a następnie wybierz pozycję Dalej. Jeśli używasz tożsamości przypisanej przez system, podmiot zabezpieczeń to nazwa wystąpienia usługi API Management.
- Ponownie wybierz przycisk Dalej . Na karcie Przeglądanie i tworzenie wybierz pozycję Utwórz.
Aby utworzyć certyfikat w magazynie kluczy lub zaimportować certyfikat do magazynu kluczy, zobacz Szybki start: ustawianie i pobieranie certyfikatu z usługi Azure Key Vault przy użyciu witryny Azure Portal.
Wymagania dotyczące zapory usługi Key Vault
Jeśli zapora usługi Key Vault jest włączona w magazynie kluczy, musisz spełnić następujące wymagania:
Aby uzyskać dostęp do magazynu kluczy, musisz użyć tożsamości zarządzanej przypisanej przez system do instancji usługi API Management.
W zaporze usługi Key Vault włącz opcję Zezwalaj zaufanym usługom firmy Microsoft na obejście tej zapory . Usługa API Management obsługuje łączność z zaufaną usługą w celu uzyskania dostępu do magazynu kluczy dla opcji płaszczyzny sterowania.
Upewnij się, że lokalny adres IP klienta może tymczasowo uzyskać dostęp do magazynu kluczy podczas wybierania certyfikatu lub wpisu tajnego, który ma zostać dodany do usługi Azure API Management. Aby uzyskać więcej informacji, zobacz Konfigurowanie ustawień sieci usługi Azure Key Vault.
Po zakończeniu konfiguracji możesz zablokować adres klienta w zaporze magazynu kluczy.
Ważne
Od marca 2026 r. nie będzie już obsługiwana zaufana łączność z usługami Azure poprzez bramę zarządzania API dzięki włączeniu ustawienia Zezwalaj zaufanym usługom Microsoft na pominięcie tej zapory. Aby nadal uzyskiwać dostęp do tych usług z bramy usługi API Management po tej zmianie, upewnij się, że wybrano inną obsługiwaną opcję dostępu do sieci. W przypadku operacji płaszczyzny sterowania można nadal korzystać z zaufanej łączności z usługą. Dowiedz się więcej.
Wymagania dotyczące sieci wirtualnej
Jeśli wystąpienie usługi API Management zostało wdrożone w sieci wirtualnej, skonfiguruj również następujące ustawienia sieciowe:
- Włącz punkt końcowy usługi Key Vault w podsieci usługi API Management.
- Skonfiguruj regułę sieciowej grupy zabezpieczeń, aby zezwolić na ruch wychodzący do tagów usługi AzureKeyVault i AzureActiveDirectory.
Aby uzyskać szczegółowe informacje, zobacz Konfiguracja sieci podczas konfigurowania usługi API Management w sieci wirtualnej.
Dodawanie certyfikatu magazynu kluczy
Zobacz Wymagania wstępne dotyczące integracji magazynu kluczy.
Ważne
Aby dodać certyfikat magazynu kluczy do wystąpienia usługi API Management, musisz mieć uprawnienia do przeglądania tajemnic w magazynie kluczy.
Uwaga
W przypadku korzystania z certyfikatu magazynu kluczy w usłudze API Management należy zachować ostrożność, aby nie usuwać certyfikatu, magazynu kluczy lub tożsamości zarządzanej używanej do uzyskiwania dostępu do magazynu kluczy.
Aby dodać certyfikat magazynu kluczy do usługi API Management:
W portalu Azure przejdź do wystąpienia API Management.
W obszarze Zabezpieczenia wybierz pozycję Certyfikaty.
Wybierz pozycję Certyfikaty>+ Dodaj.
W polu Id (Identyfikator) wprowadź nazwę.
W obszarze Certyfikat wybierz pozycję Magazyn kluczy.
Wprowadź identyfikator certyfikatu magazynu kluczy lub wybierz pozycję Wybierz , aby wybrać certyfikat z magazynu kluczy.
Ważne
Jeśli samodzielnie wprowadzisz identyfikator certyfikatu skrytki kluczy, upewnij się, że nie zawiera on informacji o wersji. W przeciwnym razie certyfikat nie będzie automatycznie obracany w usłudze API Management po aktualizacji w magazynie kluczy.
W obszarze Tożsamość klienta wybierz tożsamość przypisaną przez system lub istniejącą tożsamość zarządzaną przypisaną przez użytkownika. Aby uzyskać więcej informacji, zobacz Używanie tożsamości zarządzanych w usłudze Azure API Management.
Uwaga
Tożsamość musi mieć uprawnienia do pobierania i wyświetlania listy certyfikatów z magazynu kluczy. Jeśli jeszcze nie skonfigurowano dostępu do magazynu kluczy, usługa API Management wyświetli monit o automatyczne skonfigurowanie tożsamości przy użyciu niezbędnych uprawnień.
Wybierz Dodaj.
Wybierz pozycję Zapisz.
Przekaż certyfikat
Aby przekazać certyfikat klienta do usługi API Management:
W portalu Azure przejdź do wystąpienia API Management.
W obszarze Zabezpieczenia wybierz pozycję Certyfikaty.
Wybierz pozycję Certyfikaty>+ Dodaj.
W polu Id (Identyfikator) wprowadź nazwę.
W obszarze Certyfikat wybierz pozycję Niestandardowy.
Przejdź do wybrania pliku pfx certyfikatu i wprowadź jego hasło.
Wybierz Dodaj.
Wybierz pozycję Zapisz.
Uwaga
Jeśli chcesz użyć certyfikatu tylko do uwierzytelniania klienta za pomocą usługi API Management, możesz przekazać plik CER.
Włączanie wystąpienia usługi API Management w celu odbierania i weryfikowania certyfikatów klienta
Deweloper, Podstawowa, Standardowa lub Premium
Aby odbierać i weryfikować certyfikaty klienta za pośrednictwem protokołu HTTP/2 w warstwach Deweloper, Podstawowa, Standardowa lub Premium, należy włączyć ustawienie Negocjować certyfikat klienta w bloku Domena niestandardowa, jak pokazano poniżej.
Zużycie, Podstawowa wersja 2, Standardowa v2 lub Warstwa Premium w wersji 2
Aby odbierać i weryfikować certyfikaty klienta w warstwie Zużycie, Podstawowa wersja 2, Standardowa v2 lub Premium v2, należy włączyć ustawienie Żądaj certyfikatu klienta w bloku Domeny niestandardowe, jak pokazano poniżej.
Zasady do weryfikowania certyfikatów klienta
Użyj zasad validate-client-certificate, aby zweryfikować co najmniej jeden atrybut certyfikatu klienta używanego do uzyskiwania dostępu do interfejsów API hostowanych w wystąpieniu usługi API Management.
Skonfiguruj zasady, aby zweryfikować co najmniej jeden atrybut, w tym wystawcę certyfikatu, podmiot, odcisk palca, czy certyfikat jest weryfikowany na liście odwołania online i innych.
Walidacja certyfikatu ze zmiennymi kontekstowymi
Możesz również utworzyć wyrażenia zasad ze zmienną , context aby sprawdzić certyfikaty klienta. Przykłady w poniższych sekcjach pokazują wyrażenia używające context.Request.Certificate właściwości i innych context właściwości.
Uwaga
Wzajemne uwierzytelnianie certyfikatów może nie działać poprawnie, gdy punkt końcowy bramy usługi API Management jest uwidoczniony za pośrednictwem usługi Application Gateway. Dzieje się tak, ponieważ usługa Application Gateway działa jako moduł równoważenia obciążenia warstwy 7, ustanawiając odrębne połączenie SSL z usługą API Management zaplecza. W związku z tym certyfikat dołączony przez klienta w początkowym żądaniu HTTP nie będzie przekazywany do usługi APIM. Jednak jako obejście problemu można przesłać certyfikat przy użyciu opcji zmienne serwera. Aby uzyskać szczegółowe instrukcje, zapoznaj się ze zmiennymi serwera wzajemnego uwierzytelniania.
Ważne
- Od maja 2021 r
context.Request.Certificate. właściwość żąda certyfikatu tylko wtedy, gdy wystąpieniehostnameConfigurationusługi API Management ustawianegotiateClientCertificatewłaściwość na true. DomyślnienegotiateClientCertificatejest ustawiona wartość Fałsz. - Jeśli renegocjacja protokołu TLS jest wyłączona w kliencie, podczas żądania certyfikatu
context.Request.Certificateprzy użyciu właściwości mogą wystąpić błędy protokołu TLS. W takim przypadku włącz ustawienia renegocjacji PROTOKOŁU TLS w kliencie. - Renegocjacja certyfikatów nie jest obsługiwana w warstwach usługi API Management w wersji 2.
Sprawdzanie wystawcy i podmiotu
Poniższe zasady można skonfigurować do sprawdzania wystawcy i podmiotu certyfikatu klienta:
<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>
Uwaga
Aby wyłączyć sprawdzanie listy odwołania certyfikatówcontext.Request.Certificate.VerifyNoRevocation(), użyj polecenia context.Request.Certificate.Verify() zamiast .
Jeśli certyfikat klienta jest certyfikatem z podpisem własnym, certyfikaty głównego (lub pośredniego) urzędu certyfikacji muszą zostać przekazane do usługi API Management i context.Request.Certificate.Verify()context.Request.Certificate.VerifyNoRevocation() do pracy.
Sprawdzanie odcisku palca
Poniższe zasady można skonfigurować pod kątem sprawdzania odcisku palca certyfikatu klienta:
<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>
Uwaga
Aby wyłączyć sprawdzanie listy odwołania certyfikatówcontext.Request.Certificate.VerifyNoRevocation(), użyj polecenia context.Request.Certificate.Verify() zamiast .
Jeśli certyfikat klienta jest certyfikatem z podpisem własnym, certyfikaty głównego (lub pośredniego) urzędu certyfikacji muszą zostać przekazane do usługi API Management i context.Request.Certificate.Verify()context.Request.Certificate.VerifyNoRevocation() do pracy.
Sprawdzanie odcisku palca względem certyfikatów przekazanych do usługi API Management
W poniższym przykładzie pokazano, jak sprawdzić odcisk palca certyfikatu klienta względem certyfikatów przekazanych do usługi API Management:
<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>
Uwaga
Aby wyłączyć sprawdzanie listy odwołania certyfikatówcontext.Request.Certificate.VerifyNoRevocation(), użyj polecenia context.Request.Certificate.Verify() zamiast .
Jeśli certyfikat klienta jest certyfikatem z podpisem własnym, certyfikaty głównego (lub pośredniego) urzędu certyfikacji muszą zostać przekazane do usługi API Management i context.Request.Certificate.Verify()context.Request.Certificate.VerifyNoRevocation() do pracy.
Napiwek
Problem z zakleszczeniem certyfikatu klienta opisany w tym artykule może manifestować się na kilka sposobów, np. żądania zawieszają się, żądania powodują kod 403 Forbidden stanu po upłynął limit czasu, context.Request.Certificate to null. Ten problem zwykle dotyczy żądań POST o PUT długości zawartości o długości około 60 KB lub większej.
Aby zapobiec wystąpieniu tego problemu, włącz ustawienie "Negocjuj certyfikat klienta" dla żądanych nazw hostów w bloku "Domeny niestandardowe", jak pokazano na pierwszym obrazie tego dokumentu. Ta funkcja nie jest dostępna w warstwie Zużycie.