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 kerja izin
Daftar izin untuk folder diteruskan ke bawah. Semua file dan folder turunan mewarisi izin dari induk. Setiap kali izin atau hierarki diubah, propagasi terjadi secara rekursif melalui semua folder bertingkat. Misalnya, jika file ada dalam folder, lalu folder tersebut dipindahkan ke dalam folder lain, izin pada folder baru akan diterapkan 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 menyediakan peran "pembaca", file tersebut kini mewarisi
role=reader
.
Izin yang diwariskan tidak dapat dihapus dari file atau folder di drive bersama. Sebagai gantinya, izin ini harus disesuaikan pada induk langsung atau tidak langsung dari tempat izin tersebut diwarisi. Izin yang diwarisi dapat dihapus dari item di bagian "Drive Saya" atau "Dibagikan kepada saya".
Sebaliknya, izin yang diwarisi dapat diganti pada file atau folder di My
Drive. Jadi, jika file mewarisi role=writer
dari folder My
Drive, Anda dapat menyetel role=reader
pada file untuk menurunkan
tingkat izinnya.
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 suatu tindakan dapat
dilakukan pada file atau folder. Google Drive API menetapkan kolom ini berdasarkan
resource izin pengguna saat ini yang terkait dengan file atau folder.
Misalnya, saat Alex login ke aplikasi Anda dan mencoba berbagi file, peran Alex
diperiksa untuk mengetahui izin pada file tersebut. Jika peran mengizinkan mereka membagikan file,
capabilities
yang terkait dengan file, seperti canShare
, akan diisi
relatif terhadap peran. Jika Alex ingin membagikan file, aplikasi Anda akan memeriksa
capabilities
untuk memastikan canShare
disetel ke true
.
Untuk contoh pengambilan file capabilities
, lihat Mendapatkan kemampuan file.
Mendapatkan kemampuan file
Saat membuka file, aplikasi Anda 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 metode get()
pada resource files
dengan parameter jalur fileId
dan parameter fields
yang ditetapkan ke kolom capabilities
. Untuk
informasi lebih lanjut tentang kolom yang ditampilkan menggunakan parameter fields
, lihat
Menampilkan kolom tertentu.
Contoh kode berikut menunjukkan cara memverifikasi izin pengguna. Respons akan 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=capabilities
Respons
{ "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=writer
ataurole=owner
.Jika nilai boolean
writersCanShare
ditetapkan kefalse
untuk file, pengguna harus memilikirole=owner
.Jika pengguna dengan
role=writer
memiliki akses sementara yang diatur oleh tanggal dan waktu habis masa berlaku, mereka tidak dapat membagikan file. Untuk mengetahui informasi selengkapnya, lihat Menetapkan tanggal habis masa berlaku untuk membatasi akses file.
Untuk membagikan folder di Drive Saya, pengguna harus memiliki
role=writer
ataurole=owner
.Jika nilai boolean
writersCanShare
ditetapkan kefalse
untuk file, pengguna harus memilikirole=owner
yang lebih permisif.Akses sementara (diatur oleh tanggal dan waktu habis masa berlaku) tidak diizinkan di folder Drive Saya dengan
role=writer
. Untuk mengetahui informasi selengkapnya, lihat Menetapkan tanggal habis masa berlaku untuk membatasi akses file.
Untuk membagikan file di drive bersama, pengguna harus memiliki
role=writer
,role=fileOrganizer
, ataurole=organizer
.- Setelan
writersCanShare
tidak berlaku untuk item di drive bersama. Atribut ini diperlakukan seolah-olah selalu ditetapkan ketrue
.
- Setelan
Untuk membagikan folder di drive bersama, pengguna harus memiliki
role=organizer
.- Jika pembatasan
sharingFoldersRequiresOrganizerPermission
di drive bersama ditetapkan kefalse
, pengguna denganrole=fileOrganizer
dapat membagikan folder di drive bersama tersebut.
- Jika pembatasan
Untuk mengelola keanggotaan drive bersama, pengguna harus memiliki
role=organizer
. Hanya pengguna dan grup yang dapat menjadi anggota drive bersama.
Membuat izin
Dua kolom berikut diperlukan saat membuat izin:
type
:type
mengidentifikasi cakupan izin (user
,group
,domain
, atauanyone
). Izin dengantype=user
berlaku untuk pengguna tertentu, sedangkan izin dengantype=domain
berlaku untuk semua orang dalam domain tertentu.role
: Kolomrole
mengidentifikasi operasi yang dapat dilakukantype
. Misalnya, izin dengantype=user
danrole=reader
memberikan akses hanya baca kepada pengguna tertentu ke file atau folder. Atau, izin dengantype=domain
danrole=commenter
memungkinkan semua orang di 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 mengikat pengguna
atau grup tertentu ke izin.
Saat membuat izin dengan type=domain
, Anda juga harus memberikan
domain
untuk mengikat domain tertentu ke
izin.
Untuk membuat izin:
- Gunakan metode
create()
dengan parameter jalurfileId
untuk file atau folder terkait. - Dalam isi permintaan, tentukan
type
danrole
. - Jika
type=user
atautype=group
, berikanemailAddress
. Jikatype=domain
, berikandomain
.
Contoh kode berikut menunjukkan cara membuat izin. Respons menampilkan instance resource Permission
, 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 yang lebih spesifik atau terbatas, bukan seluruh organisasi Anda. Audiens target dapat membantu Anda meningkatkan keamanan dan privasi data Anda, serta memudahkan pengguna 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 melakukan 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 kolomdomain
keID.audience.googledomains.com
.
Untuk melihat cara pengguna berinteraksi dengan target audiens, lihat Pengalaman pengguna untuk berbagi link.
Mencantumkan semua izin
Gunakan metode list()
pada resource
permissions
untuk mengambil semua
izin untuk file, folder, atau drive bersama.
Contoh kode berikut menunjukkan cara mendapatkan semua izin. Respons menampilkan daftar izin.
Permintaan
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
Respons
{
"kind": "drive#permissionList",
"permissions": [
{
"id": "PERMISSION_ID
",
"type": "user",
"kind": "drive#permission",
"role": "commenter"
}
]
}
Perbarui 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
update()
di resourcepermissions
dengan parameter jalurpermissionId
yang ditetapkan ke izin yang akan diubah dan parameter jalurfileId
yang ditetapkan ke file, folder, atau drive bersama terkait. Untuk menemukanpermissionId
, gunakan metodelist()
pada resourcepermissions
dengan parameter jalurfileId
.Dalam permintaan, identifikasi
role
baru.
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.
Contoh kode berikut menunjukkan cara mengubah izin pada file atau folder dari pemberi komentar menjadi penulis. Respons menampilkan instance resource permissions
.
Permintaan
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
{ "requests": [ { "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. 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
.
Bidang 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 beberapa izin dengan permintaan batch
Sebaiknya gunakan permintaan batch untuk mengubah beberapa izin.
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()
di resource
permissions
dengan parameter jalur fileId
dan
permissionId
yang ditetapkan untuk menghapus izin.
Untuk item di "Drive Saya", izin yang diwariskan dapat dihapus. Menghapus izin yang diwariskan akan mencabut akses ke item dan item turunan, jika ada.
Untuk item di drive bersama, izin yang diwariskan tidak dapat dicabut. Perbarui atau hapus izin pada file atau folder induk.
Metode delete()
juga digunakan untuk menghapus izin yang diterapkan langsung ke file atau folder drive bersama.
Contoh kode berikut menunjukkan cara mencabut akses dengan menghapus permissionId
. Jika berhasil, isi respons akan 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 file
Saat bekerja dengan orang lain dalam project sensitif, Anda mungkin ingin membatasi akses mereka ke file tertentu di Drive setelah jangka waktu tertentu. Untuk file di Drive Saya, Anda dapat menetapkan tanggal habis masa berlaku untuk membatasi atau menghapus akses ke file tersebut.
Untuk menyetel tanggal habis masa berlaku:
Gunakan metode
create()
di resourcepermissions
dan tetapkan kolomexpirationTime
(bersama dengan kolom wajib diisi lainnya). Untuk mengetahui informasi selengkapnya, lihat Membuat izin.Gunakan metode
update()
di resourcepermissions
dan tetapkan kolomexpirationTime
(bersama dengan kolom wajib diisi lainnya). Untuk mengetahui informasi selengkapnya, lihat Memperbarui izin.
Kolom expirationTime
menunjukkan kapan masa berlaku izin berakhir menggunakan tanggal dan waktu
RFC 3339. Waktu habis masa berlaku memiliki batasan berikut:
- Waktu habis hanya dapat disetel pada izin pengguna dan grup.
- Waktu harus di masa mendatang.
- Waktu tidak boleh lebih dari satu tahun ke depan.
Untuk mengetahui informasi selengkapnya tentang tanggal habis masa berlaku, lihat artikel berikut:
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