Każdy plik, folder i dysk współdzielony na Dysku Google ma powiązane z nim zasoby
permissions
. Każdy zasób określa uprawnienia dla konkretnego type
(user
, group
, domain
, anyone
) i role
(owner
, organizer
, fileOrganizer
, writer
, commenter
, reader
). Na przykład plik może mieć uprawnienia przyznające konkretnemu użytkownikowi (type=user
) dostęp tylko do odczytu (role=reader
), a inne uprawnienia mogą przyznawać członkom konkretnej grupy (type=group
) możliwość dodawania komentarzy do pliku (role=commenter
).
Pełną listę ról i operacji, które każda z nich umożliwia, znajdziesz w artykule Role i uprawnienia.
Jak działają uprawnienia
Listy uprawnień do folderu są propagowane w dół. Wszystkie pliki i foldery podrzędne dziedziczą uprawnienia z folderu nadrzędnego. Gdy uprawnienia lub hierarchia zostaną zmienione, propagacja następuje rekurencyjnie we wszystkich zagnieżdżonych folderach. Jeśli na przykład plik znajduje się w folderze, a ten folder zostanie przeniesiony do innego folderu, uprawnienia nowego folderu zostaną przeniesione na plik. Jeśli nowy folder przyznaje użytkownikowi pliku nową rolę, np. „edytujący”, zastępuje ona jego starą rolę.
Jeśli plik dziedziczy role=writer
z folderu i zostanie przeniesiony do innego folderu, który zapewnia rolę „czytelnik”, plik dziedziczy teraz role=reader
.
Nie można usunąć odziedziczonych uprawnień z pliku lub folderu na dysku współdzielonym. Zamiast tego uprawnienia należy dostosować w bezpośrednim lub pośrednim elemencie nadrzędnym, z którego zostały odziedziczone. Uprawnienia dziedziczone można usuwać z elementów w sekcji „Mój dysk” lub „Udostępnione dla mnie”.
Z kolei odziedziczone uprawnienia można zastąpić w przypadku pliku lub folderu na Moim dysku. Jeśli więc plik dziedziczy role=writer
z folderu Mój dysk, możesz ustawić role=reader
w pliku, aby obniżyć poziom uprawnień.
Jednoczesne operacje dotyczące uprawnień do tego samego pliku nie są obsługiwane. Stosowana jest tylko ostatnia aktualizacja.
Możliwości plików
Zasób permissions
nie określa ostatecznie możliwości bieżącego użytkownika do wykonywania działań na pliku lub folderze.
Zamiast tego zasób files
zawiera zbiór pól logicznych capabilities
, które wskazują, czy można wykonać działanie na pliku lub folderze.
Interfejs Google Drive API ustawia te pola na podstawie permissions
zasobu powiązanego z plikiem lub folderem bieżącego użytkownika.
Jeśli na przykład Aleks zaloguje się w Twojej aplikacji i spróbuje udostępnić plik, sprawdzimy, czy ma do niego uprawnienia. Jeśli rola umożliwia udostępnianie pliku, capabilities
związane z plikiem, np. canShare
, są ustawiane względem roli. Jeśli Alex chce udostępnić plik, Twoja aplikacja sprawdza, czy capabilities
jest ustawione na true
.canShare
Pobieranie możliwości pliku
Gdy aplikacja otworzy plik, powinna sprawdzić jego możliwości i wyświetlić interfejs odzwierciedlający uprawnienia bieżącego użytkownika. Jeśli na przykład użytkownik nie ma uprawnień canComment
do pliku, możliwość komentowania powinna być wyłączona w interfejsie.
Aby sprawdzić możliwości, wywołaj metodę get
w zasobie files
z parametrem ścieżki fileId
i parametrem fields
ustawionym na pole capabilities
. Więcej informacji o zwracaniu pól za pomocą parametru fields
znajdziesz w artykule Zwracanie określonych pól.
Poniższy przykładowy kod pokazuje, jak weryfikować uprawnienia użytkownika. Odpowiedź zawiera listę uprawnień użytkownika do pliku. Każda funkcja odpowiada szczegółowemu działaniu, które może wykonać użytkownik. Niektóre pola są wypełniane tylko w przypadku elementów na dyskach współdzielonych.
Żądanie
GET https://www.googleapis.com/drive/v3/files/FILE_ID
?fields=capabilities
Odpowiedź
{ "capabilities": { "canAcceptOwnership": false, "canAddChildren": false, "canAddMyDriveParent": false, "canChangeCopyRequiresWriterPermission": true, "canChangeItemDownloadRestriction": true, "canChangeSecurityUpdateEnabled": false, "canChangeViewersCanCopyContent": true, "canComment": true, "canCopy": true, "canDelete": true, "canDisableInheritedPermissions": false, "canDownload": true, "canEdit": true, "canEnableInheritedPermissions": true, "canListChildren": false, "canModifyContent": true, "canModifyContentRestriction": true, "canModifyEditorContentRestriction": true, "canModifyOwnerContentRestriction": true, "canModifyLabels": true, "canMoveChildrenWithinDrive": false, "canMoveItemIntoTeamDrive": true, "canMoveItemOutOfDrive": true, "canMoveItemWithinDrive": true, "canReadLabels": true, "canReadRevisions": true, "canRemoveChildren": false, "canRemoveContentRestriction": false, "canRemoveMyDriveParent": true, "canRename": true, "canShare": true, "canTrash": true, "canUntrash": true } }
Scenariusze udostępniania zasobów Dysku
Istnieje 5 różnych scenariuszy udostępniania:
Aby udostępnić plik na Moim dysku, użytkownik musi mieć uprawnienia
role=writer
lubrole=owner
.Jeśli wartość logiczna
writersCanShare
jest ustawiona nafalse
, użytkownik musi miećrole=owner
.Jeśli użytkownik z uprawnieniami
role=writer
ma tymczasowy dostęp określony przez datę i godzinę wygaśnięcia, nie może udostępnić pliku. Więcej informacji znajdziesz w artykule Ustawianie daty wygaśnięcia dostępu do pliku.
Aby udostępnić folder na Moim dysku, użytkownik musi mieć uprawnienia
role=writer
lubrole=owner
.Jeśli wartość logiczna
writersCanShare
jest ustawiona nafalse
w przypadku pliku, użytkownik musi mieć większe uprawnieniarole=owner
.Tymczasowy dostęp (określony przez datę i godzinę wygaśnięcia) nie jest dozwolony w przypadku folderów na Moim dysku z
role=writer
. Więcej informacji znajdziesz w artykule Ustawianie daty wygaśnięcia, aby ograniczyć dostęp do pliku.
Aby udostępnić plik na dysku współdzielonym, użytkownik musi mieć uprawnienia
role=writer
,role=fileOrganizer
lubrole=organizer
.- Ustawienie
writersCanShare
nie dotyczy elementów na dyskach współdzielonych. Jest traktowana tak, jakby zawsze miała wartośćtrue
.
- Ustawienie
Aby udostępnić folder na dysku współdzielonym, użytkownik musi mieć uprawnienia
role=organizer
.- Jeśli ograniczenie na dysku współdzielonym
sharingFoldersRequiresOrganizerPermission
jest ustawione nafalse
, użytkownicy z uprawnieniamirole=fileOrganizer
mogą udostępniać foldery na tym dysku współdzielonym.
- Jeśli ograniczenie na dysku współdzielonym
Aby zarządzać użytkownikami dysku współdzielonego, użytkownik musi mieć uprawnienia
role=organizer
. Tylko użytkownicy i grupy mogą być członkami dysków współdzielonych.
Używanie parametru fields
Jeśli chcesz określić pola, które mają być zwracane w odpowiedzi, możesz ustawić fields
parametr systemfields
w dowolnej metodzie zasobu permissions
. Jeśli pominiesz parametr fields
, serwer zwróci domyślny zestaw pól specyficznych dla danej metody.
Na przykład metoda list
zwraca tylko pola id
, type
, kind
i role
dla każdego pliku. Aby zwrócić inne pola, zobacz Zwracanie określonych pól.
Tworzenie uprawnień
Podczas tworzenia uprawnień wymagane są te 2 pola:
type
: znaktype
określa zakres uprawnień (user
,group
,domain
lubanyone
). Uprawnienie ze znakiemtype=user
dotyczy konkretnego użytkownika, a uprawnienie ze znakiemtype=domain
– wszystkich użytkowników w danej domenie.role
: polerole
określa operacje, które może wykonaćtype
. Na przykład uprawnienie z wartościamitype=user
irole=reader
przyznaje konkretnemu użytkownikowi dostęp do pliku lub folderu tylko do odczytu. Uprawnienia z ikonamitype=domain
irole=commenter
umożliwiają wszystkim użytkownikom domeny dodawanie komentarzy do pliku. Pełną listę ról i operacji, które są dozwolone w przypadku każdej z nich, znajdziesz w sekcji Role i uprawnienia.
Gdy tworzysz uprawnienie, w którym występuje type=user
lub type=group
, musisz też podać emailAddress
, aby powiązać konkretnego użytkownika lub grupę z uprawnieniem.
Gdy tworzysz uprawnienie, w którym type=domain
, musisz też podać domain
, aby powiązać konkretną domenę z uprawnieniem.
Aby utworzyć uprawnienie:
- Użyj metody
create
w przypadku zasobupermissions
z parametrem ścieżkifileId
powiązanego pliku lub folderu. - W treści żądania określ
type
irole
. - Jeśli wartość to
type=user
lubtype=group
, podajemailAddress
. Jeślitype=domain
, podajdomain
.
Poniższy przykładowy kod pokazuje, jak utworzyć uprawnienie. Odpowiedź zwraca instancję zasobu permissions
, w tym przypisany element permissionId
.
Żądanie
POST https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
{ "requests": [ { "type": "user", "role": "commenter", "emailAddress": "alex@altostrat.com" } ] }
Odpowiedź
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "commenter"
}
Korzystanie z grup odbiorców
Grupy odbiorców to obejmujące zbiory osób (na przykład działy lub zespoły) grupy, które możesz polecać użytkownikom, tak by ci udostępniali im swoje elementy. Możesz zachęcić użytkowników do udostępniania elementów konkretnym odbiorcom lub ograniczonej ich grupie, a nie całej organizacji. Grupy odbiorców mogą pomóc Ci zwiększyć bezpieczeństwo i prywatność danych oraz ułatwić użytkownikom odpowiednie udostępnianie. Więcej informacji znajdziesz w artykule Informacje o odbiorcach docelowych.
Aby korzystać z list odbiorców:
W konsoli administracyjnej Google otwórz Menu> Katalog > Grupy odbiorców.
Aby wykonać te czynności, musisz zalogować się na konto z uprawnieniami superadministratora.
Na liście grup odbiorców kliknij nazwę grupy odbiorców. Aby utworzyć grupę odbiorców, przeczytaj artykuł Tworzenie grupy odbiorców.
Skopiuj unikalny identyfikator z adresu URL odbiorców docelowych:
https://admin.google.com/ac/targetaudiences/ID
.Utwórz uprawnienie z
type=domain
i ustaw poledomain
naID.audience.googledomains.com
.
Aby dowiedzieć się, jak użytkownicy wchodzą w interakcje z odbiorcami docelowymi, przeczytaj artykuł Wpływ ustawień na interfejs udostępniania linku przez użytkownika.
Uzyskiwanie uprawnień
Aby uzyskać uprawnienie, użyj metody get
w zasobie permissions
z parametrami ścieżki fileId
i permissionId
. Jeśli nie znasz identyfikatora uprawnienia, możesz wyświetlić listę wszystkich uprawnień za pomocą metody list
.
Poniższy przykładowy kod pokazuje, jak uzyskać uprawnienia według identyfikatora. Odpowiedź zwraca instancję zasobu permissions
.
Żądanie
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissionsPERMISSION_ID
Odpowiedź
{
"kind": "drive#permissionList",
"permissions": [
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "commenter"
}
]
}
Wyświetlanie listy wszystkich uprawnień
Aby wyświetlić listę uprawnień do pliku, folderu lub dysku współdzielonego, użyj metody list
w zasobie permissions
z parametrem ścieżki fileId
.
Przekaż te parametry zapytania, aby dostosować stronicowanie uprawnień lub je filtrować:
pageSize
: maksymalna liczba uprawnień do zwrócenia na stronę. Jeśli nie jest ustawiona w przypadku plików na dysku współdzielonym, zwracanych jest maksymalnie 100 wyników. Jeśli nie jest ustawiona w przypadku plików, które nie znajdują się na dysku współdzielonym, zwracana jest cała lista.pageToken
: token strony otrzymany z poprzedniego wywołania listy. Podaj ten token, aby pobrać następną stronę.supportsAllDrives
: czy aplikacja wysyłająca żądanie obsługuje zarówno Mój dysk, jak i dyski współdzielone.useDomainAdminAccess
: ustaw natrue
, aby wysłać żądanie jako administrator domeny. Jeśli parametrfileId
odnosi się do dysku współdzielonego, a osoba wysyłająca żądanie jest administratorem domeny, do której należy dysk współdzielony. Więcej informacji znajdziesz w artykule Zarządzanie dyskami współdzielonymi jako administrator domeny.includePermissionsForView
: uprawnienia dodatkowego widoku, które mają być uwzględnione w odpowiedzi. Obsługiwana jest tylko wartośćpublished
.
Poniższy przykładowy kod pokazuje, jak uzyskać wszystkie uprawnienia. Odpowiedź zawiera listę uprawnień do pliku, folderu lub dysku współdzielonego.
Żądanie
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
Odpowiedź
{
"kind": "drive#permissionList",
"permissions": [
{
"id": "PERMISSION_ID
",
"type": "user",
"kind": "drive#permission",
"role": "commenter"
}
]
}
Zmień uprawnienia
Aby zaktualizować uprawnienia do pliku lub folderu, możesz zmienić przypisaną rolę. Więcej informacji o znajdowaniu źródła roli znajdziesz w artykule Określanie źródła roli.
Wywołaj metodę
update
w zasobiepermissions
z parametremfileId
path ustawionym na powiązany plik, folder lub dysk współdzielony oraz parametrempermissionId
path ustawionym na uprawnienie do zmiany. Aby znaleźćpermissionId
, użyj metodylist
w zasobiepermissions
z parametrem ścieżkifileId
.W prośbie podaj nowy
role
.
Możesz przyznać uprawnienia do poszczególnych plików lub folderów na dysku współdzielonym, nawet jeśli użytkownik lub grupa jest już członkiem. Na przykład Alex ma role=commenter
w ramach członkostwa na dysku współdzielonym. Aplikacja może jednak przyznać Alexowirole=writer
dostęp do pliku na dysku współdzielonym. W tym przypadku, ponieważ nowa rola jest bardziej restrykcyjna niż rola przyznana w ramach subskrypcji, nowe uprawnienia stają się efektywną rolą dla pliku lub folderu.
Aktualizacje możesz stosować za pomocą semantyki poprawek, co oznacza, że możesz wprowadzać częściowe modyfikacje zasobu. W żądaniu musisz wyraźnie ustawić pola, które chcesz zmodyfikować. Pola, które nie są uwzględnione w żądaniu, zachowują swoje dotychczasowe wartości. Więcej informacji znajdziesz w artykule Praca z częściowymi zasobami.
Poniższy przykładowy kod pokazuje, jak zmienić uprawnienia dotyczące pliku lub folderu z commenter
na writer
. Odpowiedź zwraca instancję zasobu permissions
.
Żądanie
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
{ "requests": [ { "role": "writer" } ] }
Odpowiedź
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "writer"
}
Określanie źródła roli
Aby zmienić rolę w przypadku pliku lub folderu, musisz znać źródło roli. W przypadku dysków współdzielonych źródłem roli może być członkostwo na dysku współdzielonym, rola w folderze lub rola w pliku.
Aby określić źródło roli na dysku współdzielonym lub w elementach na tym dysku, wywołaj metodę get
w zasobie permissions
z parametrami ścieżki fileId
i permissionId
oraz parametrem fields
ustawionym na pole permissionDetails
.
Aby znaleźć permissionId
, użyj metody list
w zasobie permissions
z parametrem ścieżki fileId
. Aby pobrać pole permissionDetails
w żądaniu list
, ustaw parametr fields
na permissions/permissionDetails
.
To pole zawiera wszystkie dziedziczone i bezpośrednie uprawnienia do plików użytkownika, grupy lub domeny.
Poniższy przykładowy kod pokazuje, jak określić źródło roli. Odpowiedź zwraca permissionDetails
zasobu permissions
. Pole inheritedFrom
zawiera identyfikator elementu, z którego dziedziczone jest uprawnienie.
Żądanie
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
?fields=permissionDetails&supportsAllDrives=true
Odpowiedź
{
"permissionDetails": [
{
"permissionType": "member",
"role": "commenter",
"inheritedFrom": "INHERITED_FROM_ID
",
"inherited": true
},
{
"permissionType": "file",
"role": "writer",
"inherited": false
}
]
}
Aktualizowanie wielu uprawnień za pomocą żądań zbiorczych
Zdecydowanie zalecamy używanie przesyłania zbiorczego do modyfikowania wielu uprawnień.
Poniżej znajdziesz przykład zbiorczej modyfikacji uprawnień za pomocą biblioteki klienta.
Java
Python
Node.js
PHP
.NET
Usuwanie uprawnień
Aby cofnąć dostęp do pliku lub folderu, wywołaj metodę
delete
w zasobie
permissions
z parametrami ścieżki fileId
i permissionId
ustawionymi na usunięcie uprawnień.
W przypadku elementów na „Moim dysku” można usunąć odziedziczone uprawnienia. Usunięcie odziedziczonych uprawnień powoduje cofnięcie dostępu do elementu i jego elementów podrzędnych (jeśli takie istnieją).
W przypadku elementów na dysku współdzielonym nie można cofnąć odziedziczonych uprawnień. Zamiast tego zaktualizuj lub usuń uprawnienia dotyczące pliku lub folderu nadrzędnego.
Metoda delete
służy też do usuwania uprawnień zastosowanych bezpośrednio do pliku lub folderu na dysku współdzielonym.
Poniższy przykładowy kod pokazuje, jak cofnąć dostęp przez usunięcie permissionId
. Jeśli operacja się uda, treść odpowiedzi będzie pustym obiektem JSON. Aby potwierdzić usunięcie uprawnienia, użyj metody list
w zasobie permissions
z parametrem ścieżki fileId
.
Żądanie
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
Ustawianie daty wygaśnięcia, aby ograniczyć dostęp do pliku
Jeśli współpracujesz z osobami nad projektem zawierającym dane poufne, możesz ograniczyć ich dostęp do wybranych plików na Dysku po upływie określonego czasu. W przypadku plików na Moim dysku możesz ustawić datę ważności, aby ograniczyć lub usunąć dostęp do pliku.
Aby ustawić datę ważności:
Użyj metody
create
w zasobiepermissions
i ustaw poleexpirationTime
(wraz z innymi wymaganymi polami). Więcej informacji znajdziesz w artykule Tworzenie uprawnień.Użyj metody
update
w zasobiepermissions
i ustaw poleexpirationTime
(wraz z innymi wymaganymi polami). Więcej informacji znajdziesz w sekcji Aktualizowanie uprawnień.
Pole expirationTime
określa datę wygaśnięcia uprawnień w formacie RFC 3339
data-time. Czasy wygaśnięcia podlegają tym ograniczeniom:
- Można je ustawić tylko w przypadku uprawnień użytkowników i grup.
- Czas musi przypadać w przyszłości.
- Czas nie może być oddalony o więcej niż rok w przyszłość.
Więcej informacji o dacie ważności znajdziesz w tych artykułach:
Powiązane artykuły
- Zarządzanie oczekującymi propozycjami dostępu
- Zarządzanie folderami z ograniczonym i szerokim dostępem
- Przenoszenie własności pliku
- Ochrona treści pliku
- Uzyskiwanie dostępu do plików na dysku współdzielonym udostępnionych za pomocą linku przy użyciu kluczy zasobów
- Role i uprawnienia