Każdy plik, folder i dysk współdzielony na Dysku Google ma powiązane uprawnienia. Każdy zasób określa uprawnienia dla konkretnego elementu type
(użytkownika, grupy, domeny, każdego) i elementu role
, na przykład „komentujący” lub „czytnik”. Na przykład plik może mieć uprawnienie, które przyznaje konkretnemu użytkownikowi (type=user
) dostęp tylko do odczytu (role=reader
), a inne uprawnienie umożliwia członkom określonej grupy (type=group
) dodawanie komentarzy do pliku (role=commenter
).
Pełną listę ról i operacji dozwolonych przez każdą z nich znajdziesz w artykule Role i uprawnienia.
Scenariusze udostępniania zasobów z Dysku
Istnieje 5 różnych scenariuszy udostępniania:
Aby udostępnić plik na Moim dysku, użytkownik musi mieć
role=writer
lubrole=owner
.Jeśli wartość logiczna
writersCanShare
jest ustawiona naFalse
, użytkownik musi miećrole=owner
.Jeśli użytkownik z uprawnieniami dostępu
role=writer
ma tymczasowy dostęp kontrolowany przez datę i godzinę wygaśnięcia uprawnień, nie może udostępnić pliku. Więcej informacji znajdziesz w artykule Ustawianie daty ważności w celu ograniczenia dostępu do pliku.
Aby udostępnić folder na Moim dysku, użytkownik musi mieć
role=writer
lubrole=owner
.Jeśli wartość logiczna
writersCanShare
jest ustawiona naFalse
, użytkownik musi mieć mniej restrykcyjnerole=owner
.Dostęp tymczasowy (zarządzany przez datę i godzinę wygaśnięcia) nie jest dozwolony do folderów na Moim dysku w przypadku ustawienia
role=writer
. Więcej informacji znajdziesz w artykule Ustawianie daty ważności, aby ograniczyć dostęp do pliku.
Aby udostępnić plik na dysku współdzielonym, użytkownik musi mieć
role=writer
,role=fileOrganizer
lubrole=organizer
.- Ustawienie
writersCanShare
nie ma zastosowania do elementów na dyskach współdzielonych. Jest traktowana tak, jakby miała zawsze wartośćTrue
.
- Ustawienie
Aby udostępnić folder na dysku współdzielonym, użytkownik musi mieć
role=organizer
.- Jeśli ograniczenie
sharingFoldersRequiresOrganizerPermission
na dysku współdzielonym jest ustawione naFalse
, użytkownicy z atrybutemrole=fileOrganizer
mogą udostępniać na nim foldery.
- Jeśli ograniczenie
Aby zarządzać użytkownikami dysku współdzielonego, użytkownik musi mieć
role=organizer
. Tylko użytkownicy i grupy mogą być użytkownikami dysków współdzielonych.
Aby ograniczyć dostęp do pliku, ustaw datę ważności
Gdy współpracujesz z osobami zajmującymi się projektem poufnym, możesz po pewnym czasie ograniczyć im dostęp do niektórych plików na Dysku. W przypadku plików na Moim dysku możesz ustawić datę ważności, aby ograniczyć lub zablokować dostęp do pliku.
Aby ustawić datę ważności:
- Użyj metody
permissions.create
i ustaw polepermissions.expirationTime
(wraz z innymi polami wymaganymi). Więcej informacji znajdziesz w artykule Tworzenie uprawnienia. - Użyj metody
permissions.update
i ustaw polepermissions.expirationTime
(wraz z innymi wymaganymi polami). Więcej informacji znajdziesz w sekcji Zmienianie uprawnień.
Pole expirationTime
wskazuje, kiedy uprawnienia wygasa, w formacie RFC 3339 data i godzina. Obowiązują następujące ograniczenia dotyczące okresu ważności:
- Można je ustawiać tylko na poziomie uprawnień użytkownika i grupy.
- Godzina musi przypadać w przyszłości.
- Nie może być oddalony o więcej niż rok do przodu.
Więcej informacji o dacie ważności znajdziesz w tych artykułach:
Propagacja uprawnień
Listy uprawnień folderu są rozpowszechniane w dół, a wszystkie pliki podrzędne i foldery dziedziczą uprawnienia od elementu nadrzędnego. Po każdej zmianie uprawnień lub hierarchii rozpowszechnienie odbywa się rekurencyjnie we wszystkich zagnieżdżonych folderach. Jeśli na przykład plik istnieje w folderze, a następnie zostanie on przeniesiony do innego folderu, uprawnienia do nowego folderu zostaną przeniesione do pliku. Jeśli nowy folder przypisze użytkownikowi pliku nową rolę, na przykład „autor”, zastąpi ona jego starą rolę.
I odwrotnie: jeśli plik dziedziczy właściwość role=writer
z folderu i zostanie przeniesiony do innego folderu, który pełni rolę odczytującego, odziedziczy element role=reader
.
Odziedziczonych uprawnień nie można usunąć z pliku lub folderu na dysku współdzielonym. Zamiast tego należy dostosować uprawnienia w bezpośrednim lub pośrednim elemencie nadrzędnym, z którego zostały odziedziczone. Odziedziczone uprawnienia można usuwać z elementów w sekcjach „Mój dysk” lub „Udostępnione dla mnie”.
Z kolei odziedziczone uprawnienia można zastąpić w odniesieniu do pliku lub folderu na Moim dysku. Jeśli więc plik dziedziczy role=writer
z folderu Mój dysk, możesz ustawić w tym pliku role=reader
niższy poziom uprawnień.
Możliwości
Zasób Permissions (Uprawnienia) nie określa możliwości wykonywania działań na pliku lub folderze przez bieżącego użytkownika.
Zamiast tego zasób Files zawiera zbiór pól logicznych capabilities
, które określają, czy działanie można wykonać na pliku lub folderze. Interfejs Google Drive API ustawia te pola na podstawie zasobu uprawnień bieżącego użytkownika powiązanego z plikiem lub folderem.
Na przykład, gdy Alex loguje się w aplikacji i próbuje udostępnić plik, rola Alexa jest sprawdzana pod kątem uprawnień do tego pliku. Jeśli rola umożliwia użytkownikowi udostępnianie pliku, związane z nim capabilities
, np. canShare
, są wypełniane względem roli. Jeśli Alex chce udostępnić plik, aplikacja sprawdza, czy capabilities
ma wartość true
.canShare
Przykład pobierania pliku capabilities
znajdziesz w sekcji Weryfikowanie uprawnień użytkownika.
Utwórz uprawnienie
Podczas tworzenia uprawnienia niezbędne są te 2 pola:
type
– właściwośćtype
określa zakres uprawnienia (user
,group
,domain
lubanyone
). Uprawnienietype=user
dotyczy konkretnego użytkownika, a uprawnienietype=domain
dotyczy wszystkich użytkowników w danej domenie.role
– polerole
określa operacje, które może wykonywaćtype
. Na przykład uprawnienie z uprawnieniamitype=user
irole=reader
przyznaje określonemu użytkownikowi dostęp tylko do odczytu do pliku lub folderu. Z kolei uprawnienietype=domain
irole=commenter
umożliwia wszystkim w domenie dodawanie komentarzy do pliku. Pełną listę ról i operacji dozwolonych przez każdą z nich znajdziesz w sekcji Role i uprawnienia.
Gdy tworzysz uprawnienie w przypadku uprawnień type=user
lub type=group
, musisz też podać emailAddress
, aby powiązać z tym uprawnieniem konkretnego użytkownika lub grupę.
Podczas tworzenia uprawnienia z uprawnieniem type=domain
musisz też podać domain
, aby powiązać z nim określoną domenę.
Aby utworzyć uprawnienie:
- Użyj metody
permissions.create
z metodąfileId
w przypadku powiązanego pliku lub folderu. - W treści żądania określ
type
irole
. - Jeśli
type=user
lubtype=group
, podajemailAddress
. Jeślitype=domain
, podajdomain
.
Pokaż przykład
Poniższy przykładowy kod pokazuje, jak utworzyć uprawnienie. Odpowiedź zwraca wystąpienie zasobu Permission
, w tym przypisany element permissionId
.
Wyślij prośbę
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"
}
Użyj grup odbiorców
Grupy odbiorców to określone grupy osób – na przykład działy lub zespoły. Możesz polecać je użytkownikom, aby 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. Dzięki grupom odbiorców możesz zwiększyć bezpieczeństwo i prywatność danych oraz ułatwić użytkownikom odpowiednie udostępnianie. Więcej informacji znajdziesz w artykule Grupy odbiorców.
Aby używać grup odbiorców:
W konsoli administracyjnej Google kliknij Menu > Katalog > Grupy odbiorców.
Aby wykonać te czynności, musisz zalogować się na konto z uprawnieniami superadministratora.
Na liście Grupy odbiorców kliknij nazwę grupy odbiorców. Aby dowiedzieć się, jak utworzyć grupę odbiorców, przeczytaj artykuł Tworzenie grupy odbiorców.
Skopiuj unikalny identyfikator z adresu URL grupy odbiorców:
https://admin.google.com/ac/targetaudiences/ID
.Utwórz uprawnienie w polu
type=domain
i ustaw wartośćID.audience.googledomains.com
w poludomain
.
Informacje o tym, jak użytkownicy wchodzą w interakcję z grupami odbiorców, znajdziesz w artykule Wrażenia użytkowników dotyczące udostępniania linków.
Pobieranie wszystkich uprawnień do pliku, folderu lub dysku współdzielonego
Użyj metody permissions.list
, aby uzyskać wszystkie uprawnienia do pliku, folderu lub dysku współdzielonego.
Pokaż przykład
Poniższy przykładowy kod pokazuje, jak uzyskać wszystkie uprawnienia. Odpowiedź zwraca listę uprawnień.
Wyślij prośbę
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"
}
]
}
Weryfikowanie uprawnień użytkownika
Gdy aplikacja otwiera plik, powinna sprawdzać jego możliwości i renderować interfejs użytkownika tak, aby odzwierciedlał 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.
Więcej informacji na temat capabilities
znajdziesz w sekcji Możliwości powyżej.
Aby sprawdzić możliwości, wywołaj files.get
z parametrem fileId
i fields
ustawionym na wartość capabilities
. Więcej informacji o zwracaniu pól za pomocą parametru fields
znajdziesz w artykule Zwracanie określonych pól pliku.
Pokaż przykład
Poniższy przykładowy kod pokazuje, jak zweryfikować uprawnienia użytkownika. Odpowiedź zawiera listę uprawnień użytkownika w pliku. Każda możliwość 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.
Wyślij prośbę
GET https://www.googleapis.com/drive/v3/files/FILE_ID
?fields=capabilities
Odpowiedź
{ "capabilities": { "canAcceptOwnership": false, "canAddChildren": false, "canAddMyDriveParent": false, "canChangeCopyRequiresWriterPermission": true, "canChangeSecurityUpdateEnabled": false, "canComment": true, "canCopy": true, "canDelete": true, "canDownload": true, "canEdit": true, "canListChildren": false, "canModifyContent": true, "canModifyContentRestriction": true, "canModifyLabels": true, "canMoveChildrenWithinDrive": false, "canMoveItemOutOfDrive": true, "canMoveItemWithinDrive": true, "canReadLabels": true, "canReadRevisions": true, "canRemoveChildren": false, "canRemoveMyDriveParent": true, "canRename": true, "canShare": true, "canTrash": true, "canUntrash": true } }
Określ źródło roli dla plików i folderów na dysku współdzielonym
Aby zmienić rolę w pliku lub folderze, musisz znać źródło roli. W przypadku dysków współdzielonych źródło roli może być określane na podstawie członkostwa na dysku współdzielonym, roli w folderze lub roli pliku.
Aby określić źródło roli dysku współdzielonego lub elementów na tym dysku, wywołaj permissions.get
z wartością fileId
, permissionId
i fields
wartością w polu permissionDetails
. Aby znaleźć permissionId
, użyj permissions.list
z fileId
. Aby pobierać pole permissionDetails
w żądaniu permissions.list
, ustaw parametr fields
na permissions/permissionDetails
.
To pole zawiera wszystkie odziedziczone i bezpośrednie uprawnienia do plików użytkownika, grupy lub domeny.
Pokaż przykład
Poniższy przykładowy kod pokazuje, jak określić źródło roli. Odpowiedź zwraca wartość permissionDetails
zasobu Permission
. Pole inheritedFrom
zawiera identyfikator elementu, z którego odziedziczone są uprawnienia.
Wyślij prośbę
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
}
]
}
Zmień uprawnienia
Aby zmienić uprawnienia do pliku lub folderu, możesz zmienić przypisaną rolę:
Wywołaj
permissions.update
, podającpermissionId
uprawnienia do zmiany, orazfileId
powiązany plik, folder lub dysk współdzielony. Aby znaleźćpermissionId
, użyjpermissions.list
zfileId
.Odszukaj w żądaniu nowe
role
.
Możesz przyznawać uprawnienia do poszczególnych plików i folderów na dysku współdzielonym, nawet jeśli użytkownik lub grupa jest już ich użytkownikami. Na przykład w ramach subskrypcji dysku współdzielonego Alex ma role=commenter
. Aplikacja może jednak przyznać Alexowi role=writer
dostęp do pliku na dysku współdzielonym. W tym przypadku nowa rola jest mniej rygorystyczna niż ta przypisana do użytkownika, dlatego nowe uprawnienie staje się efektywną rolą w przypadku pliku lub folderu.
Pokaż przykład
Poniższy przykładowy kod pokazuje, jak zmienić uprawnienia do pliku lub folderu z komentującego na zapisującego. Odpowiedź zwraca instancję zasobu Permission
.
Wyślij prośbę
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"
}
Anulowanie dostępu do pliku lub folderu
Aby odebrać dostęp do pliku lub folderu, wywołaj delete
, używając fileId
i permissionId
, aby usunąć uprawnienia.
W przypadku elementów na „Moim dysku” można usunąć odziedziczone uprawnienia. Usunięcie uprawnień odziedziczonych skutkuje odebraniem dostępu do danego elementu oraz ewentualnych elementów podrzędnych.
W przypadku elementów na dysku współdzielonym nie można cofnąć odziedziczonych uprawnień. Zamiast tego zaktualizuj lub unieważnij uprawnienia dotyczące pliku albo folderu nadrzędnego.
Operacja delete
służy też do usuwania uprawnień zastosowanych bezpośrednio do pliku lub folderu na dysku współdzielonym.
Pokaż przykład
Z przykładowego kodu poniżej dowiesz się, jak anulować dostęp przez usunięcie pola permissionId
. Jeśli operacja się uda, treść odpowiedzi będzie pusta. Aby potwierdzić, że uprawnienia zostały usunięte, użyj permissions.list
i fileId
.
Wyślij prośbę
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
przenosić własność plików na inne konto Google Workspace w tej samej organizacji;
Własność plików znajdujących się na „Moim dysku” można przenieść z jednego konta Google Workspace na inne konto w tej samej organizacji. Organizacja, która jest właścicielem dysku współdzielonego, jest właścicielem znajdujących się na nim plików. Dlatego przenoszenie własności nie jest obsługiwane w przypadku plików i folderów na dyskach współdzielonych. Organizatorzy dysku współdzielonego mogą przenosić pliki z niego do własnego „Mojego dysku”, co przenosi własność na nich.
Aby przenieść własność pliku na „Moim dysku”, wykonaj jedną z tych czynności:
Utwórz uprawnienie do pliku przyznające określonemu użytkownikowi (
type=user
) uprawnienia właściciela (role=owner
).Zaktualizuj uprawnienia istniejącego pliku o
role=owner
i przenieś prawo własności na określonego użytkownika (transferOwnership=true
).
Przenoszenie własności pliku z jednego konta klienta na inne
Własność plików można przenosić między kontami indywidualnymi. Dysk nie przenosi jednak własności pliku między dwoma kontami klientów, dopóki potencjalny nowy właściciel nie wyrazi zgody na przeniesienie. Aby przenieść własność pliku z jednego konta klienta na inne:
Obecny właściciel inicjuje przeniesienie własności, tworząc lub aktualizując uprawnienia potencjalnego nowego właściciela do plików. Uprawnienie musi obejmować te ustawienia:
role=writer
,type=user
ipendingOwner=true
. Jeśli nowy właściciel tworzy uprawnienia dla potencjalnego właściciela, do potencjalnego właściciela zostanie wysłane powiadomienie e-mail z informacją, że został poproszony o przejęcie własności pliku.Nowy właściciel akceptuje prośbę o przeniesienie własności, tworząc lub aktualizując uprawnienia do plików. Uprawnienie musi obejmować te ustawienia:
role=owner
itransferOwnership=true
. Jeśli nowy właściciel tworzy nowe uprawnienie, do poprzedniego właściciela jest wysyłany e-mail z powiadomieniem o przeniesieniu własności.
Po przeniesieniu pliku rola poprzedniego właściciela zostanie obniżona do writer
.
Zmienianie wielu uprawnień za pomocą żądań zbiorczych
Jeśli chcesz zmodyfikować kilka uprawnień, zdecydowanie zalecamy użycie żądań zbiorczych.
Poniżej znajdziesz przykład zbiorczej zmiany uprawnień za pomocą biblioteki klienta.