Setiap file, folder, dan drive bersama Google Drive memiliki resource
permissions terkait. Setiap resource
mengidentifikasi izin untuk
type tertentu (user,
group, domain, anyone) dan
role (owner,
organizer, fileOrganizer, writer, commenter, reader). Misalnya, sebuah
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 kerja izin
Daftar izin untuk folder disebarkan ke bawah. Semua file dan folder turunan mewarisi izin dari induknya. Setiap kali izin atau hierarki diubah, penyebaran terjadi secara rekursif melalui semua folder bertingkat. Misalnya, jika file ada di folder, lalu folder tersebut dipindahkan ke dalam folder lain, izin pada folder baru akan disebarkan ke file. Jika folder baru memberikan peran baru kepada pengguna file, seperti "penulis", peran tersebut akan menggantikan peran lamanya.
Sebaliknya, jika file mewarisi role=writer dari folder, dan dipindahkan ke folder lain yang memberikan peran "pembaca", file tersebut kini mewarisi role=reader.
Izin yang diwarisi tidak dapat dihapus atau dikurangi pada item apa pun. Sebagai gantinya, izin ini harus disesuaikan pada induk tempat izin tersebut berasal atau folder dalam hierarki harus mengaktifkan setelan akses terbatas.
Izin yang diwarisi dapat ditingkatkan pada item. Jika izin ditingkatkan pada turunan, mengubah izin induk tidak akan memengaruhi izin turunan kecuali jika izin induk baru lebih besar daripada turunan.
Operasi izin serentak pada file yang sama tidak didukung. Hanya update terakhir yang diterapkan.
Memahami kemampuan file
Resource permissions pada akhirnya tidak
menentukan kemampuan pengguna saat ini untuk melakukan tindakan pada file atau folder.
Sebagai gantinya, resource files berisi kumpulan
kolom boolean capabilities
yang digunakan untuk menunjukkan apakah tindakan dapat dilakukan pada file atau folder.
Google Drive API menetapkan kolom ini berdasarkan resource permissions pengguna saat ini yang terkait dengan file atau folder.
Misalnya, saat Alex login ke aplikasi Anda dan mencoba membagikan file, peran Alex akan diperiksa untuk mengetahui izin pada file tersebut. Jika peran tersebut mengizinkannya membagikan file, capabilities yang terkait dengan file, seperti canShare, akan ditetapkan relatif terhadap peran tersebut. Jika Alex ingin membagikan file, aplikasi Anda akan memeriksa capabilities untuk memastikan canShare ditetapkan ke true.
Mendapatkan kemampuan file
Saat aplikasi Anda membuka file, aplikasi tersebut harus memeriksa kemampuan file dan merender UI untuk mencerminkan izin pengguna saat ini. Misalnya, jika pengguna tidak memiliki kemampuan canComment pada file, kemampuan untuk memberikan komentar harus dinonaktifkan di UI.
Untuk memeriksa kemampuan, panggil get
metode pada resource files dengan parameter jalur fileId
dan parameter fields yang ditetapkan ke kolom capabilities. Untuk
mengetahui informasi lebih lanjut tentang kolom yang ditampilkan menggunakan parameter fields, lihat
Menampilkan kolom tertentu.
Contoh kode berikut menunjukkan cara memverifikasi izin pengguna. Respons menampilkan daftar kemampuan yang dimiliki pengguna pada file. Setiap kemampuan sesuai dengan tindakan terperinci yang dapat dilakukan pengguna. Beberapa kolom hanya diisi untuk item di drive bersama.
Permintaan
GET https://www.googleapis.com/drive/v3/files/FILE_ID?fields=capabilitiesRespons
{ "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 } }
Skenario untuk berbagi resource Drive
Ada lima jenis skenario berbagi yang berbeda:
Untuk membagikan file di Drive Saya, pengguna harus memiliki
role=writerataurole=owner.Jika nilai boolean
writersCanShareditetapkan kefalseuntuk file, pengguna harus memilikirole=owner.Jika pengguna dengan
role=writermemiliki akses sementara yang diatur oleh tanggal dan waktu habis masa berlaku, dia tidak dapat membagikan file. Untuk mengetahui informasi selengkapnya, lihat Menetapkan tanggal habis masa berlaku untuk membatasi akses item.
Untuk membagikan folder di Drive Saya, pengguna harus memiliki
role=writerataurole=owner.Jika nilai boolean
writersCanShareditetapkan kefalseuntuk file, pengguna harus memilikirole=owneryang lebih permisif.Akses sementara (yang diatur oleh tanggal dan waktu habis masa berlaku) hanya diizinkan pada folder dengan
role=reader. Untuk mengetahui informasi selengkapnya, lihat lihat Menetapkan tanggal habis masa berlaku untuk membatasi akses item.
Untuk membagikan file di drive bersama, pengguna harus memiliki
role=writer,role=fileOrganizer, ataurole=organizer.- Setelan
writersCanSharetidak berlaku untuk item di drive bersama. Setelan ini diperlakukan seolah-olah selalu ditetapkan ketrue.
- Setelan
Untuk membagikan folder di drive bersama, pengguna harus memiliki
role=organizer.- Jika batasan
sharingFoldersRequiresOrganizerPermissionpada drive bersama ditetapkan kefalse, pengguna denganrole=fileOrganizerdapat membagikan folder di drive bersama tersebut.
- Jika batasan
Untuk mengelola keanggotaan drive bersama, pengguna harus memiliki
role=organizer. Hanya pengguna dan grup yang dapat menjadi anggota drive bersama.
Menggunakan parameter kolom
Jika ingin menentukan kolom yang akan ditampilkan dalam respons, Anda dapat menetapkan
fields parameter
sistem
dengan metode apa pun dari resource permissions. Jika Anda menghapus parameter fields, server akan menampilkan kumpulan kolom default yang khusus untuk metode tersebut.
Misalnya, metode list hanya menampilkan kolom id, type, kind, dan role untuk setiap file. Untuk menampilkan
kolom yang berbeda, lihat Menampilkan kolom tertentu.
Membuat izin
Dua kolom berikut diperlukan saat membuat izin:
type:typemengidentifikasi cakupan izin (user,group,domain, atauanyone). Izin dengantype=userberlaku untuk pengguna tertentu, sedangkan izin dengantype=domainberlaku untuk semua orang dalam domain tertentu.role: Kolomrolemengidentifikasi operasi yang dapat dilakukan olehtype. Misalnya, izin dengantype=userdanrole=readermemberikan akses hanya baca kepada pengguna tertentu ke file atau folder. Atau, izin dengantype=domaindanrole=commentermemungkinkan semua orang dalam domain menambahkan komentar ke file. Untuk mengetahui daftar lengkap peran dan operasi yang diizinkan oleh setiap peran, lihat Peran dan izin.
Saat membuat izin dengan type=user atau type=group, Anda juga harus
memberikan
emailAddress
untuk mengaitkan pengguna atau grup tertentu dengan izin tersebut.
Saat membuat izin dengan type=domain, Anda juga harus memberikan
domain untuk mengaitkan
domain tertentu dengan izin tersebut.
Untuk membuat izin:
- Gunakan metode
createpada resourcepermissionsdengan parameter jalurfileIduntuk file atau folder terkait. - Dalam isi permintaan, tentukan
typedanrole. - Jika
type=useratautype=group, berikanemailAddress. Jikatype=domain, berikandomain.
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{ "requests": [ { "type": "user", "role": "commenter", "emailAddress": "alex@altostrat.com" } ] }
Respons
{
"kind": "drive#permission",
"id": "PERMISSION_ID",
"type": "user",
"role": "commenter"
}Menggunakan 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. Target audiens dapat membantu Anda meningkatkan keamanan dan privasi data, serta memudahkan pengguna untuk berbagi dengan tepat. Untuk mengetahui informasi selengkapnya, lihat Tentang audiens target.
Untuk menggunakan audiens target:
Di konsol Google Admin, buka Menu > Direktori > Target audiens.
Anda harus login menggunakan akun dengan hak istimewa administrator super untuk tugas ini.
Di daftar Target audiens, klik nama target audiens. Untuk membuat target audiens, lihat Membuat target audiens
Salin ID unik dari URL target audiens:
https://admin.google.com/ac/targetaudiences/ID.Buat izin dengan
type=domain, dan tetapkan kolomdomainkeID.audience.googledomains.com.
Untuk melihat cara pengguna berinteraksi dengan target audiens, lihat Pengalaman pengguna untuk berbagi link.
Mendapatkan izin
Untuk mendapatkan izin, gunakan metode get pada resource permissions dengan parameter jalur fileId dan permissionId. Jika tidak mengetahui ID izin, Anda dapat mencantumkan semua izin menggunakan metode list.
Contoh kode berikut menunjukkan cara mendapatkan izin berdasarkan ID. Respons menampilkan instance resource permissions.
Permintaan
GET https://www.googleapis.com/drive/v3/files/FILE_ID/permissionsPERMISSION_ID
Respons
{
"kind": "drive#permissionList",
"permissions": [
{
"kind": "drive#permission",
"id": "PERMISSION_ID",
"type": "user",
"role": "commenter"
}
]
}Mencantumkan semua izin
Untuk mencantumkan izin untuk file, folder, atau drive bersama, gunakan metode list pada resource permissions dengan parameter jalur fileId.
Teruskan parameter kueri berikut untuk menyesuaikan penomoran halaman, atau untuk memfilter izin:
pageSize: Jumlah maksimum izin yang akan ditampilkan per halaman. Jika tidak ditetapkan untuk file di drive bersama, maksimal 100 hasil akan ditampilkan. Jika tidak ditetapkan untuk file yang tidak berada di drive bersama, seluruh daftar akan ditampilkan.pageToken: Token halaman, yang diterima dari panggilan daftar sebelumnya. Berikan token ini untuk mengambil halaman berikutnya.supportsAllDrives: Apakah aplikasi yang meminta mendukung Drive Saya dan drive bersama.useDomainAdminAccess: Tetapkan ketrueuntuk mengeluarkan permintaan sebagai administrator domain. Jika parameterfileIdmerujuk ke drive bersama dan peminta adalah administrator domain tempat drive bersama berada. Untuk mengetahui informasi selengkapnya, lihat Mengelola drive bersama sebagai administrator domain.includePermissionsForView: Izin tampilan tambahan yang akan disertakan dalam respons. Hanyapublishedyang didukung.
Contoh kode berikut menunjukkan cara mendapatkan semua izin. Respons menampilkan daftar izin untuk file, folder, atau drive bersama.
Permintaan
GET https://www.googleapis.com/drive/v3/files/FILE_ID/permissionsRespons
{
"kind": "drive#permissionList",
"permissions": [
{
"id": "PERMISSION_ID",
"type": "user",
"kind": "drive#permission",
"role": "commenter"
}
]
}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
updatepada resourcepermissionsdengan parameter jalurfileIdyang ditetapkan ke file, folder, atau drive bersama terkait dan parameter jalurpermissionIdyang ditetapkan ke izin yang akan diubah. Untuk menemukanpermissionId, gunakanlistmetode pada resourcepermissionsdengan parameter jalurfileId.Dalam permintaan, identifikasi
rolebaru.
Anda dapat memberikan izin pada file atau folder individual 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 role=writer kepada Alex untuk file di drive bersama. Dalam hal ini, karena peran baru lebih permisif daripada peran yang diberikan melalui keanggotaannya, izin baru akan menjadi peran efektif untuk file atau folder.
Anda dapat menerapkan update melalui semantik patch, yang berarti Anda dapat melakukan modifikasi sebagian pada resource. Anda harus secara eksplisit menetapkan kolom yang ingin diubah dalam permintaan. Kolom apa pun yang tidak disertakan dalam permintaan akan mempertahankan nilai yang ada. Untuk mengetahui informasi selengkapnya, lihat Bekerja dengan resource sebagian.
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"
}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 ke drive bersama, peran pada folder, atau peran pada file.
Untuk menentukan sumber peran untuk drive bersama, atau item dalam drive tersebut,
panggil metode get pada
permissions resource 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 permissionDetails
kolom pada permintaan list, tetapkan parameter fields ke
permissions/permissionDetails.
Kolom ini menghitung semua izin file yang diwarisi dan langsung untuk pengguna, grup, atau domain.
Contoh kode berikut menunjukkan cara menentukan sumber peran. Respons menampilkan permissionDetails dari 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 beberapa izin dengan permintaan batch
Sebaiknya gunakan batch requests untuk mengubah multiple permissions.
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 fileId dan
parameter jalur permissionId yang ditetapkan untuk menghapus izin.
Izin yang diwarisi tidak dapat dicabut. Sebagai gantinya, perbarui atau hapus izin pada folder induk. Menghapus izin pada folder juga akan mencabut akses yang setara pada item turunan.
Mengurangi izin dibandingkan dengan induk memerlukan penggunaan setelan akses terbatas.
Perhatikan bahwa menghapus akses pengguna dari item induk hanya akan mencabut izin yang diwarisi dari induk. Jika pengguna diberi izin langsung pada file atau folder turunan, aksesnya akan tetap ada. Untuk memastikan semua item turunan cocok dengan izin induk, Anda harus mengidentifikasi dan menghapus izin langsung yang diberikan kepada pengguna pada item turunan tersebut.
Contoh kode berikut menunjukkan cara mencabut akses dengan menghapus permissionId. Jika berhasil, isi respons akan berupa objek JSON kosong. Untuk mengonfirmasi bahwa izin telah dihapus, gunakan metode list pada resource permissions dengan parameter jalur fileId.
Permintaan
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID
Menetapkan tanggal habis masa berlaku untuk membatasi akses item
Saat bekerja dengan orang lain dalam project sensitif, Anda mungkin ingin membatasi akses mereka ke item tertentu di Drive setelah jangka waktu tertentu. Untuk file dan folder, Anda dapat menetapkan tanggal habis masa berlaku untuk membatasi atau menghapus akses ke item tersebut.
Untuk menetapkan tanggal habis masa berlaku:
Gunakan metode
createpada resourcepermissionsdan tetapkan kolomexpirationTimefield (bersama dengan kolom wajib lainnya). Untuk mengetahui informasi selengkapnya, lihat Membuat izin.Gunakan metode
updatepada resourcepermissionsdan tetapkan kolomexpirationTime(bersama dengan kolom wajib lainnya). Untuk mengetahui informasi selengkapnya, lihat Memperbarui izin.
Kolom
expirationTime
menunjukkan kapan izin berakhir menggunakan RFC 3339
tanggal-waktu. Waktu habis masa berlaku memiliki batasan berikut:
- Waktu habis masa berlaku hanya dapat ditetapkan pada izin pengguna dan grup.
- Waktu harus di masa mendatang.
- Waktu tidak boleh lebih dari satu tahun di masa mendatang.
- Hanya peran
readeryang memenuhi syarat untuk akses yang berakhir pada folder.
Untuk mengetahui informasi selengkapnya tentang tanggal habis masa berlaku, lihat artikel berikut:
Topik terkait
- Mengelola proposal akses tertunda
- Mengelola folder dengan akses terbatas dan luas
- Mentransfer kepemilikan file
- Melindungi konten file
- Mengakses file drive bersama yang dibagikan melalui link menggunakan kunci resource
- Peran dan izin