Her Google Drive dosyası, klasörü ve ortak Drive'ı ile ilişkili permissions kaynaklar vardır. Her kaynak, belirli bir type (user, group, domain, anyone) ve role (owner, organizer, fileOrganizer, writer, commenter, reader) için izni tanımlar. Örneğin, bir dosya, belirli bir kullanıcıya (type=user) salt okunur erişim (role=reader) izni veren bir izne sahip olabilirken başka bir izin, belirli bir grubun (type=group) üyelerine dosyaya yorum ekleme (role=commenter) izni verebilir.
Rollerin ve her birinin izin verdiği işlemlerin tam listesi için Roller ve izinler başlıklı makaleye bakın.
İzinlerin işleyiş şekli
Bir klasörün izin listeleri aşağıya doğru yayılır. Tüm alt dosya ve klasörler, üst klasörden izinleri devralır. İzinler veya hiyerarşi her değiştirildiğinde, değişiklik tüm iç içe yerleştirilmiş klasörlerde yinelemeli olarak yayılır. Örneğin, bir klasörde bulunan bir dosya başka bir klasöre taşınırsa yeni klasördeki izinler dosyaya uygulanır. Yeni klasör, dosya kullanıcısına "yazar" gibi yeni bir rol verirse eski rolü geçersiz kılınır.
Buna karşılık, bir dosya klasörden role=writer iznini devralırsa ve "okuyucu" rolü sağlayan başka bir klasöre taşınırsa dosya artık role=reader iznini devralır.
Devralınan izinler hiçbir öğeden kaldırılamaz veya azaltılamaz. Bunun yerine, bu izinler kaynaklandıkları üst öğede ayarlanmalı veya hiyerarşideki bir klasörde sınırlı erişim ayarı etkinleştirilmelidir.
Devralınan izinler bir öğede artırılabilir. Çocuğun izni artırılırsa ebeveynin izninin değiştirilmesi, yeni ebeveyn izni çocuğun izninden daha büyük olmadığı sürece çocuğun iznini etkilemez.
Aynı dosya üzerinde eşzamanlı izin işlemleri desteklenmez. Yalnızca son güncelleme uygulanır.
Dosya özelliklerini anlama
permissions kaynağı, geçerli kullanıcının bir dosya veya klasörde işlem yapma yeteneğini nihai olarak belirlemez.
Bunun yerine, files kaynağı, bir dosya veya klasörde işlem yapılıp yapılamayacağını belirtmek için kullanılan bir boole capabilities alanları koleksiyonunu içerir.
Google Drive API, bu alanları dosya veya klasörle ilişkili mevcut kullanıcının permissions
kaynağına göre ayarlar.
Örneğin, Ali uygulamanıza giriş yapıp bir dosyayı paylaşmaya çalıştığında, Ali'nin rolü dosyadaki izinler açısından kontrol edilir. Rol, kullanıcının dosya paylaşmasına izin veriyorsa dosya ile ilgili capabilities (ör. canShare) role göre ayarlanır. Ali dosyayı paylaşmak istiyorsa uygulamanız, capabilities öğesinin canShare olarak ayarlandığından emin olmak için true öğesini kontrol eder.
Dosya özelliklerini kullanma
Uygulamanız bir dosyayı açtığında dosyanın özelliklerini kontrol etmeli ve kullanıcı arayüzünü mevcut kullanıcının izinlerini yansıtacak şekilde oluşturmalıdır. Örneğin, kullanıcının dosyada canComment özelliği yoksa kullanıcı arayüzünde yorum yapma özelliği devre dışı bırakılmalıdır.
Özellikleri kontrol etmek için get
yöntemini files kaynağında fileId
yol parametresi ve fields parametresi capabilities alanına ayarlanmış şekilde çağırın. fields parametresini kullanarak alan döndürme hakkında daha fazla bilgi için Belirli alanları döndürme başlıklı makaleye bakın.
Aşağıdaki kod örneğinde, kullanıcı izinlerinin nasıl doğrulanacağı gösterilmektedir. Yanıt, kullanıcının dosya üzerinde sahip olduğu özelliklerin listesini döndürür. Her özellik, kullanıcının gerçekleştirebileceği ayrıntılı bir işleme karşılık gelir. Bazı alanlar yalnızca ortak Drive'lardaki öğeler için doldurulur.
İstek
GET https://www.googleapis.com/drive/v3/files/FILE_ID?fields=capabilitiesYanıt
{ "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 } }
Drive kaynaklarını paylaşma senaryoları
Beş farklı paylaşım senaryosu vardır:
Drive'ım'daki bir dosyayı paylaşmak için kullanıcının
role=writerveyarole=ownererişimine sahip olması gerekir.Dosya için
writersCanShareBoole değerifalseolarak ayarlanmışsa kullanıcınınrole=ownerolması gerekir.role=writersimgesine sahip kullanıcının, geçerlilik bitiş tarihi ve saatiyle yönetilen geçici erişimi varsa dosyayı paylaşamaz. Daha fazla bilgi için Öğe erişimini sınırlamak üzere sona erme tarihi belirleme başlıklı makaleyi inceleyin.
Drive'ım klasöründeki bir klasörü paylaşmak için kullanıcının
role=writerveyarole=ownerolması gerekir.Dosya için
writersCanShareboole değerifalseolarak ayarlanmışsa kullanıcının daha kapsamlırole=owneriznine sahip olması gerekir.Geçerlilik bitiş tarihi ve saatiyle yönetilen geçici erişime yalnızca
role=readeriçeren klasörlerde izin verilir. Daha fazla bilgi için Öğe erişimini sınırlamak üzere sona erme tarihi belirleme başlıklı makaleyi inceleyin.
Ortak Drive'daki bir dosyayı paylaşmak için kullanıcının
role=writer,role=fileOrganizerveyarole=organizeriznine sahip olması gerekir.writersCanShareayarı, ortak drive'lardaki öğeler için geçerli değildir. Her zamantrueolarak ayarlanmış gibi değerlendirilir.
Kullanıcının, ortak Drive'daki bir klasörü paylaşmak için
role=organizerolması gerekir.- Bir ortak Drive'daki
sharingFoldersRequiresOrganizerPermissionkısıtlamasıfalseolarak ayarlanırsarole=fileOrganizeriznine sahip kullanıcılar bu ortak Drive'daki klasörleri paylaşabilir.
- Bir ortak Drive'daki
Kullanıcının ortak Drive üyeliğini yönetebilmesi için
role=organizerolması gerekir. Ortak drive'ların üyeleri yalnızca kullanıcılar ve gruplar olabilir.
Alanlar parametresini kullanma
Yanıt içinde döndürülecek alanları belirtmek istiyorsanız fields system
parametresini
permissions kaynağının herhangi bir yöntemiyle ayarlayabilirsiniz. fields parametresini atlarsanız sunucu, yönteme özgü varsayılan bir alan kümesi döndürür.
Örneğin, list yöntemi her dosya için yalnızca id, type, kind ve role alanlarını döndürür. Farklı alanlar döndürmek için Belirli alanları döndürme başlıklı makaleye bakın.
İzin oluşturma
İzin oluştururken aşağıdaki iki alan gereklidir:
type:typeizin kapsamını (user,group,domainveyaanyone) tanımlar.type=userile verilen izin belirli bir kullanıcı için geçerliykentype=domainile verilen izin belirli bir alandaki herkes için geçerlidir.role:rolealanı,typeöğesinin gerçekleştirebileceği işlemleri tanımlar. Örneğin,type=userverole=readerizinleri, belirli bir kullanıcıya dosya veya klasörde salt okuma erişimi verir. Alternatif olarak,type=domainverole=commenterizinleri, alan adındaki herkesin dosyaya yorum eklemesine olanak tanır. Rollerin ve her birinin izin verdiği işlemlerin tam listesi için Roller ve izinler başlıklı makaleyi inceleyin.
type=user veya type=group izni oluşturduğunuzda, belirli kullanıcıyı ya da grubu izinle ilişkilendirmek için emailAddress de sağlamanız gerekir.
type=domain iznini oluşturduğunuzda, belirli bir alanı izne bağlamak için domain de sağlamanız gerekir.
İzin oluşturmak için:
- İlişkili dosya veya klasör için
fileIdyol parametresiylepermissionskaynağındacreateyöntemini kullanın. - İstek gövdesinde
typeveroledeğerlerini belirtin. type=userveyatype=groupiseemailAddresssağlayın.type=domainisedomainsağlayın.
Aşağıdaki kod örneğinde, iznin nasıl oluşturulacağı gösterilmektedir. Yanıtta, atanan permissionId dahil olmak üzere bir permissions kaynağının örneği döndürülür.
İstek
POST https://www.googleapis.com/drive/v3/files/FILE_ID/permissions{ "requests": [ { "type": "user", "role": "commenter", "emailAddress": "alex@altostrat.com" } ] }
Yanıt
{
"kind": "drive#permission",
"id": "PERMISSION_ID",
"type": "user",
"role": "commenter"
}Hedef kitleleri kullanma
Hedef kitleler, kullanıcıların öğelerini paylaşmaları için önerebileceğiniz, bölümler veya ekipler gibi kullanıcı gruplarıdır. Kullanıcıları, öğelerini kuruluşunuzun tamamı yerine daha belirli veya sınırlı bir kitleyle paylaşmaya teşvik edebilirsiniz. Hedef kitleler, verilerinizin güvenliğini ve gizliliğini artırmanıza yardımcı olabilir ve kullanıcıların uygun şekilde paylaşım yapmasını kolaylaştırabilir. Daha fazla bilgi için Hedef kitleler hakkında başlıklı makaleyi inceleyin.
Hedef kitleleri kullanmak için:
Google Yönetici Konsolu'nda Menü > Dizin > Hedef kitleler'e gidin.
Bu görev için süper yönetici ayrıcalıklarına sahip bir hesapla oturum açmanız gerekir.
Hedef kitleler listesinde hedef kitlenin adını tıklayın. Hedef kitle oluşturmak için Hedef kitle oluşturma başlıklı makaleyi inceleyin.
Hedef kitle URL'sinden benzersiz kimliği kopyalayın:
https://admin.google.com/ac/targetaudiences/ID.type=domainile izin oluşturun vedomainalanınıID.audience.googledomains.comolarak ayarlayın.
Kullanıcıların hedef kitlelerle nasıl etkileşim kurduğunu görmek için Bağlantı paylaşımıyla ilgili kullanıcı deneyimi başlıklı makaleyi inceleyin.
İzin alma
İzin almak için permissions kaynağında get yöntemini fileId ve permissionId yolu parametreleriyle birlikte kullanın. İzin kimliğini bilmiyorsanız list yöntemini kullanarak tüm izinleri listeleyebilirsiniz.
Aşağıdaki kod örneğinde, kimliğe göre izin alma işlemi gösterilmektedir. Yanıt, permissions kaynağının bir örneğini döndürüyor.
İstek
GET https://www.googleapis.com/drive/v3/files/FILE_ID/permissionsPERMISSION_ID
Yanıt
{
"kind": "drive#permissionList",
"permissions": [
{
"kind": "drive#permission",
"id": "PERMISSION_ID",
"type": "user",
"role": "commenter"
}
]
}Tüm izinleri listeleme
Bir dosya, klasör veya ortak Drive'ın izinlerini listelemek için fileId yol parametresiyle birlikte permissions kaynağında list yöntemini kullanın.
İzinlerin sayfalandırılmasını özelleştirmek veya izinleri filtrelemek için aşağıdaki sorgu parametrelerini iletin:
pageSize: Sayfa başına döndürülecek maksimum izin sayısı. Ortak Drive'daki dosyalar için ayarlanmamışsa en fazla 100 sonuç döndürülür. Ortak Drive'da olmayan dosyalar için ayarlanmamışsa listenin tamamı döndürülür.pageToken: Önceki bir liste çağrısından alınan sayfa jetonu. Sonraki sayfayı almak için bu jetonu sağlayın.supportsAllDrives: İstekte bulunan uygulamanın hem Drive'ım hem de ortak drive'ları destekleyip desteklemediği.useDomainAdminAccess: İsteği alan yöneticisi olarak göndermek içintrueolarak ayarlayın.fileIdparametresi bir ortak Drive'ı ifade ediyorsa ve istekte bulunan kişi, ortak Drive'ın ait olduğu alanın yöneticisiyse. Daha fazla bilgi için Ortak Drive'ları alan yöneticileri olarak yönetme başlıklı makaleyi inceleyin.includePermissionsForView: Yanıta dahil edilecek ek görünüm izinleri. Yalnızcapublisheddesteklenir.
Aşağıdaki kod örneğinde tüm izinlerin nasıl alınacağı gösterilmektedir. Yanıt, bir dosya, klasör veya ortak Drive'ın izinlerinin listesini döndürür.
İstek
GET https://www.googleapis.com/drive/v3/files/FILE_ID/permissionsYanıt
{
"kind": "drive#permissionList",
"permissions": [
{
"id": "PERMISSION_ID",
"type": "user",
"kind": "drive#permission",
"role": "commenter"
}
]
}İzinleri güncelle
Bir dosya veya klasördeki izinleri güncellemek için atanan rolü değiştirebilirsiniz. Rol kaynağını bulma hakkında daha fazla bilgi için Rol kaynağını belirleme başlıklı makaleye bakın.
updateyöntemini,fileIdyol parametresi ilişkili dosya, klasör veya ortak drive'a,permissionIdyol parametresi ise değiştirilecek izne ayarlanmış şekildepermissionskaynağında çağırın.permissionIdöğesini bulmak içinfileIdyol parametresine sahippermissionskaynağındalistyöntemini kullanın.İstekte yeni
role'yı belirtin.
Kullanıcı veya grup zaten üye olsa bile ortak Drive'daki tek tek dosya ya da klasörlerde izin verebilirsiniz. Örneğin, Ali'nin ortak Drive üyeliği kapsamında role=commenter
var. Ancak uygulamanız, Ali'ye ortak Drive'daki bir dosya için role=writer izni verebilir. Bu durumda, yeni rol üyelik üzerinden verilen rolden daha izin verici olduğundan, dosya veya klasör için etkili rol yeni izin olur.
Güncellemeleri yama semantiği aracılığıyla uygulayabilirsiniz. Bu, bir kaynakta kısmi değişiklikler yapabileceğiniz anlamına gelir. İsteğinizde değiştirmek istediğiniz alanları açıkça ayarlamanız gerekir. İsteğe dahil edilmeyen alanlar mevcut değerlerini korur. Daha fazla bilgi için Kısmi kaynaklarla çalışma başlıklı makaleyi inceleyin.
Aşağıdaki kod örneğinde, bir dosya veya klasördeki izinlerin commenter'dan writer'ya nasıl değiştirileceği gösterilmektedir. Yanıt, permissions kaynağının bir örneğini döndürüyor.
İstek
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID
{
"role": "writer"
}Yanıt
{
"kind": "drive#permission",
"id": "PERMISSION_ID",
"type": "user",
"role": "writer"
}Rol kaynağını belirleme
Bir dosya veya klasördeki rolü değiştirmek için rolün kaynağını bilmeniz gerekir. Ortak Drive'larda bir rolün kaynağı, ortak Drive üyeliğine, klasördeki role veya dosyadaki role göre belirlenebilir.
Bir ortak Drive'ın veya bu Drive'daki öğelerin rol kaynağını belirlemek için fileId ve permissionId yol parametreleriyle get yöntemini permissions kaynağında çağırın ve fields parametresini permissionDetails alanına ayarlayın.
permissionId öğesini bulmak için permissions kaynağında fileId yol parametresiyle birlikte list yöntemini kullanın. list isteğinde permissionDetails alanını getirmek için fields parametresini permissions/permissionDetails olarak ayarlayın.
Bu alan, kullanıcı, grup veya alan için devralınan ve doğrudan dosya izinlerinin tümünü listeler.
Aşağıdaki kod örneğinde, rol kaynağının nasıl belirleneceği gösterilmektedir. Yanıt, permissions kaynağının permissionDetails değerini döndürür. inheritedFrom alanı, iznin devralındığı öğenin kimliğini sağlar.
İstek
GET https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID?fields=permissionDetails&supportsAllDrives=true
Yanıt
{
"permissionDetails": [
{
"permissionType": "member",
"role": "commenter",
"inheritedFrom": "INHERITED_FROM_ID",
"inherited": true
},
{
"permissionType": "file",
"role": "writer",
"inherited": false
}
]
}Toplu isteklerle birden fazla izni güncelleme
Birden fazla izni değiştirmek için toplu istekleri kullanmanızı önemle tavsiye ederiz.
Aşağıda, bir istemci kitaplığıyla toplu izin değişikliği yapma örneği verilmiştir.
Java
Python
Node.js
PHP
.NET
İzni silme
Bir dosya veya klasöre erişimi iptal etmek için fileId ve permissionId yol parametreleri izni silinecek şekilde ayarlanmış olarak permissions kaynağında delete yöntemini çağırın.
Devralınan izinler iptal edilemez. Bunun yerine, üst dosya veya klasördeki izni güncelleyin ya da silin. Bir klasördeki iznin silinmesi, öğeye ve varsa alt öğelere erişimi iptal eder.
Ebeveyne kıyasla izinleri azaltmak için sınırlı erişim ayarı kullanılmalıdır.
Aşağıdaki kod örneğinde, permissionId silinerek erişimin nasıl iptal edileceği gösterilmektedir. Başarılı olursa yanıt metni boş bir JSON nesnesi olur. İznin kaldırıldığını onaylamak için fileId yol parametresiyle permissions kaynağında list yöntemini kullanın.
İstek
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID
Öğe erişimini sınırlamak için son kullanma tarihi belirleme
Hassas bir proje üzerinde başkalarıyla çalışırken belirli bir süre sonra bu kişilerin Drive'daki belirli öğelere erişimini kısıtlamak isteyebilirsiniz. Dosya ve klasörlere erişimi sınırlayan veya kaldıran bir geçerlilik bitiş tarihi belirleyebilirsiniz.
Geçerlilik bitiş tarihini ayarlamak için:
createyönteminipermissionskaynağında kullanın veexpirationTimealanını (diğer gerekli alanlarla birlikte) ayarlayın. Daha fazla bilgi için İzin oluşturma başlıklı makaleyi inceleyin.permissionskaynağındaupdateyöntemini kullanın veexpirationTimealanını (diğer gerekli alanlarla birlikte) ayarlayın. Daha fazla bilgi için İzinleri güncelleme başlıklı makaleyi inceleyin.
expirationTime alanı, RFC 3339
tarih-saat kullanılarak iznin ne zaman sona ereceğini belirtir. Son kullanma süreleriyle ilgili aşağıdaki kısıtlamalar geçerlidir:
- Yalnızca kullanıcı ve grup izinlerinde ayarlanabilirler.
- Zaman gelecekte olmalıdır.
- Zaman, şu anki tarihten en fazla bir yıl sonrası olabilir.
- Klasörde erişimin süresinin dolması için yalnızca
readerrolü uygundur.
Son kullanma tarihi hakkında daha fazla bilgi için aşağıdaki makaleleri inceleyin:
İlgili konular
- Bekleyen erişim tekliflerini yönetme
- Sınırlı ve geniş kapsamlı erişime sahip klasörleri yönetme
- Dosya sahipliğini aktarma
- Dosya içeriğini koruma
- Kaynak anahtarlarını kullanarak bağlantı ile paylaşılan Drive dosyalarına erişme
- Roller ve izinler