Kontrola dostępu w Google Cloud Search opiera się na koncie Google użytkownika. Podczas indeksowania treści wszystkie listy ACL dotyczące elementów muszą być rozwiązywane do prawidłowych identyfikatorów użytkowników lub grup Google (adresów e-mail).
W wielu przypadkach repozytorium nie ma bezpośredniej wiedzy o kontach Google. Zamiast tego użytkownicy mogą być reprezentowani przez konta lokalne lub używać logowania federowanego z dostawcą tożsamości i identyfikatorem innym niż adres e-mail użytkownika, aby zidentyfikować każde konto. Ten identyfikator nazywa się identyfikatorem zewnętrznym.
Źródła tożsamości utworzone za pomocą konsoli administracyjnej pomagają wypełnić tę lukę między systemami tożsamości, ponieważ:
- Zdefiniuj niestandardowe pole użytkownika na potrzeby przechowywania zewnętrznych identyfikatorów. To pole służy do mapowania identyfikatorów zewnętrznych na konto Google.
- Zdefiniuj przestrzeń nazw dla grup zabezpieczeń zarządzanych przez repozytorium lub dostawcę tożsamości.
Używaj źródeł tożsamości, gdy:
- Repozytorium nie ma informacji o głównym adresie e-mail użytkownika w Google Workspace ani w Google Cloud Directory.
- Repozytorium definiuje grupy kontroli dostępu, które nie odpowiadają grupom opartym na adresie e-mail w Google Workspace.
Źródła tożsamości zwiększają wydajność indeksowania przez odłączenie indeksowania od mapowania tożsamości. Dzięki temu możesz odłożyć sprawdzenie użytkownika na później, gdy tworzysz listy kontroli dostępu i indeksujesz elementy.
Przykładowe wdrożenie
Rysunek 1 przedstawia przykładową implementację, w której firma korzysta zarówno z repozytoriów lokalnych, jak i z repozytoriów w chmurze. Każde repozytorium używa innego typu identyfikatora zewnętrznego do odwoływania się do użytkowników.
Repozytorium 1 identyfikuje użytkownika za pomocą adresu e-mail potwierdzonego za pomocą protokołu SAML. Repozytorium 1 zna podstawowy adres e-mail użytkownika w Google Workspace lub Cloud Directory, więc źródło tożsamości nie jest potrzebne.
Repozytorium 2 integruje się bezpośrednio z katalogiem lokalnym i identyfikuje użytkownika za pomocą atrybutu sAMAccountName
. Repozytorium 2 używa atrybutu sAMAccountName
jako identyfikatora zewnętrznego, więc potrzebne jest źródło tożsamości.
Tworzenie źródła tożsamości
Jeśli potrzebujesz źródła tożsamości, zapoznaj się z artykułem Mapowanie tożsamości użytkowników w Cloud Search.
Zanim utworzysz łącznik treści, musisz utworzyć źródło tożsamości, ponieważ do tworzenia list ACL i indeksowania danych potrzebny jest identyfikator źródła tożsamości. Jak już wspomnieliśmy, utworzenie źródła tożsamości powoduje też utworzenie własności użytkownika niestandardowej w Cloud Directory. Użyj tej właściwości, aby zapisać zewnętrzny identyfikator każdego użytkownika w repozytorium. Nazwa właściwości jest tworzona zgodnie z konwencją IDENTITY_SOURCE_ID_identity
.
Poniższa tabela zawiera 2 źródła tożsamości: jedno z nazwami kont SAM (sAMAccountName) jako identyfikatorami zewnętrznymi i drugie z identyfikatorami użytkowników (uid) jako identyfikatorami zewnętrznymi.
Źródło tożsamości | właściwości użytkownika | identyfikator zewnętrzny, |
---|---|---|
id1 | id1_identity | sAMAccountName |
id2 | id2_identity | uid |
Utwórz źródło tożsamości dla każdego możliwego identyfikatora zewnętrznego, który jest używany do odwoływania się do użytkownika w Twojej firmie.
W tabeli poniżej pokazano, jak użytkownik z kontem Google i 2 identyfikatorami zewnętrznymi (id1_identity i id2_identity) oraz ich wartościami wygląda w katalogu Cloud Directory:
użytkownik | id1_identity | id2_identity | |
---|---|---|---|
Anna | ann@example.com | example\ann | 1001 |
Podczas tworzenia list ACL na potrzeby indeksowania możesz odwoływać się do tego samego użytkownika, używając 3 różnych identyfikatorów (adresu e-mail w Google, nazwy konta SAM i identyfikatora uid).
Zapisz listy ACL użytkownika
Aby utworzyć podmioty za pomocą podanego identyfikatora zewnętrznego, użyj metody getUserPrincpal() lub getGroupPrincipal().
Ten przykład pokazuje, jak pobrać uprawnienia do pliku. Te uprawnienia obejmują nazwę każdego użytkownika, który ma dostęp do pliku.
Ten fragment kodu pokazuje, jak tworzyć podmioty będące właścicielami za pomocą identyfikatora zewnętrznego (externalUserName
) przechowywanego w atrybutach.
Na koniec ten fragment kodu pokazuje, jak utworzyć podmioty, które są czytelnikami pliku.
Gdy masz już listę czytelników i właścicieli, możesz utworzyć listę ACL:
Interfejs API REST używa w przypadku identyfikatorów wzorców identitysources/IDENTITY_SOURCE_ID/users/EXTERNAL_ID
do tworzenia podmiotów. Wróćmy do poprzednich tabel. Jeśli utworzysz tabelę ACL z użytkownikiem id1_identity
(SAMAccountName) Ann, identyfikator będzie miał wartość:
identitysources/id1_identity/users/example/ann
Ten identyfikator jest nazywany pośrednim identyfikatorem użytkownika, ponieważ stanowi łącznik między zewnętrznym identyfikatorem a identyfikatorami Google przechowywanymi w katalogu Cloud Directory.
Więcej informacji o modelowaniu uprawnień ACL używanych w repozytorium znajdziesz w artykule Uprawnienia ACL.
Grupy map
Źródła tożsamości służą też jako przestrzeń nazw dla grup używanych w regułach dostępu. Za pomocą tej funkcji przestrzeni nazw możesz tworzyć i mapować grupy używane tylko do celów zabezpieczeń lub lokalne w repozytorium.
Utwórz grupę i zarządzaj członkostwem w niej za pomocą interfejsu Cloud Identity Groups API. Aby powiązać grupę ze źródłem tożsamości, użyj nazwy zasobu źródła tożsamości jako przestrzeni nazw grupy.
Ten fragment kodu pokazuje, jak utworzyć grupę za pomocą interfejsu Cloud Identity Groups API:
Tworzenie listy ACL grupy
Aby utworzyć grupę ACL, użyj metody getGroupPrincipal(), aby utworzyć obiekt głównego grupy przy użyciu podanego identyfikatora zewnętrznego. Następnie utwórz ACL za pomocą klasy Acl.Builder w ten sposób:
Oprogramowanie sprzęgające tożsamości
Do tworzenia list ACL i indeksowania elementów można używać zewnętrznych identyfikatorów spoza Google, ale użytkownicy nie będą widzieć elementów w wynikach wyszukiwania, dopóki ich zewnętrzne identyfikatory nie zostaną przekształcone w identyfikatory Google w katalogu Cloud. Aby mieć pewność, że katalog usługi Cloud Directory zna zarówno identyfikator Google, jak i identyfikatory zewnętrzne użytkownika, możesz skorzystać z 3 sposobów:
- Ręcznie aktualizuj każdy profil użytkownika w konsoli administracyjnej. Ten proces jest zalecany tylko w przypadku testowania i tworzenia prototypów z użyciem kilku profili użytkowników.
- Przypisz identyfikatory zewnętrzne do identyfikatorów Google za pomocą interfejsu Directory API. Ten proces jest zalecany osobom, które nie mogą używać pakietu SDK Identity Connector.
- Utwórz oprogramowanie sprzęgające tożsamości za pomocą pakietu SDK oprogramowania sprzęgającego tożsamości. Ten pakiet SDK upraszcza korzystanie z interfejsu Directory API do mapowania identyfikatorów.
Łączniki tożsamości to programy służące do mapowania zewnętrznych identyfikatorów tożsamości (użytkowników i grup) na wewnętrzne tożsamości Google używane przez Google Cloud Search. Jeśli musisz utworzyć źródło tożsamości, musisz też utworzyć łącznik tożsamości.
Google Cloud Directory Sync (GCDS) to przykład łącznika tożsamości. Ten łącznik tożsamości mapuje informacje o użytkownikach i grupach z Microsoft Active Directory na Cloud Directory wraz z atrybutami użytkowników, które mogą reprezentować ich tożsamość w innych systemach.
Synchronizowanie tożsamości za pomocą interfejsu API REST
Aby zsynchronizować tożsamości za pomocą interfejsu API REST, użyj metody update
.
Ponownie mapowanie tożsamości
Po przypisaniu tożsamości elementu do innej tożsamości musisz ponownie zindeksować elementy, aby nowa tożsamość zaczęła obowiązywać. Na przykład
- Jeśli spróbujesz usunąć mapowanie od użytkownika lub zmienić jego mapowanie na innego użytkownika, oryginalne mapowanie będzie nadal zachowane, dopóki nie przeprowadzisz ponownego indeksowania.
- Jeśli usuniesz zmapowaną grupę obecną w zasadach dostępu do elementu, a następnie utworzysz nową grupę z tym samym identyfikatorem
groupKey
, nowa grupa nie zapewni dostępu do elementu, dopóki nie zostanie on ponownie zindeksowany.