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 işleyiş şekli
Bir klasörün izin listeleri aşağıya doğru yayılır. Tüm alt dosyalar ve klasörler, üst klasörden izinleri devralır. İzinler veya hiyerarşi her değiştirildiğinde, tüm iç içe yerleştirilmiş klasörlerde yinelemeli olarak yayılır. Örneğin, bir klasörde bulunan dosya, başka bir klasörün içine 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, ortak Drive'daki bir dosya veya klasörden kaldırılamaz. Bunun yerine bu izinler, devralındıkları doğrudan veya dolaylı üst öğede ayarlanmalıdır. Devralınan izinler, "Drive'ım" veya "Benimle paylaşılanlar" bölümündeki öğelerden kaldırılabilir.
Aksine, devralınan izinler Benim Drive'ımdaki bir dosya veya klasörde geçersiz kılınabilir. Bu nedenle, bir dosya Birimim klasöründen role=writer
devralırsa dosyanın izin düzeyini düşürmek için dosyada role=reader
ayarlayabilirsiniz.
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ı koleksiyonu içerir. Google Drive API, bu alanları dosya veya klasörle ilişkili mevcut kullanıcının izin 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
) rolüne göre doldurulur. Ali dosyayı paylaşmak isterse uygulamanız, canShare
değerinin true
olarak ayarlandığından emin olmak için capabilities
değerini kontrol eder.
capabilities
dosyasını alma örneği için Get file
capabilities başlıklı makaleyi inceleyin.
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ı makaleyi inceleyin.
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=capabilities
Yanı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=writer
veyarole=owner
erişimine sahip olması gerekir.Dosya için
writersCanShare
Boole değerifalse
olarak ayarlanırsa kullanıcınınrole=owner
olması gerekir.role=writer
iznine 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 Dosya 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=writer
veyarole=owner
olması gerekir.Dosya için
writersCanShare
boole değerifalse
olarak ayarlanmışsa kullanıcının daha kapsamlırole=owner
iznine sahip olması gerekir.role=writer
ile Drive'ım klasörlerinde geçici erişime (geçerlilik bitiş tarihi ve saatiyle yönetilir) izin verilmez. Daha fazla bilgi için Dosya erişimini sınırlamak üzere son kullanma tarihi belirleme başlıklı makaleyi inceleyin.
Ortak Drive'daki bir dosyayı paylaşmak için kullanıcının
role=writer
,role=fileOrganizer
veyarole=organizer
iznine sahip olması gerekir.writersCanShare
ayarı, ortak drive'lardaki öğeler için geçerli değildir. Bu seçenek her zamantrue
olarak ayarlanmış gibi değerlendirilir.
Kullanıcının, ortak Drive'daki bir klasörü paylaşmak için
role=organizer
olması gerekir.- Bir ortak drive'daki
sharingFoldersRequiresOrganizerPermission
kısıtlamasıfalse
olarak ayarlanırsarole=fileOrganizer
iznine 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=organizer
olması gerekir. Ortak drive'ların üyeleri yalnızca kullanıcılar ve gruplar olabilir.
İzin oluşturma
İzin oluştururken aşağıdaki iki alan gereklidir:
type
:type
, izin kapsamını (user
,group
,domain
veyaanyone
) tanımlar.type=user
ile verilen izinler belirli bir kullanıcı için geçerliykentype=domain
ile verilen izinler belirli bir alandaki herkes için geçerlidir.role
:role
alanı,type
tarafından gerçekleştirilebilecek işlemleri tanımlar. Örneğin,type=user
verole=reader
içeren bir izin, belirli bir kullanıcıya dosya veya klasör için salt okuma erişimi verir. Alternatif olarak,type=domain
verole=commenter
izinleri, 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ı makaleye bakın.
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
fileId
yol parametresiyle birliktecreate()
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.
Aşağıdaki kod örneğinde, iznin nasıl oluşturulacağı gösterilmektedir. Yanıtta, atanan permissionId
dahil olmak üzere bir Permission
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ı 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. 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ç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.
Hedef kitle URL'sinden benzersiz kimliği kopyalayın:
https://admin.google.com/ac/targetaudiences/ID
.type=domain
ile izin oluşturun vedomain
alanınıID.audience.googledomains.com
olarak 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.
Tüm izinleri listeleme
Bir dosya, klasör veya ortak Drive'ın tüm izinlerini almak için list()
yöntemini permissions
kaynağında kullanın.
Aşağıdaki kod örneğinde, tüm izinlerin nasıl alınacağı gösterilmektedir. Yanıt, izinlerin listesini 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"
}
]
}
İ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.
update()
yöntemini,permissions
kaynağında çağırın. Bu yöntemde,permissionId
yol parametresi değiştirilecek izne,fileId
yol parametresi ise ilişkili dosya, klasör veya ortak drive'a ayarlanır.permissionId
değerini bulmak içinpermissions
kaynağındafileId
yol parametresiylelist()
yöntemini kullanın.İstekle yeni
role
'yı tanımlayın.
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.
Aşağıdaki kod örneğinde, bir dosya veya klasördeki izinlerin yorumcu rolünden yazar rolüne 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
{ "requests": [ { "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
değerini bulmak için permissions
kaynağında fileId
yol parametresiyle 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 iznin silinmesini sağlayacak şekilde ayarlanmış olarak permissions
kaynağında delete()
yöntemini çağırın.
"Drive'ım"daki öğeler için devralınan izinleri silebilirsiniz. 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 ya da silin.
delete()
yöntemi, doğrudan paylaşılan bir Drive dosyasına veya klasörüne uygulanan izinleri silmek için de kullanılır.
Aşağıdaki kod örneğinde, permissionId
silinerek 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
yol parametresiyle permissions
kaynağında list()
yöntemini kullanın.
İstek
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
Dosya erişimini sınırlamak için geçerlilik bitiş tarihi belirleme
Hassas bir proje üzerinde başkalarıyla çalışıyorsanız belirli bir süre sonra bu kişilerin Drive'daki belirli dosyalara erişimini kısıtlamak isteyebilirsiniz. Drive'ım bölümündeki dosyalara erişimi sınırlayan veya kaldıran bir geçerlilik bitiş tarihi belirleyebilirsiniz.
Geçerlilik bitiş tarihini ayarlamak için:
create()
yönteminipermissions
kaynağında kullanın veexpirationTime
alanını (diğer gerekli alanlarla birlikte) ayarlayın. Daha fazla bilgi için İzin oluşturma başlıklı makaleyi inceleyin.permissions
kaynağındaupdate()
yöntemini kullanın veexpirationTime
alanı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 erdiğini gösterir. 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, bir yıldan fazla gelecekte olamaz.
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