Zarządzanie wpisami tajnymi
Czasami uzyskanie dostępu do danych wymaga uwierzytelnienia się w zewnętrznych źródłach danych za pośrednictwem usługi JDBC. Zamiast bezpośrednio wprowadzać poświadczenia do notesu, możesz użyć wpisów tajnych usługi Azure Databricks do przechowywania poświadczeń i odwoływać się do nich w notesach i zadaniach. Ten artykuł zawiera omówienie wpisów tajnych usługi Azure Databricks.
Omówienie wpisów tajnych
Aby skonfigurować wpisy tajne i używać ich:
- Utwórz zakres wpisów tajnych. Zakres wpisu tajnego to kolekcja wpisów tajnych zidentyfikowanych przez nazwę.
- Dodaj do tego zakresu wpisy tajne
- Przypisz uprawnienia do zakresu wpisu tajnego.
- Uzyskaj dostęp do wpisów tajnych przy użyciu narzędzi usługi Databricks, zobacz Narzędzie Secrets (dbutils.secrets).
Aby zapoznać się z kompleksowego przykładu używania wpisów tajnych w przepływach pracy, zobacz Samouczek: tworzenie i używanie wpisu tajnego usługi Databricks. Aby użyć wpisu tajnego we właściwości konfiguracji platformy Spark lub zmiennej środowiskowej, zobacz Używanie wpisu tajnego we właściwości konfiguracji platformy Spark lub zmiennej środowiskowej.
Ostrzeżenie
Administratorzy, twórcy wpisów tajnych i użytkownicy, którym udzielono uprawnień , mogą odczytywać wpisy tajne usługi Azure Databricks. Chociaż usługa Databricks stara się redagować wartości wpisów tajnych, które mogą być wyświetlane w notesach, nie można uniemożliwić takim użytkownikom odczytywania wpisów tajnych. Zobacz Ponowne redagowanie wpisów tajnych.
Zarządzanie zakresami wpisów tajnych
Zakres wpisu tajnego to kolekcja wpisów tajnych zidentyfikowanych przez nazwę. Usługa Databricks zaleca dostosowanie zakresów wpisów tajnych do ról lub aplikacji, a nie użytkowników indywidualnych.
Istnieją dwa typy zakresu wpisów tajnych:
- Oparte na usłudze Azure Key Vault: możesz odwoływać się do wpisów tajnych przechowywanych w usłudze Azure Key Vault przy użyciu zakresów wpisów tajnych opartych na usłudze Azure Key Vault. Zakres wpisów tajnych opartych na usłudze Azure Key Vault jest interfejsem tylko do odczytu w usłudze Key Vault. Musisz zarządzać wpisami tajnymi w zakresach wpisów tajnych opartych na usłudze Azure Key Vault na platformie Azure.
- Oparte na usłudze Databricks: zakres wpisów tajnych oparty na usłudze Databricks jest przechowywany w zaszyfrowanej bazie danych należącej do usługi Azure Databricks i zarządzany przez usługę Azure Databricks.
Po utworzeniu zakresu wpisu tajnego można przypisać uprawnienia, aby przyznać użytkownikom dostęp do zakresów odczytu, zapisu i zarządzania nimi.
Tworzenie zakresu wpisów tajnych opartych na usłudze Azure Key Vault
W tej sekcji opisano sposób tworzenia zakresu wpisów tajnych opartych na usłudze Azure Key Vault przy użyciu witryny Azure Portal i interfejsu użytkownika obszaru roboczego usługi Azure Databricks. Możesz również utworzyć zakres wpisów tajnych opartych na usłudze Azure Key Vault przy użyciu interfejsu wiersza polecenia usługi Databricks.
Wymagania
- Musisz mieć wystąpienie usługi Azure Key Vault. Jeśli nie masz wystąpienia magazynu kluczy, postępuj zgodnie z instrukcjami w temacie Tworzenie usługi Key Vault przy użyciu witryny Azure Portal.
- Musisz mieć rolę Współautor, Współautor lub Właściciel usługi Key Vault w wystąpieniu usługi Azure Key Vault, którego chcesz użyć do tworzenia kopii zapasowej zakresu wpisu tajnego.
Uwaga
Tworzenie zakresu wpisów tajnych opartych na usłudze Azure Key Vault wymaga roli Współautor lub Właściciel w wystąpieniu usługi Azure Key Vault, nawet jeśli usługa Azure Databricks została wcześniej udzielona dostępu do magazynu kluczy.
Jeśli magazyn kluczy istnieje w innej dzierżawie niż obszar roboczy usługi Azure Databricks, użytkownik usługi Azure AD, który tworzy zakres wpisów tajnych, musi mieć uprawnienia do tworzenia jednostek usługi w dzierżawie magazynu kluczy. W przeciwnym razie wystąpi następujący błąd:
Unable to grant read/list permission to Databricks service principal to KeyVault 'https://xxxxx.vault.azure.net/': Status code 403, {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"XXXXX","date":"YYYY-MM-DDTHH:MM:SS"}}
Konfigurowanie wystąpienia usługi Azure Key Vault dla usługi Azure Databricks
Zaloguj się do witryny Azure Portal, znajdź i wybierz wystąpienie usługi Azure Key Vault.
W obszarze Ustawienia kliknij kartę Konfiguracja dostępu.
Ustaw pozycję Model uprawnień na zasady dostępu do magazynu.
Uwaga
Tworzenie roli zakresu wpisów tajnych opartych na usłudze Azure Key Vault przyznaje uprawnienia Uzyskiwanie i wyświetlanie listy do identyfikatora aplikacji dla usługi Azure Databricks przy użyciu zasad dostępu do magazynu kluczy. Model uprawnień kontroli dostępu opartej na rolach platformy Azure nie jest obsługiwany w usłudze Azure Databricks.
W obszarze Ustawienia wybierz pozycję Sieć.
W obszarze Zapory i sieci wirtualne ustaw opcję Zezwalaj na dostęp z: na zezwalanie na dostęp publiczny z określonych sieci wirtualnych i adresów IP.
W obszarze Wyjątek zaznacz pole wyboru Zezwalaj na obejście tej zapory przez zaufane usługi firmy Microsoft.
Uwaga
Możesz również ustawić opcję Zezwalaj na dostęp z: na zezwalanie na dostęp publiczny ze wszystkich sieci.
Tworzenie zakresu wpisu tajnego obsługiwanego przez usługę Azure Key Vault
Przejdź do
https://<databricks-instance>#secrets/createScope
. Zastąp ciąg<databricks-instance>
adresem URL obszaru roboczego wdrożenia usługi Azure Databricks. W tym adresie URL jest uwzględniana wielkość liter. Na przykładscope
wcreateScope
pliku musi być używana wielka literaS
).Wprowadź nazwę zakresu wpisu tajnego. W nazwach zakresów wpisów tajnych nie jest rozróżniana wielkość liter.
W obszarze Zarządzaj podmiotem zabezpieczeń wybierz pozycję Twórca lub Wszyscy użytkownicy obszaru roboczego, aby określić, którzy użytkownicy mają uprawnienia ZARZĄDZAJ w zakresie wpisu tajnego.
Uprawnienie ZARZĄDZANIE umożliwia użytkownikom uprawnienia do odczytu, zapisu i udzielania uprawnień w zakresie. Twoje konto musi mieć plan Premium, aby wybrać pozycję Twórca.
Wprowadź nazwę DNS (na przykład
https://databrickskv.vault.azure.net/
) i identyfikator zasobu, na przykład:/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
Te właściwości są dostępne na > ustawień usługi Azure Key Vault w witrynie Azure Portal.
Kliknij pozycję Utwórz.
Użyj polecenia interfejsu wiersza polecenia
databricks secrets list-scopes
usługi Databricks, aby sprawdzić, czy zakres został utworzony pomyślnie.
Tworzenie zakresu wpisów tajnych opartych na usłudze Databricks
W tej sekcji opisano sposób tworzenia zakresu wpisów tajnych przy użyciu interfejsu wiersza polecenia usługi Databricks? (wersja 0.205 i nowsze). Możesz również użyć interfejsu API wpisów tajnych.
Nazwy zakresów wpisów tajnych:
- Musi być unikatowa w obszarze roboczym.
- Musi zawierać znaki alfanumeryczne, kreski, podkreślenia,
@
kropki i nie mogą przekraczać 128 znaków. - Czy wielkość liter jest niewrażliwa.
Nazwy zakresów wpisów tajnych są uznawane za niewrażliwe i są czytelne dla wszystkich użytkowników w obszarze roboczym.
Aby utworzyć zakres przy użyciu interfejsu wiersza polecenia usługi Databricks:
databricks secrets create-scope <scope-name>
Domyślnie zakresy są tworzone z uprawnieniem ZARZĄDZAJ dla użytkownika, który utworzył zakres. Po utworzeniu zakresu wpisów tajnych opartych na usłudze Databricks można do niego dodać wpisy tajne.
Wyświetlanie listy zakresów wpisów tajnych
Aby wyświetlić listę istniejących zakresów w obszarze roboczym przy użyciu interfejsu wiersza polecenia:
databricks secrets list-scopes
Zakresy wpisów tajnych można również wyświetlić przy użyciu interfejsu API wpisów tajnych.
Usuwanie zakresu wpisu tajnego
Usunięcie zakresu wpisu tajnego powoduje usunięcie wszystkich wpisów tajnych i list ACL zastosowanych do zakresu. Aby usunąć zakres przy użyciu interfejsu wiersza polecenia, uruchom następujące polecenie:
databricks secrets delete-scope <scope-name>
Zakres wpisu tajnego można również usunąć przy użyciu interfejsu API wpisów tajnych.
Zarządzanie wpisami tajnymi
Wpis tajny to para klucz-wartość, która przechowuje poufne materiały przy użyciu nazwy klucza, która jest unikatowa w zakresie wpisu tajnego.
W tej sekcji opisano sposób tworzenia zakresu wpisów tajnych przy użyciu interfejsu wiersza polecenia usługi Databricks? (wersja 0.205 i nowsze). Możesz również użyć interfejsu API wpisów tajnych. W nazwach wpisów tajnych nie jest rozróżniana wielkość liter.
Utwórz klucz tajny
Metoda tworzenia wpisu tajnego zależy od tego, czy używasz zakresu opartego na usłudze Azure Key Vault, czy zakresu opartego na usłudze Databricks.
Tworzenie wpisu tajnego w zakresie opartym na usłudze Azure Key Vault
Aby utworzyć wpis tajny w usłudze Azure Key Vault, użyj witryny Azure Portal lub interfejsu API REST zestawu wpisów tajnych platformy Azure. Aby zapoznać się z przykładem, zobacz Krok 4. Dodawanie wpisu tajnego klienta do usługi Azure Key Vault.
Tworzenie wpisu tajnego w zakresie opartym na usłudze Databricks
W tej sekcji opisano sposób tworzenia wpisu tajnego przy użyciu Co to jest interfejs wiersza polecenia usługi Databricks? (wersja 0.205 lub nowsza) lub w notesie przy użyciu zestawu SDK usługi Databricks dla języka Python. Możesz również użyć interfejsu API wpisów tajnych. W nazwach wpisów tajnych nie jest rozróżniana wielkość liter.
Interfejs wiersza polecenia usługi Databricks
Podczas tworzenia wpisu tajnego w zakresie opartym na usłudze Databricks można określić wartość wpisu tajnego na jeden z trzech sposobów:
- Określ wartość jako ciąg przy użyciu flagi –string-value.
- Wprowadź wpis tajny po wyświetleniu monitu interakcyjnego (wpisów tajnych jednowierszowych).
- Przekaż wpis tajny przy użyciu standardowych danych wejściowych (wpisów tajnych wielowierszowych).
Na przykład:
databricks secrets put-secret --json '{
"scope": "<scope-name>",
"key": "<key-name>",
"string_value": "<secret>"
}'
Jeśli tworzysz wpis tajny wielowierszowy, możesz przekazać wpis tajny przy użyciu standardowych danych wejściowych. Na przykład:
(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <scope-name> <key-name>
Zestaw SDK usługi Databricks dla języka Python
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.secrets.put_secret("<secret_scope>","<key-name>",string_value ="<secret>")
Odczytywanie wpisu tajnego
Aby odczytać wpis tajny w notesie lub zadaniu, należy użyć narzędzia Secrets (dbutils.secrets). Na przykład:
password = dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")
Wyświetlanie listy wpisów tajnych
Aby wyświetlić listę wpisów tajnych w danym zakresie:
databricks secrets list-secrets <scope-name>
Odpowiedź wyświetla metadane dotyczące wpisów tajnych, takie jak nazwy kluczy wpisów tajnych. Aby wyświetlić te metadane, użyj narzędzia Secrets (dbutils.secrets). Na przykład:
dbutils.secrets.list('my-scope')
Usuń klucz tajny
Aby usunąć wpis tajny z zakresu przy użyciu interfejsu wiersza polecenia usługi Databricks:
databricks secrets delete-secret <scope-name> <key-name>
Możesz również użyć interfejsu API wpisów tajnych.
Aby usunąć wpis tajny z zakresu wspieranego przez usługę Azure Key Vault, użyj interfejsu API REST usługi Azure SetSecret lub interfejsu użytkownika witryny Azure Portal.
Zarządzanie uprawnieniami zakresu wpisów tajnych
Domyślnie użytkownik tworzący zakresy wpisów tajnych ma uprawnienie ZARZĄDZAJ. Dzięki temu twórca zakresu może odczytywać wpisy tajne w zakresie, zapisywać wpisy tajne w zakresie i zarządzać uprawnieniami w zakresie.
Uwaga
Tajne listy ACL znajdują się na poziomie zakresu. Jeśli używasz zakresów opartych na usłudze Azure Key Vault, użytkownicy, którym udzielono dostępu do zakresu, mają dostęp do wszystkich wpisów tajnych w usłudze Azure Key Vault. Aby ograniczyć dostęp, użyj oddzielnych wystąpień usługi Azure Key Vault.
W tej sekcji opisano sposób zarządzania kontrolą dostępu wpisów tajnych przy użyciu interfejsu wiersza polecenia usługi Databricks? (wersja 0.205 i nowsze). Możesz również użyć interfejsu API wpisów tajnych. Aby uzyskać informacje o poziomach uprawnień wpisów tajnych, zobacz Tajne listy ACL
Udzielanie użytkownikowi uprawnień do zakresu wpisu tajnego
Aby przyznać użytkownikowi uprawnienia do zakresu wpisu tajnego przy użyciu interfejsu wiersza polecenia usługi Databricks:
databricks secrets put-acl <scope-name> <principal> <permission>
Wysyłanie żądania put dla podmiotu zabezpieczeń, który ma już zastosowane uprawnienie zastępuje istniejący poziom uprawnień.
Pole principal
określa istniejący podmiot zabezpieczeń usługi Azure Databricks. Użytkownik jest określany przy użyciu swojego adresu e-mail, jednostki usługi przy użyciu jej applicationId
wartości i grupy przy użyciu nazwy grupy. Aby uzyskać więcej informacji, zobacz Principal (Podmiot zabezpieczeń).
Wyświetlanie uprawnień zakresu wpisu tajnego
Aby wyświetlić wszystkie uprawnienia zakresu wpisu tajnego dla danego zakresu wpisu tajnego:
databricks secrets list-acls <scope-name>
Aby uzyskać uprawnienia zakresu wpisu tajnego zastosowane do podmiotu zabezpieczeń dla danego zakresu wpisu tajnego:
databricks secrets get-acl <scope-name> <principal>
Jeśli dla danego podmiotu zabezpieczeń i zakresu nie istnieje żadna lista ACL, to żądanie zakończy się niepowodzeniem.
Usuwanie uprawnienia zakresu wpisu tajnego
Aby usunąć uprawnienie zakresu wpisu tajnego zastosowane do podmiotu zabezpieczeń dla danego zakresu wpisu tajnego:
databricks secrets delete-acl <scope-name> <principal>
Ponowne redagowanie wpisów tajnych
Przechowywanie poświadczeń jako wpisów tajnych usługi Azure Databricks ułatwia ochronę poświadczeń podczas uruchamiania notesów i zadań. Można jednak łatwo przypadkowo wydrukować wpis tajny do standardowych wyjściowych lub wyświetlić wartość podczas przypisywania zmiennej.
Aby temu zapobiec, usługa Azure Databricks redaguje wszystkie wartości wpisów tajnych odczytywanych przy użyciu polecenia dbutils.secrets.get()
. Po wyświetleniu w danych wyjściowych komórki notesu wartości wpisów tajnych są zastępowane ciągiem [REDACTED]
.
Jeśli na przykład ustawisz zmienną na wartość wpisu tajnego przy użyciu polecenia dbutils.secrets.get()
, a następnie wyświetlesz ją, ta zmienna zostanie zamieniona na [REDACTED]
.
Ostrzeżenie
Redagowanie wpisów tajnych dla danych wyjściowych komórki notesu dotyczy tylko literałów. Funkcja redagowania wpisów tajnych nie zapobiega celowym i arbitralnym przekształceniom literału tajnego. Aby zapewnić właściwą kontrolę nad wpisami tajnymi, należy użyć list kontroli dostępu, aby ograniczyć uprawnienia do uruchamiania poleceń. Zapobiega to nieautoryzowanemu dostępowi do kontekstów notesu udostępnionego.