Zarządzanie folderami z ograniczonym i rozszerzonym dostępem

Użytkownik jest właścicielem folderu na Moim dysku. Folder może zawierać wielu użytkowników z dostępem do różnych plików. Ten model dostępu z ograniczeniami oznacza, że różni użytkownicy mogą widzieć różne listy elementów w tym samym folderze. Użytkownik, który ma dostęp do folderu nadrzędnego na Moim dysku, ale nie do elementu w tym folderze, ma „ograniczony dostęp”. W takiej sytuacji trudno jest określić, kto ma dostęp w ramach hierarchii.

Z kolei pliki na dysku współdzielonym są własnością tego dysku. Dyski udostępnione mają rozbudowany model, więc każdy użytkownik ma taką samą listę elementów w tym samym folderze.

Wprowadzenie folderów z ograniczonym dostępem przenosi rozbudowany model dostępu z dysków współdzielonych na Mój dysk. Po wprowadzeniu tej zmiany foldery z ograniczonym dostępem będą jedynym wyjątkiem, który umożliwia ograniczenie dostępu do określonego podfolderu zarówno na Moim dysku, jak i na dyskach współdzielonych.

Z tego przewodnika dowiesz się, jak zarządzać folderami z ograniczonym i rozszerzonym dostępem na Dysku Google.

Informacje o folderach z ograniczonym dostępem

Ograniczanie dostępu do folderów do określonych użytkowników.

Foldery z ograniczonym dostępem umożliwiają ograniczenie dostępu do folderów dla określonych użytkowników. Tylko użytkownicy, których bezpośrednio dodasz do uprawnień folderu, mogą go otworzyć i uzyskać dostęp do jego zawartości. Użytkownicy z dostępem dziedziczonym do udostępnionego folderu na Moim dysku lub folderu na dysku współdzielonym (uzyskanym dzięki dostępowi do folderu nadrzędnego) mogą zobaczyć folder z ograniczeniami na Dysku, ale nie mogą go otworzyć. Ta funkcja lepiej dopasowuje sposób udostępniania elementów na Moim dysku i dyskach współdzielonych, dzięki czemu możesz porządkować foldery z treściami poufnymi obok treści udostępnianych szerzej.

Foldery z ograniczonym dostępem są dostępne zarówno na Moim dysku, jak i na dyskach współdzielonych. Użytkownicy z rolą owner na Moim dysku i organizer na dyskach współdzielonych zawsze mają dostęp do folderów z ograniczonym dostępem. Aby zmodyfikować listę użytkowników folderu, nie są wymagane żadne specjalne uprawnienia. Role, które mogą udostępniać foldery, mogą aktualizować listy użytkowników. Więcej informacji o rolach i uprawnieniach znajdziesz w artykułach Role i uprawnienia oraz Przegląd dysków współdzielonych.

Pamiętaj, że chociaż foldery są rodzajem pliku, ograniczony dostęp nie jest dostępny w przypadku plików.

Ustawianie ograniczonego dostępu do folderu

Użytkownicy z bezpośrednimi uprawnieniami do folderu mogą uzyskać dostęp do folderu z ograniczonym dostępem, ale tylko rola owner na Moim dysku i rola organizer na dyskach współdzielonych umożliwiają włączanie i wyłączanie ograniczonego dostępu.

Dodatkowo, jeśli użytkownik z rolą writer na Moim dysku ma pole logiczne writersCanShare w zasobie files ustawione na true, może też włączać i wyłączać tę funkcję.

Aby ograniczyć dostęp do folderu, ustaw wartość logiczną inheritedPermissionsDisabled w polu zasobu files na true. Gdy jest włączona opcja true, dostęp do folderu mają tylko użytkownicy z rolą owner, rolą organizer i użytkownicy z bezpośrednimi uprawnieniami do folderu.

Aby ponownie włączyć odziedziczone uprawnienia, ustaw inheritedPermissionsDisabled na false.

Sprawdzanie uprawnień do ograniczenia dostępu do folderu

Aby sprawdzić, czy możesz ograniczyć dostęp do folderu, sprawdź wartości logiczne pól capabilities.canDisableInheritedPermissions i capabilities.canEnableInheritedPermissions w zasobie files. Te ustawienia potwierdzają, czy masz uprawnienia do ograniczenia dostępu do folderu za pomocą pola inheritedPermissionsDisabled.

