Wstrzykiwanie wpisów tajnych w punktach końcowych online (wersja zapoznawcza)

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)

Wstrzyknięcie wpisu tajnego w kontekście punktu końcowego online to proces pobierania wpisów tajnych (takich jak klucze interfejsu API) z magazynów wpisów tajnych i wstrzykiwania ich do kontenera użytkownika działającego wewnątrz wdrożenia online. Wpisy tajne są w końcu uzyskiwane bezpiecznie za pośrednictwem zmiennych środowiskowych, które są używane przez serwer wnioskowania, na którym jest uruchamiany skrypt oceniania lub przez stos wnioskowania, który jest używany z podejściem wdrażania byOC (bring your own container).

Ważne

Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone.

Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Opis problemu

Podczas tworzenia wdrożenia online możesz użyć wpisów tajnych z poziomu wdrożenia w celu uzyskania dostępu do usług zewnętrznych. Niektóre z tych usług zewnętrznych obejmują usługę Microsoft Azure OpenAI, usługi Azure AI Services i zawartość usługi Azure AI Sejf ty.

Aby użyć wpisów tajnych, należy znaleźć sposób bezpiecznego przekazania ich do kontenera użytkownika działającego wewnątrz wdrożenia. Nie zalecamy dołączania wpisów tajnych w ramach definicji wdrożenia, ponieważ takie rozwiązanie uwidacznia wpisy tajne w definicji wdrożenia.

Lepszym rozwiązaniem jest przechowywanie wpisów tajnych w magazynach wpisów tajnych, a następnie bezpieczne pobieranie ich z poziomu wdrożenia. Jednak takie podejście stanowi własne wyzwanie: sposób uwierzytelniania wdrożenia w magazynach wpisów tajnych w celu pobrania wpisów tajnych. Ponieważ wdrożenie online uruchamia kontener użytkownika przy użyciu tożsamości punktu końcowego, która jest tożsamością zarządzaną, możesz użyć kontroli dostępu opartej na rolach platformy Azure, aby kontrolować uprawnienia tożsamości punktu końcowego i zezwolić punktowi końcowemu na pobieranie wpisów tajnych z magazynów wpisów tajnych. Użycie tego podejścia wymaga wykonania następujących zadań:

  • Przypisz odpowiednie role do tożsamości punktu końcowego, aby umożliwić odczytywanie wpisów tajnych z magazynów wpisów tajnych.
  • Zaimplementuj logikę oceniania dla wdrożenia, aby używała tożsamości zarządzanej punktu końcowego do pobierania wpisów tajnych z magazynów wpisów tajnych.

Chociaż takie podejście do używania tożsamości zarządzanej jest bezpiecznym sposobem pobierania i wstrzykiwania wpisów tajnych, wstrzykiwanie wpisów tajnych za pośrednictwem funkcji wstrzykiwania wpisu tajnego dodatkowo upraszcza proces pobierania wpisów tajnych dla połączeń obszaru roboczego i magazynów kluczy.

Tożsamość zarządzana skojarzona z punktem końcowym

Wdrożenie online uruchamia kontener użytkownika z tożsamością zarządzaną skojarzoną z punktem końcowym. Ta tożsamość zarządzana, nazywana tożsamością punktu końcowego, jest identyfikatorem entra firmy Microsoft, który obsługuje kontrolę dostępu opartą na rolach platformy Azure. W związku z tym można przypisać role platformy Azure do tożsamości, aby kontrolować uprawnienia wymagane do wykonywania operacji. Tożsamość punktu końcowego może być tożsamością przypisaną przez system (SAI) lub tożsamością przypisaną przez użytkownika (UAI). Podczas tworzenia punktu końcowego możesz zdecydować, które z tych rodzajów tożsamości mają być używane.

  • W przypadku tożsamości przypisanej przez system tożsamość jest tworzona automatycznie podczas tworzenia punktu końcowego, a role z podstawowymi uprawnieniami (takimi jak uprawnienie ściągnięcia usługi Azure Container Registry i czytnik danych obiektu blob magazynu) są automatycznie przypisywane.
  • W przypadku tożsamości przypisanej przez użytkownika należy najpierw utworzyć tożsamość, a następnie skojarzyć ją z punktem końcowym podczas tworzenia punktu końcowego. Odpowiadasz również za przypisywanie odpowiednich ról do interfejsu użytkownika zgodnie z potrzebami.

Aby uzyskać więcej informacji na temat używania tożsamości zarządzanych punktu końcowego, zobacz Jak uzyskać dostęp do zasobów z punktów końcowych przy użyciu tożsamości zarządzanych oraz przykład użycia tożsamości zarządzanych do interakcji z usługami zewnętrznymi.

Przypisanie roli do tożsamości punktu końcowego

