Zarządzanie folderami z ograniczonym i rozszerzonym dostępem

Folder na Moim dysku należy do użytkownika. 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 współdzielone 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

ograniczyć dostęp do folderów do określonych użytkowników;

Foldery z ograniczonym dostępem umożliwiają ograniczenie dostępu do folderów do określonych użytkowników. Tylko użytkownicy bezpośrednio dodani do uprawnień folderu mogą go otworzyć i uzyskać dostęp do jego zawartości. Użytkownicy z dostępem dziedziczonym do folderu na Moim dysku lub folderu na dysku współdzielonym (uzyskanym przez dostęp 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 również 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 rolami owner i organizer oraz 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 Poznaj możliwości plików.

Wyświetlanie 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. Jeśli element jest folderem z typem MIME application/vnd.google-apps.folder, a pole capabilities.canListChildren ma wartość false, oznacza to, że dostęp jest ograniczony. 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=trueview=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 artykule Wyświetlenia.

Wszystkie wpisy w polu permissionDetails mają pole inherited ustawione na true, co oznacza, że uprawnienie jest dziedziczone i nie przyznano bezpośredniego dostępu do zawartości folderu.

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 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 umożliwia usuwanie hierarchii, 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. Jeśli tak, 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 dostęp 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 dostępu rozszerzonego

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 występuje, zawiera 1 wpis dotyczący uprawnień bezpośrednich do elementu w danym zakresie, a następnie wpisy dotyczące uprawnień odziedziczonych lub uprawnień członka w odniesieniu do elementu.

  2. Deweloperzy mogą wyrazić zgodę na działanie interfejsu API z dostępem rozszerzonym w usłudze Mój dysk przed wprowadzeniem obowiązkowego egzekwowania zasad w przyszłości. Możesz ustawić parametr żądania enforceExpansiveAccess na wartość true, aby przyszłe zmiany w zakresie dostępu rozszerzonego nie wpływały 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 funkcji permissions.delete() zakończy się niepowodzeniem, jeśli uprawnienie jest dziedziczone.

Wykrywanie ograniczonego dostępu i zapobieganie mu

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

Korzystając z tych metod, możesz sprawdzić pola w zasobie permissions, 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, możesz wykonać te czynności:

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

  2. Jeśli element, który chcesz przestać udostępniać, 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). Możesz wtedy utworzyć skrót do pierwotnej lokalizacji elementu, aby użytkownicy nadal mogli go używać.