Her Google Drive dosyası, klasörü ve ortak Drive'ın 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 izin tanımlar. Örneğin, bir dosyada belirli bir kullanıcıya (type=user
) salt okuma erişimi (role=reader
) veren bir izin olabilirken başka bir izin, belirli bir grubun üyelerine (type=group
) dosyaya yorum ekleme olanağı (role=commenter
) verebilir.
Rollerin ve her birinin izin verdiği işlemlerin tam listesi için Roller ve izinler başlıklı makaleyi inceleyin.
İ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 öğeden izinleri devralır. İzinler veya hiyerarşi değiştiğinde, tüm iç içe yerleştirilmiş klasörlerde yinelemeli olarak dağıtım gerçekleşir. Örneğin, bir klasörde bulunan bir dosya başka bir klasöre taşınırsa yeni klasörün izinleri dosyaya uygulanır. Yeni klasör, dosya kullanıcısına "yazar" gibi yeni bir rol verirse eski rolü geçersiz kılar.
Buna karşılık, bir dosya bir klasörden role=writer
devralır ve "okur" rolü sağlayan başka bir klasöre taşınırsa dosya artık role=reader
devralır.
Devralınan izinler, ortak Drive'daki bir dosyadan veya klasörden kaldırılamaz. Bunun yerine, bu izinler devralındıkları doğrudan veya dolaylı üst öğede düzenlenmelidir. Devralınan izinler, "Drive'ım" veya "Benimle paylaşılanlar" bölümündeki öğelerden kaldırılabilir.
Buna karşılık, devralınan izinler Drive'ımdaki bir dosya veya klasörde geçersiz kılınabilir. Bu nedenle, bir dosya OneDrive klasöründen role=writer
devralırsanız dosyadaki izin düzeyini düşürmek için role=reader
ayarlayabilirsiniz.
Dosya özelliklerini anlama
permissions
kaynağı, mevcut kullanıcının bir dosya veya klasör üzerinde işlem yapma yeteneğini belirlemez.
Bunun yerine files
kaynağı, bir dosyada veya klasörde işlem yapılıp yapılamayacağını belirtmek için kullanılan bir dizi Boole capabilities
alanı içerir. Google Drive API, bu alanları mevcut kullanıcının dosya veya klasörle ilişkili izin kaynağına göre ayarlar.
Örneğin, Ali uygulamanıza giriş yapıp bir dosya paylaşmaya çalıştığında, Ali'nin rolü dosyada izinler açısından kontrol edilir. Rol, kullanıcının dosya paylaşmasına izin veriyorsa dosyayla ilgili capabilities
(ör. canShare
) rolle ilgili olarak 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 Dosya özelliklerini alma bölümüne bakın.
Dosya özelliklerini alma
Uygulamanız bir dosyayı açarken 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
yetkisi yoksa kullanıcı arayüzünde yorum yapma özelliği devre dışı bırakılmalıdır.
Özellikleri kontrol etmek için fileId
yol parametresi ve fields
parametresi capabilities
alanına ayarlanmış şekilde files
kaynağındaki get()
yöntemini çağırın. fields
parametresini kullanarak alanları döndürme hakkında daha fazla bilgi için Belirli alanları döndürme başlıklı makaleyi inceleyin.
Ö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 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, "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 } }
Drive kaynaklarını paylaşma senaryoları
Beş farklı paylaşım senaryosu vardır:
Drive'ım'da dosya paylaşmak için kullanıcının
role=writer
veyarole=owner
iznine sahip olması gerekir.Dosya için
writersCanShare
boole değerifalse
olarak ayarlanmışsa kullanıcınınrole=owner
izni olmalıdır.role=writer
erişimi olan kullanıcı, son kullanma tarihi ve saatine tabi geçici erişime sahipse dosyayı paylaşamaz. Daha fazla bilgi için Dosya erişimini sınırlamak için sona erme tarihi belirleme başlıklı makaleyi inceleyin.
Drive'ım bölümünde bir klasörü 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 ayarlanmışsa kullanıcının daha izin vericirole=owner
değerine sahip olması gerekir.role=writer
ile Drive'ım klasörlerinde geçici erişime (geçerlilik bitiş tarihi ve saati ile yönetilir) izin verilmez. Daha fazla bilgi için Dosya erişimini sınırlamak için 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
erişimine sahip olması gerekir.writersCanShare
ayarı, ortak Drive'lardaki öğeler için geçerli değildir. Her zamantrue
olarak ayarlanmış gibi değerlendirilir.
Ortak Drive'daki bir klasörü paylaşmak için kullanıcının
role=organizer
erişimine sahip olması gerekir.- Ortak Drive'daki
sharingFoldersRequiresOrganizerPermission
kısıtlamasıfalse
olarak ayarlanmışsarole=fileOrganizer
izni olan kullanıcılar bu ortak Drive'daki klasörleri paylaşabilir.
- Ortak Drive'daki
Ortak Drive üyeliğini yönetmek için kullanıcının
role=organizer
erişimine sahip 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
içeren bir izin belirli bir kullanıcı için geçerliykentype=domain
içeren bir izin belirli bir alandaki herkes için geçerlidir.role
:role
alanı,type
'ın gerçekleştirebileceği işlemleri tanımlar. Örneğin,type=user
verole=reader
içeren bir izin, belirli bir kullanıcıya dosyaya veya klasöre salt okuma erişimi verir.type=domain
verole=commenter
içeren bir izin ise alandaki herkesin bir 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
olan bir izin oluşturduğunuzda, belirli bir kullanıcıyı veya grubu izine bağlamak için bir emailAddress
de sağlamanız gerekir.
type=domain
olan bir izin oluşturduğunuzda, izine belirli bir alanı bağlamak için bir domain
da 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. - İsteğin gövdesinde
type
verole
değerlerini belirtin. type=user
veyatype=group
ise biremailAddress
sağlayın.type=domain
ise birdomain
sağlayın.
Örnek göster
Aşağıdaki kod örneğinde, iznin nasıl oluşturulacağı gösterilmektedir. Yanıt, atanan permissionId
dahil olmak üzere bir Permission
kaynağı örneği 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 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 ve kullanıcıların uygun şekilde paylaşım yapmasını kolaylaştırmanıza yardımcı olabilir. 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'sindeki 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örüntülemek için Bağlantı paylaşımı için 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 permissions
kaynağındaki 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, 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ı makaleyi inceleyin.
permissions
kaynağındapermissionId
yol parametresi, değiştirme iznine vefileId
yol parametresi, ilişkili dosya, klasör veya ortak Drive'a ayarlanmış şekildeupdate()
yöntemini çağırın.permissionId
değerini bulmak içinfileId
yol parametresini kullanarakpermissions
kaynağındalist()
yöntemini kullanın.İstekte yeni
role
değerini tanımlayın.
Kullanıcı veya grup zaten üye olsa bile ortak Drive'daki dosya ya da klasörler için ayrı ayrı izin verebilirsiniz. Örneğin, Ali ortak Drive üyeliği kapsamında role=commenter
Ancak uygulamanız, Alex'e ortak Drive'daki bir dosya için role=writer
izni verebilir. Bu durumda, yeni rol üyelik aracılığıyla verilen rolden daha fazla izin verdiğinden yeni izin, dosya veya klasör için etkili rol olur.
Örnek göster
Aşağıdaki kod örneğinde, bir dosya veya klasördeki izinlerin yorumcu yerine yazar olarak nasıl değiştirileceği gösterilmektedir. Yanıt, bir permissions
kaynağı örneği 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"
}
Rol 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'a üyeliğe, bir klasördeki role veya bir dosyadaki role bağlı olabilir.
Bir ortak Drive'ın veya bu Drive'daki öğelerin rol kaynağını belirlemek için permissions
kaynağında fileId
ve permissionId
yol parametreleriyle birlikte get()
yöntemini çağırın ve fields
parametresini permissionDetails
alanına ayarlayın.
permissionId
değerini bulmak için fileId
yol parametresini kullanarak permissions
kaynağında list()
yöntemini kullanın. list
isteğinde permissionDetails
alanını almak için fields
parametresini permissions/permissionDetails
olarak ayarlayın.
Bu alan, kullanıcı, grup veya alan için devralınan ve doğrudan tüm dosya izinlerini listeler.
Örnek göster
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 istekler kullanmanızı önemle tavsiye ederiz.
Aşağıda, istemci kitaplığıyla toplu izin değişikliği gerçekleştirme örneği verilmiştir.
Java
Python
Node.js
PHP
.NET
İzinleri silme
Bir dosyaya veya klasöre erişimi iptal etmek için permissions
kaynağındaki delete()
yöntemini fileId
ve permissionId
yol parametrelerini izini silecek şekilde ayarlayarak çağırın.
"Drive'ım"daki öğelerde devralınan izinleri silebilirsiniz. Devralınan bir izin silindiğinde öğeye ve varsa alt öğelere erişim iptal edilir.
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 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, permissionId
silinerek erişimin nasıl iptal edileceği gösterilmektedir. Başarılı olursa yanıt metni boş olur. İznin kaldırıldığını onaylamak için permissions
kaynağında fileId
yol parametresi ile 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 son kullanma tarihi belirleme
Hassas bir projede kullanıcılarla çalışıyorsanız belirli bir süre sonra bu kullanıcıların 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:
permissions
kaynağındacreate()
yöntemini kullanın veexpirationTime
alanını (gerekli diğer 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ı (gerekli diğer alanlarla birlikte) ayarlayın. Daha fazla bilgi için İzinleri güncelleme başlıklı makaleyi inceleyin.
expirationTime
alanı, iznin süresinin RFC 3339 tarih-saat biçiminde ne zaman dolacağını belirtir. Süre sonu süreleri aşağıdaki kısıtlamalara tabidir:
- Yalnızca kullanıcı ve grup izinlerinde ayarlanabilir.
- Zaman gelecekte olmalıdır.
- Zaman, bir yıldan daha ileri bir tarih olamaz.
Süre sonu tarihi hakkında daha fazla bilgi için aşağıdaki makaleleri inceleyin:
İlgili konular
- Beklemede olan erişim tekliflerini yönetme
- Dosya sahipliğini aktarma
- Dosya içeriğini koruma
- Kaynak anahtarları kullanarak bağlantıyla paylaşılan Drive dosyalarına erişme
- Roller ve izinler