Następujące role są wymagane przez magazyny wpisów tajnych:

  • W przypadku wpisów tajnych przechowywanych w połączeniach obszaru roboczego w obszarze roboczym: Workspace Connections udostępnia interfejs API wpisów tajnych listy (wersja zapoznawcza), który wymaga tożsamości wywołującej interfejs API, aby miał Azure Machine Learning Workspace Connection Secrets Reader przypisaną rolę (lub równoważnej) do tożsamości.
  • W przypadku wpisów tajnych przechowywanych w zewnętrznej usłudze Microsoft Azure Key Vault: usługa Key Vault udostępnia interfejs API Pobierz wersje wpisów tajnych, który wymaga tożsamości wywołującej interfejs API, aby miał Key Vault Secrets User przypisaną rolę (lub równoważnej) do tożsamości.

Implementacja wstrzyknięcia wpisu tajnego

Po pobraniu wpisów tajnych (takich jak klucze interfejsu API) z magazynów wpisów tajnych istnieją dwa sposoby wstrzykiwania ich do kontenera użytkownika działającego wewnątrz wdrożenia online:

  • Samodzielne wstrzykiwanie wpisów tajnych przy użyciu tożsamości zarządzanych.
  • Wstrzykiwanie wpisów tajnych za pomocą funkcji wstrzykiwania wpisu tajnego.

Oba te podejścia obejmują dwa kroki:

  1. Najpierw pobierz wpisy tajne z magazynów wpisów tajnych przy użyciu tożsamości punktu końcowego.
  2. Po drugie należy wstrzyknąć wpisy tajne do kontenera użytkownika.

Wstrzykiwanie wpisów tajnych za pośrednictwem tożsamości zarządzanych

W definicji wdrożenia należy użyć tożsamości punktu końcowego do wywoływania interfejsów API z magazynów wpisów tajnych. Tę logikę można zaimplementować w skryfcie oceniania lub w skryptach powłoki uruchamianych w kontenerze BYOC. Aby zaimplementować wstrzykiwanie wpisów tajnych za pośrednictwem tożsamości zarządzanych, zobacz przykład użycia tożsamości zarządzanych do interakcji z usługami zewnętrznymi.

Tajne wstrzykiwanie za pośrednictwem tajnej funkcji wstrzykiwania

Aby użyć funkcji iniekcji wpisu tajnego, w definicji wdrożenia zamapuj wpisy tajne (do których chcesz się odwoływać) z połączeń obszaru roboczego lub usługi Key Vault na zmienne środowiskowe. Takie podejście nie wymaga pisania kodu w skrytecie oceniania ani skryptów powłoki uruchamianych w kontenerze BYOC. Aby zamapować wpisy tajne z połączeń obszaru roboczego lub usługi Key Vault na zmienne środowiskowe, muszą zostać spełnione następujące warunki:

  • Jeśli podczas tworzenia punktu końcowego zdefiniowano punkt końcowy online w celu wymuszenia dostępu do domyślnych magazynów wpisów tajnych (połączeń obszaru roboczego w bieżącym obszarze roboczym), tożsamość użytkownika tworząca wdrożenie w punkcie końcowym powinna mieć uprawnienia do odczytu wpisów tajnych z połączeń obszaru roboczego.
  • Tożsamość punktu końcowego używana przez wdrożenie powinna mieć uprawnienia do odczytywania wpisów tajnych z połączeń obszaru roboczego lub usługi Key Vault, zgodnie z definicją wdrożenia.

Uwaga

  • Jeśli punkt końcowy został pomyślnie utworzony za pomocą sai i flaga ustawiona w celu wymuszania dostępu do domyślnych magazynów wpisów tajnych, punkt końcowy automatycznie będzie miał uprawnienia do połączeń obszaru roboczego.
  • W przypadku, gdy punkt końcowy używał interfejsu użytkownika lub flaga wymuszania dostępu do domyślnych magazynów wpisów tajnych nie została ustawiona, tożsamość punktu końcowego może nie mieć uprawnień do połączeń obszaru roboczego. W takiej sytuacji należy ręcznie przypisać rolę dla połączeń obszaru roboczego z tożsamością punktu końcowego.
  • Tożsamość punktu końcowego nie otrzyma automatycznie uprawnień dla zewnętrznego magazynu Key Vault. Jeśli używasz usługi Key Vault jako magazynu wpisów tajnych, musisz ręcznie przypisać rolę dla usługi Key Vault do tożsamości punktu końcowego.

Aby uzyskać więcej informacji na temat używania iniekcji wpisów tajnych, zobacz Wdrażanie modeli uczenia maszynowego w punktach końcowych online przy użyciu wstrzykiwania wpisów tajnych (wersja zapoznawcza).