Więcej informacji o capabilities znajdziesz w artykule Informacje o możliwościach plików.

Wyświetlanie listy elementów podrzędnych folderu z ograniczonym dostępem

Aby sprawdzić, czy możesz wyświetlić listę elementów podrzędnych folderu, użyj pola logicznego capabilities.canListChildren.

Zwracana wartość to zawsze false, gdy element nie jest folderem lub gdy dostęp osoby wysyłającej żądanie do zawartości folderu został usunięty przez ustawienie inheritedPermissionsDisabled na false.

Jeśli Twój dostęp do zawartości folderu został usunięty, nadal możesz uzyskać dostęp do metadanych folderu za pomocą metod files.get()files.list(). Aby potwierdzić, że dostęp jest ograniczony, sprawdź treść odpowiedzi i zobacz, czy element jest folderem z typem MIME application/vnd.google-apps.folder, a pole capabilities.canListChildren ma wartość false. Jeśli spróbujesz wyświetlić listę elementów podrzędnych takiego folderu, wynik będzie zawsze pusty.

Dostęp do metadanych folderu z ograniczonym dostępem

Foldery z ograniczonym dostępem umożliwiają wyświetlanie metadanych folderu, jeśli nie masz dostępu do jego zawartości.

Gdy używasz zasobu permissions do określania dostępu użytkownika, zarówno foldery na Moim dysku, jak i foldery na dysku współdzielonym, które przyznają dostęp tylko do metadanych, zawierają w treści odpowiedzi te wartości: inheritedPermissionsDisabled=true i view=metadata. Rola jest zawsze ustawiona na reader. Pole view jest wypełniane tylko w przypadku uprawnień należących do view. Więcej informacji znajdziesz w sekcji Wyświetlenia.

Wszystkie wpisy w polu permissionDetails mają ustawione pole inherited na wartość true, co oznacza, że uprawnienie jest dziedziczone i bezpośredni dostęp do zawartości folderu nie został przyznany.

Aby przyznać dostęp zarówno do zawartości folderu, jak i do metadanych, ustaw pole inheritedPermissionsDisabled na false lub zaktualizuj rolę do reader lub wyższej.

Jeśli uprawnienie zostało najpierw ograniczone przez wyłączenie dziedziczenia w folderze (inheritedPermissionsDisabled=true), a następnie zostało dodane bezpośrednio do folderu, wartości w treści odpowiedzi zmienią się na inheritedPermissionsDisabled=true, a pole view będzie nieustawione. Jeśli folder znajduje się na dysku współdzielonym, lista permissionDetails zawiera wpis z polem inherited ustawionym na false, co oznacza, że uprawnienie nie jest dziedziczone. To uprawnienie przyznaje dostęp zarówno do zawartości folderu, jak i do metadanych, tak jak każde inne uprawnienie.

Usuwanie folderów z ograniczonym dostępem

Foldery z ograniczonym dostępem możesz usuwać za pomocą metody files.delete() w zasobie files.

Na Moim Dysku tylko właściciel elementu może usunąć hierarchię folderów. Jeśli użytkownik usunie hierarchię z folderami, które mają ograniczony dostęp i należą do innych użytkowników, foldery te zostaną przeniesione na Mój dysk właściciela.

Jeśli użytkownik ma rolę owner, cała hierarchia zostanie usunięta.

Na dyskach współdzielonych rola organizer może usuwać hierarchie, nawet jeśli zawierają one foldery z ograniczonym dostępem. Jeśli rola fileOrganizer usunie hierarchię zawierającą foldery z ograniczonym dostępem, wynik zależy od tego, czy użytkownik został ponownie dodany jako fileOrganizer w folderach z ograniczonym dostępem. W takim przypadku cała hierarchia zostanie usunięta. W przeciwnym razie foldery z ograniczonym dostępem zostaną przeniesione do folderu głównego dysku współdzielonego.

Informacje o dostępie rozszerzonym

