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 verebilirken 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 yayılma şekli
İzinler, üst klasörlerden tüm alt öğelere doğru yayılır:
- Varsayılan olarak devralınır: Tüm alt dosya ve klasörler, üst klasörlerindeki izinleri otomatik olarak devralır.
- Alt öğelerde azaltılamaz: Bir alt öğede devralınan izni kaldıramaz veya azaltamazsınız. Değişiklikler, kaynağı oluşturan üst klasörde yapılmalıdır veya klasörde sınırlı erişim ayarı kullanılmalıdır.
- Alt öğelerde genişletilebilir: Bir alt öğe, daha kapsamlı bir rol verebilir. Örneğin, kullanıcının
role=readeriznine sahip olduğu bir klasördeki dosyayarole=writerizni verilebilir. - Taşındığında yeniden değerlendirilir: Bir öğenin yeni bir üst klasöre taşınması, yeni üst klasörün izinlerinin öğeye ve alt öğelerine yeniden değerlendirilip uygulanmasına neden olur.
Dosya bağlantıları ve erişim denetimi
Belirli bir kullanıcı veya grupla dosya ya da klasör paylaştığınızda öğeye erişmek için kullanılan URL değişmez ve her kullanıcı için benzersiz bir bağlantı oluşturulmaz.
Bunun yerine, öğenin fileId özelliğine dayalı tek ve sabit bir bağlantısı vardır.
Drive, öğenin EKL'sini değerlendirerek erişimi kontrol eder. Kullanıcı bir bağlantıyı açmaya çalıştığında Drive, kimliği doğrulanmış kimliğini ACL'ye göre doğrular. Bir izin iptal edilirse veya geçerlilik bitiş tarihine ulaşırsa kullanıcı, ACL'den kaldırılır. Kullanıcı bağlantıyı tekrar ziyaret etmeye çalışırsa Drive erişimi reddeder.
Dosya özelliklerini anlama
permissions kaynağı, kimin erişimi olduğunu (ACL) tanımlar ancak mevcut kullanıcının uygulamanızın kullanıcı arayüzünde belirli bir işlemi yapıp yapamayacağını doğrudan belirtmez.
Bunun yerine, files kaynağı, Google Drive API'nin kullanıcının rolüne ve öğe ayarlarına göre dinamik olarak hesapladığı bir boolean capabilities alanları (ör. canComment, canShare veya canDelete) koleksiyonunu içerir.
Dosya özelliklerini kullanma
Uygulamanızın kullanıcı arayüzünü oluştururken izinleri doğrudan ayrıştırmak yerine files.capabilities öğesini kontrol edin:
files.getyönteminifields=capabilitiesile çağırın. Daha fazla bilgi için Belirli alanları döndürme başlıklı makaleyi inceleyin.- Arayüzünüzde ilgili işlemleri etkinleştirmek veya devre dışı bırakmak için döndürülen boole işaretlerini kullanın. Örneğin,
canCommentdeğerifalseise yorum yapma özelliğini devre dışı bırakın.
Drive kaynaklarını paylaşma senaryoları
Aşağıdaki tabloda, Drive kaynaklarının farklı konumlar ve öğe türleri arasında paylaşılması için gereken roller ve koşullar gösterilmektedir:
| Konum | Öğe | Gerekli roller | Temel kısıtlamalar |
|---|---|---|---|
| Drive'ım | Dosya veya klasör | owner veya writer |
owner gerektirir.writersCanShare=false.Klasörlerde erişim süresi sonu için reader gerekir (bkz. Geçerlilik bitiş tarihi belirleme). |
| Ortak Drive | Dosya | organizer, fileOrganizer veya writer |
writersCanShare her zaman true olarak ele alınır. |
| Ortak Drive | Klasör | organizer |
fileOrganizer, sharingFoldersRequiresOrganizerPermission false ise de paylaşabilir. |
| Ortak Drive | Üyelik | organizer |
Yalnızca user veya group için geçerlidir (alanlar için geçerli değildir). |
İzinleri yönetme
Aşağıdaki tabloda, permissions kaynağında kullanılabilen yöntemler özetlenmiştir:
| Yöntem | API uç noktası | Temel parametreler | Referans |
|---|---|---|---|
| Oluştur | POST https://www.googleapis.com/drive/v3/files/{fileId}/permissions |
role, type, emailAddress veya domain |
permissions.create |
| Al | GET https://www.googleapis.com/drive/v3/files/{fileId}/permissions/{permissionId} |
fields |
permissions.get |
| Listele | GET https://www.googleapis.com/drive/v3/files/{fileId}/permissions |
pageSize, supportsAllDrives ve pageToken |
permissions.list |
| Güncelle | PATCH https://www.googleapis.com/drive/v3/files/{fileId}/permissions/{permissionId} |
role, allowFileDiscovery |
permissions.update |
| Sil | DELETE https://www.googleapis.com/drive/v3/files/{fileId}/permissions/{permissionId} |
supportsAllDrives |
permissions.delete |
İzin oluşturma
Bir dosyayı, klasörü veya ortak Drive'ı paylaşmak için fileId ile permissions kaynağında create yöntemini çağırın.
İzin oluşturma işlemi, öğeye yeni bir EKL girişi ekler ve atanmış bir permissionId döndürür.
İstek gövdesinde aşağıdaki alanları belirtin:
role: Verilecek erişim düzeyi (ör.reader,commenterveyawriter). Tam liste için Roller ve izinler başlıklı makaleyi inceleyin.type: Hak sahibinin kapsamı (user,group,domainveyaanyone).- Grantee identifier (required based on
type):emailAddress:type,userveyagroupolduğunda zorunludur.domain:type,domainolduğunda zorunludur.
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{ "role": "commenter", "type": "user", "emailAddress": "alex@altostrat.com" }
Yanıt
{
"kind": "drive#permission",
"id": "PERMISSION_ID",
"type": "user",
"role": "commenter"
}Hedef kitlelerle paylaşma
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ı kitlelerle 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.
Hedef kitleyle paylaşmak için type=domain ve domain ayarlarını <TARGET_AUDIENCE_ID>.audience.googledomains.com olarak belirleyin. Google Yönetici Konsolu'nda hedef kitleleri bulma veya oluşturma hakkında ayrıntılı bilgi için Hedef kitleler hakkında başlıklı makaleyi inceleyin.
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 get yöntemini permissions kaynağında fileId ve permissionId yol parametreleriyle çağırın. İzin kimliğini bilmiyorsanız önce tüm izinleri listeleyin.
İzinleri listeleme
Bir dosya, klasör veya ortak Drive'ın izinlerini listelemek için gerekli fileId yol parametresiyle permissions kaynağında list yöntemini çağırın.
Yanıtı sayfalandırmak veya filtrelemek için aşağıdaki isteğe bağlı sorgu parametrelerinden herhangi birini ekleyebilirsiniz:
pageSize(isteğe bağlı): 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(isteğe bağlı): Sonraki sayfayı almak için önceki liste çağrısından alınan bir sayfa jetonu.supportsAllDrives(isteğe bağlı): İstekte bulunan uygulamanın hem Drive'ım hem de ortak Drive'ları destekleyip desteklemediği.useDomainAdminAccess(isteğe bağlı): İsteği alan yöneticisi olarak göndermek içintrueolarak ayarlayın. İstek sahibi,fileIdparametresi bir ortak Drive'ı ifade ediyorsa ve istek sahibi, ortak Drive'ın ait olduğu alanın yöneticisiyse erişim izni verilir. Daha fazla bilgi için Ortak Drive'ları alan yöneticileri olarak yönetme başlıklı makaleyi inceleyin.includePermissionsForView(isteğe bağlı): Yanıta eklenecek ek görüntüleme izinleri. Yalnızcapublisheddesteklenir.fields(isteğe bağlı): Yanıtta döndürülecek belirli alanlar. Varsayılan olarak,listyalnızcaid,type,kindveroledeğerlerini döndürür. Ek alanlar (ör.permissionDetails) döndürmek için bu parametreyi kullanarak alanları belirtin. Daha fazla bilgi için Belirli alanları döndürme başlıklı makaleyi inceleyin.
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
}
]
}İzni güncelleme
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.
fileIdyolu parametresi ilişkili dosya, klasör veya ortak drive'a,permissionIdyolu parametresi ise değiştirilecek izne ayarlanmış şekildeupdateyönteminipermissionskaynağı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 sayede, bir kaynakta kısmi değişiklikler yapabilirsiniz. İ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.
Rolleri değiştirmenin yanı sıra, izin type domain anyone olduğunda
öğelerin bulunabilirliğini de değiştirebilirsiniz. Paylaşılan bir dosyanın aranabilir veya listelenmemiş olması için yama isteğinize allowFileDiscovery boolean alanını ekleyin. Bu ayarın true olarak belirlenmesi, öğenin doğrudan bağlantısı verilmemiş olsa bile belirtilen kitleye yönelik arama sonuçlarında görünmesini sağlar. Bu ayarı değiştirmek için izni silip yeniden oluşturmanız gerekmez.
Aşağıdaki kod örneğinde, bir dosya veya klasördeki izinlerin commenter'dan writer'a nasıl değiştirileceği gösterilmektedir. Yanıt, permissions kaynağının bir örneğini döndürür.
İ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"
}Toplu isteklerle birden fazla izni güncelleme
Aynı dosya, klasör veya ortak drive'da eşzamanlı izin değişiklikleri desteklenmez. Bu sınırlama, aynı alıcının veya farklı alıcıların izinlerini değiştirmenize ve isteklerin tek bir uygulamadan mı yoksa birden fazla kullanıcıdan mı geldiğine bakılmaksızın tüm değiştirme işlemleri (ör. güncelleme veya silme) için geçerlidir.
Drive, bir öğenin izinlerini tek bir erişim kontrol listesi (ACL) olarak değerlendirir ve günceller. Eş zamanlı işlemler, "son yazma işlemi kazanır" şeklinde yarış koşullarına neden olur. Bu durum, izin değişikliklerinin sessizce üzerine yazılmasına veya sharingRateLimitExceeded hatalarının tetiklenmesine yol açabilir.
Çakışmaları önlemek için aynı öğede izin değişikliklerini sırayla uygulayın veya tek bir istekte birden fazla izni değiştirmek için toplu istekleri kullanın.
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 parametreleriyle permissions kaynağında delete yöntemini çağırın.
Devralınan izinler, alt öğelerde doğrudan iptal edilemez. Bunun yerine üst klasördeki izni güncelleyin veya silin (ya da sınırlı erişim ayarını kullanın).
Bir kullanıcının erişimini üst öğeden kaldırdığınızda yalnızca üst öğeden devralınan izinlerin iptal edildiğini unutmayın. Kullanıcıya bir alt öğe üzerinde doğrudan izinler de verilmişse bu doğrudan erişim devam eder. Bir iznin kaldırıldığını onaylamak için fileId ile list işlevini çağırın.
Geçerlilik bitiş tarihi belirleyin
Bir dosya veya klasöre geçici erişim izni vermek için create veya update yöntemlerini çağırırken expirationTime alanını (RFC 3339 tarih-saat) ayarlayın.
Son kullanma süreleriyle ilgili aşağıdaki kısıtlamalar geçerlidir:
- Yalnızca
uservegroupizinlerinde ayarlanabilir (domainveyaanyoneizinlerinde ayarlanamaz). - Zaman, en fazla bir yıl sonra olacak şekilde gelecekte olmalıdır.
- Klasörlerde geçici erişim yalnızca
readerrolüyle desteklenir.
İ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