Setiap file, folder, dan drive bersama Google Drive memiliki resource
permissions terkait. Setiap resource mengidentifikasi izin untuk type (user, group, domain, anyone) dan role (owner, organizer, fileOrganizer, writer, commenter, reader) tertentu. Misalnya, file mungkin memiliki izin yang memberikan akses hanya baca (role=reader) kepada pengguna tertentu (type=user), sementara izin lain memberikan kemampuan kepada anggota grup tertentu (type=group) untuk menambahkan komentar ke file (role=commenter).
Untuk mengetahui daftar lengkap peran dan operasi yang diizinkan oleh setiap peran, lihat Peran dan izin.
Cara izin diterapkan
Izin disebarkan ke bawah dari folder induk ke semua item turunan:
- Diwarisi secara default: Semua file dan folder turunan secara otomatis mewarisi izin dari folder induknya.
- Tidak dapat dikurangi pada item turunan: Anda tidak dapat menghapus atau mengurangi izin yang diwariskan pada item turunan. Perubahan harus dilakukan pada induk asal, atau folder harus menggunakan setelan akses terbatas.
- Dapat diperluas pada turunan: Item turunan dapat memberikan peran yang lebih permisif, seperti memberikan
role=writerpada file di dalam folder tempat pengguna memilikirole=reader. - Dievaluasi ulang saat dipindahkan: Memindahkan item ke folder induk baru akan mengevaluasi ulang dan menerapkan izin induk baru ke item dan turunannya.
Link file dan kontrol akses
Saat Anda membagikan file atau folder kepada pengguna atau grup tertentu, URL untuk mengakses
item tidak berubah, dan link unik tidak dibuat untuk setiap pengguna.
Sebagai gantinya, item memiliki satu link konstan berdasarkan fileId-nya.
Drive mengontrol akses dengan mengevaluasi ACL item. Saat pengguna berusaha membuka link, Drive akan memverifikasi identitas terautentikasi mereka berdasarkan ACL. Jika izin dicabut atau mencapai tanggal berakhirnya, pengguna akan dihapus dari ACL. Jika pengguna mencoba membuka link lagi, Drive akan menolak akses.
Memahami kemampuan file
Resource permissions menentukan siapa yang memiliki
akses (ACL), tetapi tidak secara langsung menunjukkan apakah pengguna saat ini dapat
melakukan tindakan tertentu di UI aplikasi Anda.
Sebagai gantinya, resource files berisi kumpulan
kolom capabilities
boolean (seperti canComment, canShare, atau canDelete) yang
dihitung secara dinamis oleh Google Drive API berdasarkan peran pengguna dan setelan item.
Mendapatkan kemampuan file
Saat merender UI aplikasi, periksa files.capabilities daripada mengurai
izin secara langsung:
- Panggil metode
files.getdenganfields=capabilities. Untuk mengetahui informasi selengkapnya, lihat Mengembalikan kolom tertentu. - Gunakan tanda boolean yang ditampilkan untuk mengaktifkan atau menonaktifkan tindakan yang sesuai di
antarmuka Anda. Misalnya, nonaktifkan komentar jika
canCommentadalahfalse.
Skenario untuk berbagi resource Drive
Tabel berikut menunjukkan peran dan kondisi yang diperlukan untuk membagikan resource Drive di berbagai lokasi dan jenis item:
| Lokasi | Item | Peran yang diperlukan | Batasan utama |
|---|---|---|---|
| Drive Saya | File atau folder | owner atau writer |
Memerlukan owner jika writersCanShare=false.Akses non-permanen ke folder memerlukan reader (lihat Menetapkan tanggal habis masa berlaku). |
| Drive bersama | File | organizer, fileOrganizer, atau writer |
writersCanShare selalu diperlakukan sebagai true. |
| Drive bersama | Folder | organizer |
fileOrganizer juga dapat berbagi jika sharingFoldersRequiresOrganizerPermission adalah false. |
| Drive bersama | Langganan | organizer |
Hanya berlaku untuk user atau group (bukan domain). |
Mengelola izin
Tabel berikut merangkum metode yang tersedia di resource
permissions:
| Metode | Endpoint API | Parameter utama | Referensi |
|---|---|---|---|
| Berkreasi | POST https://www.googleapis.com/drive/v3/files/{fileId}/permissions |
role, type, emailAddress atau domain |
permissions.create |
| Dapatkan | GET https://www.googleapis.com/drive/v3/files/{fileId}/permissions/{permissionId} |
fields |
permissions.get |
| Daftar | GET https://www.googleapis.com/drive/v3/files/{fileId}/permissions |
pageSize, supportsAllDrives, pageToken |
permissions.list |
| Update | PATCH https://www.googleapis.com/drive/v3/files/{fileId}/permissions/{permissionId} |
role, allowFileDiscovery |
permissions.update |
| Hapus | DELETE https://www.googleapis.com/drive/v3/files/{fileId}/permissions/{permissionId} |
supportsAllDrives |
permissions.delete |
Membuat izin
Untuk membagikan file, folder, atau drive bersama, panggil metode
create di resource
permissions dengan fileId.
Membuat izin akan menambahkan entri ACL baru ke item dan menampilkan permissionId yang ditetapkan.
Dalam isi permintaan, berikan kolom berikut:
role: Tingkat akses yang akan diberikan (misalnya,reader,commenter, atauwriter). Untuk daftar lengkap, lihat Peran dan izin.type: Cakupan penerima hibah (user,group,domain, atauanyone).- ID penerima hibah (wajib berdasarkan
type):emailAddress: Wajib jikatypeadalahuserataugroup.domain: Diperlukan jikatypeadalahdomain.
Contoh kode berikut menunjukkan cara membuat izin. Respons menampilkan instance resource permissions, termasuk permissionId yang ditetapkan.
Permintaan
POST https://www.googleapis.com/drive/v3/files/FILE_ID/permissions{ "role": "commenter", "type": "user", "emailAddress": "alex@altostrat.com" }
Respons
{
"kind": "drive#permission",
"id": "PERMISSION_ID",
"type": "user",
"role": "commenter"
}Membagikan kepada audiens target
Target audiens adalah kelompok orang—seperti departemen atau tim—yang dapat Anda rekomendasikan kepada pengguna untuk diajak berbagi item. Anda dapat mendorong pengguna untuk berbagi item dengan audiens terbatas atau yang lebih spesifik, bukan seluruh organisasi Anda. Audiens target dapat membantu Anda meningkatkan keamanan dan privasi data Anda, serta memudahkan pengguna berbagi dengan tepat.
Untuk berbagi dengan audiens target, tetapkan type=domain dan tetapkan domain ke
<TARGET_AUDIENCE_ID>.audience.googledomains.com. Untuk mengetahui detail cara menemukan atau membuat audiens target di konsol Google Admin, lihat Tentang audiens target.
Untuk melihat cara pengguna berinteraksi dengan target audiens, lihat Pengalaman pengguna untuk berbagi link.
Mendapatkan izin
Untuk mendapatkan izin, panggil metode get
pada resource permissions dengan parameter jalur
fileId dan permissionId. Jika Anda tidak mengetahui ID
izin, cantumkan semua izin terlebih dahulu.
Mencantumkan izin
Untuk mencantumkan izin untuk file, folder, atau drive bersama, panggil metode
list di resource
permissions dengan parameter jalur
fileId yang diperlukan.
Anda dapat menyertakan salah satu parameter kueri opsional berikut untuk melakukan penomoran halaman atau memfilter respons:
pageSize(opsional): Jumlah maksimum izin yang akan ditampilkan per halaman. Jika tidak ditetapkan untuk file di drive bersama, paling banyak 100 hasil akan ditampilkan. Jika tidak ditetapkan untuk file yang tidak ada di drive bersama, seluruh daftar akan ditampilkan.pageToken(opsional): Token halaman dari panggilan daftar sebelumnya untuk mengambil halaman berikutnya.supportsAllDrives(opsional): Apakah aplikasi yang meminta mendukung Drive Saya dan drive bersama.useDomainAdminAccess(opsional): Setel ketrueuntuk mengeluarkan permintaan sebagai administrator domain. Pemohon akan diberi akses jika parameterfileIdmerujuk ke drive bersama dan pemohon adalah administrator domain tempat drive bersama berada. Untuk mengetahui informasi selengkapnya, lihat Mengelola drive bersama sebagai administrator domain.includePermissionsForView(opsional): Izin lihat tambahan yang akan disertakan dalam respons. Hanyapublishedyang didukung.fields(opsional): Kolom tertentu yang akan ditampilkan dalam respons. Secara default,listhanya menampilkanid,type,kind, danrole. Untuk menampilkan kolom tambahan (sepertipermissionDetails), tentukan kolom tersebut menggunakan parameter ini. Untuk informasi selengkapnya, lihat Mengembalikan kolom tertentu.
Menentukan sumber peran
Untuk mengubah peran pada file atau folder, Anda harus mengetahui sumber peran tersebut. Untuk drive bersama, sumber peran dapat didasarkan pada keanggotaan di drive bersama, peran di folder, atau peran di file.
Untuk menentukan sumber peran untuk drive bersama, atau item dalam drive tersebut,
panggil metode get di resource
permissions dengan parameter jalur fileId dan
permissionId, serta parameter fields yang ditetapkan ke kolom
permissionDetails.
Untuk menemukan permissionId, gunakan metode
list pada resource permissions
dengan parameter jalur fileId. Untuk mengambil kolom permissionDetails
pada permintaan list, tetapkan parameter fields ke
permissions/permissionDetails.
Kolom ini mencantumkan semua izin file yang diwarisi dan langsung untuk pengguna, grup, atau domain.
Contoh kode berikut menunjukkan cara menentukan sumber peran. Respons menampilkan permissionDetails resource permissions. Kolom inheritedFrom memberikan ID item tempat izin diwarisi.
Permintaan
GET https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID?fields=permissionDetails&supportsAllDrives=true
Respons
{
"permissionDetails": [
{
"permissionType": "member",
"role": "commenter",
"inheritedFrom": "INHERITED_FROM_ID",
"inherited": true
},
{
"permissionType": "file",
"role": "writer",
"inherited": false
}
]
}Memperbarui izin
Untuk memperbarui izin pada file atau folder, Anda dapat mengubah peran yang ditetapkan. Untuk mengetahui informasi selengkapnya tentang cara menemukan sumber peran, lihat Menentukan sumber peran.
Panggil metode
updatedi resourcepermissionsdengan parameter jalurfileIdyang ditetapkan ke file, folder, atau drive bersama terkait dan parameter jalurpermissionIdyang ditetapkan ke izin yang akan diubah. Untuk menemukanpermissionId, gunakan metodelistpada resourcepermissionsdengan parameter jalurfileId.Dalam permintaan, identifikasi
rolebaru.
Anda dapat memberikan izin pada setiap file atau folder di drive bersama meskipun pengguna atau grup sudah menjadi anggota. Misalnya, Alex memiliki role=commenter
sebagai bagian dari keanggotaannya di drive bersama. Namun, aplikasi Anda dapat memberikan izin
role=writer untuk file di drive bersama kepada Alex. Dalam hal ini, karena peran baru
lebih permisif daripada peran yang diberikan melalui keanggotaan mereka, izin
baru menjadi peran efektif untuk file atau folder.
Anda dapat menerapkan update melalui semantik patch, yang berarti Anda dapat melakukan modifikasi parsial pada resource. Anda harus menetapkan secara eksplisit kolom yang ingin diubah dalam permintaan Anda. Kolom apa pun yang tidak disertakan dalam permintaan akan mempertahankan nilai yang ada. Untuk mengetahui informasi selengkapnya, lihat Bekerja dengan resource parsial.
Selain mengubah peran, Anda juga dapat mengubah kemampuan penemuan item saat izin type adalah domain atau anyone. Agar file bersama dapat ditelusuri atau tidak tercantum, sertakan kolom boolean allowFileDiscovery dalam permintaan patch Anda. Menyetelnya ke true memungkinkan item muncul di hasil penelusuran untuk audiens yang ditentukan, meskipun mereka belum diberi link langsung. Anda tidak perlu menghapus dan membuat ulang izin untuk mengubah setelan ini.
Contoh kode berikut menunjukkan cara mengubah izin pada file atau folder dari commenter menjadi writer. Respons menampilkan instance resource permissions.
Permintaan
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID
{
"role": "writer"
}Respons
{
"kind": "drive#permission",
"id": "PERMISSION_ID",
"type": "user",
"role": "writer"
}Memperbarui beberapa izin dengan permintaan batch
Modifikasi izin serentak pada file, folder, atau drive bersama yang sama tidak didukung. Batasan ini berlaku untuk semua operasi perubahan (seperti update atau delete), terlepas dari apakah Anda mengubah izin untuk penerima yang sama atau penerima yang berbeda, dan apakah permintaan berasal dari satu aplikasi atau beberapa pengguna.
Drive mengevaluasi dan memperbarui izin item sebagai satu ACL. Operasi serentak menyebabkan kondisi race saat "penulisan terakhir menang",
yang dapat secara diam-diam menimpa perubahan izin atau memicu
error sharingRateLimitExceeded.
Untuk menghindari konflik, jalankan perubahan izin pada item yang sama secara berurutan, atau gunakan permintaan batch untuk mengubah beberapa izin dalam satu permintaan.
Berikut adalah contoh melakukan modifikasi izin batch dengan library klien.
Java
Python
Node.js
PHP
.NET
Menghapus izin
Untuk mencabut akses ke file atau folder, panggil metode
delete pada resource
permissions dengan parameter jalur fileId dan
permissionId.
Izin yang diwariskan tidak dapat dicabut secara langsung pada item turunan. Perbarui atau hapus izin di folder induk (atau gunakan setelan akses terbatas).
Perhatikan bahwa menghapus akses pengguna dari item induk hanya akan mencabut izin yang diwarisi dari induk tersebut. Jika pengguna juga diberi izin langsung pada item turunan, akses langsung tersebut akan tetap ada. Untuk mengonfirmasi bahwa izin dihapus,
panggil list dengan fileId.
Tetapkan tanggal habis masa berlaku
Untuk memberikan akses sementara ke file atau folder, tetapkan kolom
expirationTime (tanggal dan waktu RFC 3339) saat
memanggil metode create atau update.
Waktu habis masa berlaku memiliki batasan berikut:
- Hanya dapat disetel pada izin
userdangroup(bukandomainatauanyone). - Waktu harus di masa mendatang, hingga maksimum satu tahun.
- Untuk folder, akses sementara hanya didukung dengan peran
reader.
Topik terkait
- Mengelola proposal akses yang menunggu keputusan
- Mengelola folder dengan akses terbatas dan luas
- Mentransfer kepemilikan file
- Melindungi konten file
- Mengakses file Drive yang dibagikan melalui link menggunakan kunci resource
- Peran dan izin