Wprowadzenie folderów z ograniczonym dostępem rozszerza model szerokiego dostępu z dysków współdzielonych na Mój dysk. Po wdrożeniu modelu dostępu posiadanie dostępu do folderu będzie oznaczać co najmniej taki sam poziom dostępu do wszystkich elementów w hierarchii tego folderu. Foldery z ograniczonym dostępem to jedyny wyjątek, który umożliwia ograniczenie dostępu do określonego podfolderu zarówno na Moim dysku, jak i na dyskach współdzielonych. Oznacza to również, że jeśli Twój folder nie ma ograniczonego dostępu, nie możesz już usuwać dostępu odziedziczonego z folderu nadrzędnego. W takim przypadku interfejs Drive API zwróci komunikat o błędzie. Aby zdefiniować bardziej szczegółową kontrolę dostępu w hierarchii, możesz ustawić ograniczony dostęp do folderu.

Dostosowywanie się do rozszerzonego dostępu

Aby ułatwić programistom dostosowanie się do dostępu rozszerzonego, wprowadziliśmy kilka ulepszeń w interfejsie Google Drive API:

  1. Pole permissionDetails[] w zasobie permissions jest teraz wypełnione w przypadku elementów na Moim dysku. Wcześniej pola były albo nieustawione, albo replikowane z pola teamDrivePermissionDetails w odpowiednich przypadkach. Wypełnione są tylko pola permissionTypeinherited na Moim dysku.

    Pole permissionDetails[].inherited wskazuje, czy uprawnienie jest dziedziczone z elementu nadrzędnego. Umożliwia wykrywanie, czy określone role (np. reader) są dziedziczone z elementu nadrzędnego, oraz czy wyższa rola (np. writer) jest przyznana bezpośrednio w przypadku danego elementu.

    Podczas wyświetlania uprawnień do elementu pole permissionDetails[] może zawierać wiele wpisów. Jeśli jest obecny, zawiera jeden wpis dotyczący uprawnień bezpośrednich do elementu w danym zakresie, a następnie wpisy dotyczące uprawnień odziedziczonych lub uprawnień członka do elementu.

  2. Deweloperzy mogą włączyć rozszerzony dostęp do interfejsu API w sekcji Mój Dysk przed wprowadzeniem obowiązkowego egzekwowania zasad w przyszłości. Możesz ustawić parametr żądania enforceExpansiveAccess na true, aby przyszłe zmiany w zakresie dostępu nie miały wpływu na Twoją aplikację.

    Jeśli teraz wyrazisz zgodę, interfejs API będzie działać tak samo w przypadku elementów na Moim dysku, jak w przypadku elementów na dyskach współdzielonych. Na przykład każda próba ograniczenia dostępu poniżej odziedziczonej roli kończy się niepowodzeniem podczas wywoływania funkcji permissions.update(). Podobnie wywołanie metody permissions.delete() nie powiedzie się, jeśli uprawnienie jest dziedziczone.

Wykrywanie i zapobieganie ograniczonemu dostępowi

Aplikacja może tworzyć ograniczony dostęp (użytkownik ma dostęp do folderu nadrzędnego Mój dysk, ale nie do pliku w tym folderze) w folderach na Moim dysku, gdy używa metod permissions.update() lub permissions.delete().

Korzystając z tych metod, możesz sprawdzić pola w permissionszasobie, aby zobaczyć, gdzie żądanie może utworzyć ograniczony dostęp, i uniknąć wysyłania takich żądań. Aby wykryć tę sytuację, użyj pola enforceExpansiveAccessw swoim żądaniu.

Jeśli aplikacja ma już ograniczony dostęp do folderów, wykonaj te czynności:

  1. Przejdź przez hierarchię folderów, aby usunąć ograniczony dostęp. Zamiast tego skonfiguruj ograniczony dostęp do folderu.

  2. Jeśli element, którego udostępnianie chcesz cofnąć, jest plikiem, możesz utworzyć folder pośredni, ustawić dla niego ograniczony dostęp i przenieść do niego plik.

  3. Jeśli nie chcesz korzystać z folderów z ograniczonym dostępem, ale musisz usunąć niektóre uprawnienia, możesz przenieść plik do folderu prywatnego (np. do folderu głównego Mój dysk). Następnie możesz utworzyć skrót do pierwotnej lokalizacji elementu, aby użytkownicy nadal mogli z niego korzystać.