Her Google Drive dosyası, klasörü ve ortak Drive'ın ilişkili izinler kaynakları vardır. Her kaynak belirli bir type
(kullanıcı, grup, alan, herkes) ve role
(ör. "yorumcu" veya "okuyucu") için verilen izni tanımlar. Örneğin, bir dosya belirli bir kullanıcıya (type=user
) salt okuma erişimi
(role=reader
) veren bir izne sahipken, başka bir izin belirli bir grubun
(type=group
) üyelerine bir dosyaya yorum ekleme (role=commenter
) izni veriyor olabilir.
Rollerin ve her birinin izin verdiği işlemlerin tam listesi için Roller ve izinler bölümüne bakın.
Drive kaynaklarını paylaşmayla ilgili senaryolar
Beş farklı paylaşım senaryosu türü vardır:
Kullanıcının Drive'ım bölümünde dosya paylaşabilmesi için
role=writer
veyarole=owner
öğesine sahip olması gerekir.Dosya için
writersCanShare
boole değeriFalse
olarak ayarlanırsa kullanıcınınrole=owner
değerine sahip olması gerekir.role=writer
hesabına sahip kullanıcının bir son kullanma tarihi ve saatine tabi geçici erişimi varsa dosyayı paylaşamaz. Daha fazla bilgi edinmek için Dosya erişimini sınırlamak için geçerlilik bitiş tarihi belirleme bölümünü inceleyin.
Kullanıcının Drive'ım bölümündeki bir klasörü paylaşabilmesi için
role=writer
veyarole=owner
öğesine sahip olması gerekir.writersCanShare
boole değeri, dosya içinFalse
olarak ayarlanırsa kullanıcının daha geniş kapsamlırole=owner
seçeneğine sahip olması gerekir.role=writer
içeren Drive'ım klasörlerinde geçici erişime (geçerlilik bitiş tarihi ve saatiyle yönetilen) izin verilmez. Daha fazla bilgi edinmek için Dosya erişimini sınırlamak için geçerlilik bitiş tarihi belirleme bölümünü inceleyin.
Ortak Drive'daki bir dosyayı paylaşmak için kullanıcının
role=writer
,role=fileOrganizer
veyarole=organizer
hesabına sahip olması gerekir.writersCanShare
ayarı, ortak Drive'lardaki öğeler için geçerli değildir. Bu seçenek, her zamanTrue
olarak ayarlanmış gibi kabul edilir.
Ortak Drive'daki bir klasörü paylaşabilmek için kullanıcının
role=organizer
ürününe sahip olması gerekir.- Bir ortak Drive'daki
sharingFoldersRequiresOrganizerPermission
kısıtlamasıFalse
olarak ayarlanırsarole=fileOrganizer
erişimine sahip kullanıcılar bu ortak Drive'daki klasörleri paylaşabilir.
- Bir ortak Drive'daki
Ortak Drive üyeliğini yönetebilmek için kullanıcının
role=organizer
hesabı olmalıdır. Yalnızca kullanıcılar ve gruplar ortak Drive'lara üye olabilir.
Dosya erişimini sınırlandırmak için geçerlilik bitiş tarihi belirleme
Hassas bir proje üzerinde kullanıcılarla birlikte çalışırken, bu kişilerin Drive'daki belirli dosyalara erişimini bir süre sonra kısıtlamak isteyebilirsiniz. Drive'ım bölümündeki dosyalara erişimi sınırlamak veya kaldırmak için bir geçerlilik bitiş tarihi belirleyebilirsiniz.
Geçerlilik bitiş tarihini ayarlamak için:
permissions.create
yöntemini kullanın vepermissions.expirationTime
alanını (diğer zorunlu alanlarla birlikte) ayarlayın. Daha fazla bilgi edinmek için İzin oluşturma başlıklı makaleyi inceleyin.permissions.update
yöntemini kullanın vepermissions.expirationTime
alanını ayarlayın (diğer zorunlu alanlarla birlikte). Daha fazla bilgi için İzinleri değiştirme başlıklı makaleyi inceleyin.
expirationTime
alanı, RFC 3339 tarih-saati kullanılarak iznin ne zaman sona ereceğini belirtir. Sona erme süreleri için aşağıdaki kısıtlamalar geçerlidir:
- Bunlar yalnızca kullanıcı ve grup izinlerinde ayarlanabilir.
- Saat gelecekte olmalıdır.
- Zaman, gelecekte bir yıldan fazla olamaz.
Geçerlilik bitiş tarihi hakkında daha fazla bilgi için aşağıdaki makalelere bakın:
İzin yayılımı
Bir klasörün izin listeleri aşağıya doğru yayılır ve tüm alt dosyalar ile klasörler, izinleri üst öğeden devralır. İzinler veya hiyerarşi her değiştirildiğinde, yayılma tüm iç içe yerleştirilmiş klasörlerde yinelemeli olarak gerçekleşir. Örneğin, bir dosya bir klasörde bulunuyorsa ve bu klasör daha sonra başka bir klasörün içine taşınırsa yeni klasördeki izinler dosyaya uygulanır. Yeni klasör, dosyanın kullanıcısına "yazar" gibi yeni bir rol verirse kullanıcının eski rolünü geçersiz kılar.
Buna karşılık, bir dosya bir klasörden role=writer
değerini devralırsa ve "okuyucu" rolü sağlayan başka bir klasöre taşınırsa dosya artık role=reader
değerini devralır.
Devralınan izinler, ortak Drive'daki bir dosya veya klasörden kaldırılamaz. Bunun yerine, bu izinlerin devralındıkları doğrudan veya dolaylı üst öğe üzerinde ayarlanması gerekir. Devralınan izinler, "Drive'ım" veya "Benimle paylaşılanlar" bölümündeki öğelerden kaldırılabilir.
Buna karşılık, Drive'ım bölümündeki bir dosya veya klasörde devralınan izinler geçersiz kılınabilir. Bu nedenle, bir dosya Drive'ım klasöründen role=writer
öğesini devralıyorsa dosyada role=reader
öğesini izin düzeyini düşürecek şekilde ayarlayabilirsiniz.
Özellikler
İzinler kaynağı, geçerli kullanıcının bir dosya veya klasörde işlem gerçekleştirip gerçekleştirmediğini belirlemez.
Bunun yerine, Files kaynağı, bir işlemin dosya veya klasörde gerçekleştirilip gerçekleştirilemeyeceğini belirtmek için kullanılan bir boole capabilities
alanları koleksiyonu içerir. Google Drive API bu alanları, geçerli kullanıcının dosya veya klasörle ilişkili izin kaynağına göre ayarlar.
Örneğin, Alex uygulamanızda oturum açıp dosya paylaşmaya çalıştığında, Alex'in rolünde dosya izinleri kontrol edilir. Rol, kullanıcının dosya paylaşmasına izin veriyorsa dosyayla ilişkili capabilities
(ör. canShare
) role göre doldurulur. Ali dosyayı paylaşmak isterse uygulamanız, canShare
politikasının true
olarak ayarlandığından emin olmak için capabilities
özelliğini kontrol eder.
capabilities
dosyasının alınmasına ilişkin bir örnek için Kullanıcı izinlerini doğrulama bölümüne bakın.
İzin oluştur
İzin oluştururken aşağıdaki iki alan gereklidir:
type
:type
, iznin kapsamını tanımlar (user
,group
,domain
veyaanyone
).type=user
ile verilen izin belirli bir kullanıcı için geçerliykentype=domain
izni belirli bir alandaki herkes için geçerlidir.role
:role
alanı,type
uygulamasının gerçekleştirebileceği işlemleri tanımlar. Örneğin,type=user
verole=reader
içeren bir izin, belirli bir kullanıcıya dosya veya klasöre salt okuma erişimi verir. Alternatif olarak,type=domain
verole=commenter
izni, alandaki herkesin dosyaya yorum eklemesine de olanak tanır. Rollerin ve her birinin izin verdiği işlemlerin tam listesi için Roller ve izinler bölümüne bakın.
type=user
veya type=group
şeklinde bir izin oluşturduğunuzda söz konusu kullanıcı veya grubu izne bağlamak için bir emailAddress
de sağlamanız gerekir.
type=domain
durumunda bir izin oluşturduğunuzda belirli bir alanı izne bağlamak için domain
da sağlamanız gerekir.
İzin oluşturmak için:
- İlişkilendirilmiş dosya veya klasör için
fileId
ile birliktepermissions.create
yöntemini kullanın. - İstek gövdesinde
type
verole
değerlerini belirtin. type=user
veyatype=group
iseemailAddress
sağlayın.type=domain
isedomain
sağlayın.
Örnek göster
Aşağıdaki kod örneğinde, izin oluşturma işlemi gösterilmektedir. Yanıt, atanan permissionId
dahil olmak üzere bir Permission
kaynağının örneğini döndürü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 kullanın
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ı olur ve kullanıcıların uygun şekilde paylaşımda bulunmasını kolaylaştırır. Daha fazla bilgi için Hedef kitleler hakkında bölümünü inceleyin.
Hedef kitleleri kullanmak için:
Google Yönetici Konsolu'nda, Menü > Dizin > Hedef kitleler'e gidin.
Hedef kitleler sayfasına gidin.
Bu görev için süper yönetici ayrıcalıklarına sahip bir hesapla oturum açmış olmanı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
Şu hedef kitle URL'sinden benzersiz kimliği kopyalayın:
https://admin.google.com/ac/targetaudiences/ID
.type=domain
ile bir izin oluşturun vedomain
alanınıID.audience.googledomains.com
olarak ayarlayın.
Kullanıcıların hedef kitlelerle nasıl etkileşimde bulunduğunu görmek için Bağlantı paylaşımı için kullanıcı deneyimi başlıklı makaleyi inceleyin.
Dosya, klasör veya ortak Drive için tüm izinleri alma
Bir dosya, klasör veya ortak Drive için tüm izinleri almak üzere permissions.list
yöntemini kullanın.
Örnek göster
Aşağıdaki kod örneğinde tüm izinlerin nasıl alınacağı gösterilmektedir. Yanıt, bir izin listesi döndürür.
İstek
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
Yanıt
{
"kind": "drive#permissionList",
"permissions": [
{
"id": "PERMISSION_ID
",
"type": "user",
"kind": "drive#permission",
"role": "commenter"
}
]
}
Kullanıcı izinlerini doğrulama
Uygulamanız bir dosya açtığında dosyanın özelliklerini kontrol etmeli ve kullanıcı arayüzünü, geçerli 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.
capabilities
hakkında daha fazla bilgi için yukarıdaki Özellikler bölümüne bakın.
Özellikleri kontrol etmek için fileId
ve fields
parametresi capabilities
alanına ayarlanmış şekilde files.get
çağrısı yapın. fields
parametresini kullanarak alanları döndürme hakkında daha fazla bilgi için Bir dosya için belirli alanları döndürme bölümüne bakın.
Örnek göster
Aşağıdaki kod örneğinde, kullanıcı izinlerinin nasıl doğrulanacağı gösterilmektedir. Yanıt, kullanıcının dosyada sahip olduğu özelliklerin bir listesini döndürür. Her özellik, kullanıcının yapabileceğ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=capabilities
Yanıt
{ "capabilities": { "canAcceptOwnership": false, "canAddChildren": false, "canAddMyDriveParent": false, "canChangeCopyRequiresWriterPermission": true, "canChangeSecurityUpdateEnabled": false, "canComment": true, "canCopy": true, "canDelete": true, "canDownload": true, "canEdit": true, "canListChildren": false, "canModifyContent": true, "canModifyContentRestriction": true, "canModifyLabels": true, "canMoveChildrenWithinDrive": false, "canMoveItemOutOfDrive": true, "canMoveItemWithinDrive": true, "canReadLabels": true, "canReadRevisions": true, "canRemoveChildren": false, "canRemoveMyDriveParent": true, "canRename": true, "canShare": true, "canTrash": true, "canUntrash": true } }
Ortak Drive dosya ve klasörleri için rolün kaynağını belirleme
Bir dosya veya klasördeki rolü değiştirmek için rolün kaynağını bilmeniz gerekir. Ortak Drive'larda rolün kaynağı; ortak Drive üyeliğine, klasördeki role veya dosyadaki role göre olabilir.
Bir ortak Drive'ın rolünün kaynağını veya bu sürücüdeki öğeleri belirlemek için fileId
, permissionId
ve fields
parametresi permissionDetails
alanına ayarlanmış olarak permissions.get
çağrısı yapın. permissionId
öğesini bulmak için fileId
ile birlikte permissions.list
işlevini kullanın. permissions.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 tüm ve doğrudan dosya izinlerini sıralar.
Örnek göster
Aşağıdaki kod örneğinde, rol kaynağının nasıl belirleneceği gösterilmektedir. Yanıt, Permission
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
}
]
}
İzinleri değiştir
Bir dosya veya klasördeki izinleri değiştirmek için atanan rolü değiştirebilirsiniz:
Değişiklik izni için
permissionId
numaralı telefonu ve ilişkilendirilmiş dosya, klasör veya ortak Drive içinfileId
kodunupermissions.update
çağırın.permissionId
öğesini bulmak içinfileId
ile birliktepermissions.list
işlevini kullanın.İstekte yeni
role
öğesini tanımlayın.
Kullanıcı veya grup zaten üye olsa bile ortak Drive'daki tek tek dosya veya klasörler için izin verebilirsiniz. Örneğin, Alex'in ortak Drive üyeliğinin bir parçası olarak role=commenter
var. Ancak uygulamanız, ortak Drive'daki bir dosya için Alex
role=writer
'e izin verebilir. Bu durumda, yeni rol üyeliğiyle verilen rolden daha geniş kapsamlı olduğundan yeni izin dosya veya klasör için etkili rol haline gelir.
Örnek göster
Aşağıdaki kod örneğinde, dosya veya klasördeki izinlerin yorumcudan yazara nasıl değiştirileceği gösterilmektedir. Yanıt, Permission
kaynağının bir örneğini döndürür.
İstek
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
{ "requests": [ { "role": "writer" } ] }
Yanıt
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "writer"
}
Dosya veya klasöre erişimi iptal etme
Bir dosyaya veya klasöre erişimi iptal etmek için fileId
ve permissionId
ile delete
çağrısı yaparak izni silin.
"Drive'ım" bölümündeki öğeler için devralınan bir izni silmek mümkündür. Devralınan bir iznin silinmesi, öğeye ve varsa alt öğelere erişimi iptal eder.
Ortak Drive'daki öğeler için devralınan izinler iptal edilemez. Bunun yerine üst dosya veya klasördeki izni güncelleyin veya iptal edin.
delete
işlemi, doğrudan bir ortak Drive dosyasına veya klasörüne uygulanan izinleri silmek için de kullanılır.
Örnek göster
Aşağıdaki kod örneğinde, bir permissionId
silerek erişimin nasıl iptal edileceği gösterilmektedir. Başarılı olursa yanıt gövdesi boş olur. İznin kaldırıldığını onaylamak için fileId
ile birlikte permissions.list
öğesini kullanın.
İstek
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
Dosya sahipliğini aynı kuruluştaki başka bir Google Workspace hesabına aktarma
"Drive'ım" bölümünde bulunan dosyaların sahipliği bir Google Workspace hesabından aynı kuruluştaki başka bir hesaba aktarılabilir. İçindeki dosyaların sahibi, ortak drive'ın sahibi olan bir kuruluşa aittir. Bu nedenle, ortak Drive'lardaki dosyalar ve klasörler için sahiplik aktarımları desteklenmemektedir. Ortak Drive'ı düzenleyen kişiler, ilgili ortak Drive'daki öğeleri kendi "Drive'ım" bölümüne taşıyabilir ve bu şekilde sahipliklerini kendilerine aktarabilirler.
"Drive'ım" bölümündeki bir dosyanın sahipliğini aktarmak için aşağıdakilerden birini yapın:
Belirli bir kullanıcıya (
type=user
) sahip erişimi (role=owner
) vermek için dosya izni oluşturun.Mevcut bir dosyanın iznini
role=owner
ile güncelleyin ve sahipliği belirtilen kullanıcıya (transferOwnership=true
) aktarın.
Dosya sahipliğini bir tüketici hesabından diğerine aktarma
Dosyaların sahipliği bir tüketici hesabı arasında başka bir tüketici hesabına aktarılabilir. Ancak Drive, potansiyel yeni sahip aktarıma açıkça izin verene kadar bir dosyanın sahipliğini iki tüketici hesabı arasında aktarmaz. Dosya sahipliğini bir tüketici hesabından diğerine aktarmak için:
Mevcut sahip, potansiyel yeni sahibin dosya iznini oluşturarak veya güncelleyerek bir sahiplik aktarımı başlatır. İzin şu ayarları içermelidir:
role=writer
,type=user
vependingOwner=true
. Yeni sahip potansiyel sahip için izin oluşturuyorsa potansiyel yeni sahibe dosyanın sahipliğini üstlenmesinin istendiğini belirten bir e-posta bildirimi gönderilir.Yeni sahip, dosya iznini oluşturarak veya güncelleyerek sahiplik aktarma isteğini kabul eder. İzin şu ayarları içermelidir:
role=owner
vetransferOwnership=true
. Yeni sahip yeni bir izin oluşturuyorsa önceki sahibe sahipliğin aktarıldığını belirten bir e-posta bildirimi gönderilir.
Bir dosya aktarıldığında önceki sahibin rolü writer
rolüne düşürülür.
Toplu isteklerle birden çok izni değiştirme
Birden çok izni değiştirmek için toplu istekleri kullanmanızı önemle tavsiye ederiz.
Aşağıda, istemci kitaplığıyla toplu izin değişikliği yapmaya ilişkin bir örnek verilmiştir.