Takip et

Apps Script ile Google Drive Paylaşılan Dosya Denetimi: Güvenliği Artırma Kılavuzu

Google Drive’da paylaşılan dosyalarınızın tam kontrolünü ele almak, veri güvenliği ve uyumluluk açısından kritik öneme sahiptir. Bu teknik makalede, Google Apps Script’in güçlü yeteneklerini kullanarak Drive’daki tüm paylaşılan dosyaları nasıl denetleyeceğinizi, riskleri nasıl belirleyeceğinizi ve veri sızıntılarını nasıl önleyeceğinizi adım adım öğreneceksiniz.

Google Drive Paylaşım Denetimi Neden Bu Kadar Önemli?

Günümüz iş dünyasında, bulut tabanlı depolama çözümleri, dosya paylaşımı ve işbirliği için vazgeçilmez araçlar haline gelmiştir. Özellikle Google Drive, esnekliği ve entegrasyon yetenekleri sayesinde milyonlarca kuruluş tarafından aktif olarak kullanılmaktadır. Ancak bu kolaylık, doğru denetim mekanizmaları olmadan ciddi güvenlik risklerini de beraberinde getirebilir. Bir kuruluş içinde paylaşılan dosyaların kontrolsüz bir şekilde dışarıya sızması, hassas veri ihlallerine, fikri mülkiyet hırsızlığına ve yasal düzenlemelere (KVKK, GDPR gibi) uyumsuzluktan kaynaklanan ağır cezalara yol açabilir. Bu nedenle, Google Drive’daki tüm paylaşılan dosyaları düzenli olarak denetlemek, kuruluşların veri güvenliğini sağlamak ve uyumluluk yükümlülüklerini yerine getirmek için hayati bir adımdır.

Peki, bu riskler somut olarak ne anlama geliyor? Bir düşünün: Bir çalışan, gizli bir projeyle ilgili dokümanı yanlışlıkla tüm şirket dışına “Herkese açık” olarak paylaştı. Veya eski bir çalışan, işten ayrılmadan önce erişimi olan kritik verileri kendi kişisel Drive hesabına kopyaladı. Bu senaryolar, ne yazık ki sıkça karşılaşılan durumlardır. Bu tür olaylar, yalnızca şirketin itibarını zedelemekle kalmaz, aynı zamanda önemli finansal kayıplara ve yasal süreçlere de neden olabilir. İşte bu noktada, Apps Script ile yapacağımız denetim devreye giriyor. Otomatik bir sistemle hangi dosyaların kimlerle paylaşıldığını anlık olarak görmek, potansiyel riskleri proaktif bir şekilde belirlemenize ve gerekli önlemleri almanıza olanak tanır. Böylece, hem iç denetim süreçlerinizi güçlendirmiş hem de dış tehditlere karşı daha dirençli bir yapı kurmuş olursunuz. Unutulmamalıdır ki, dijital varlıkların güvenliği, sadece bir IT departmanının sorumluluğu değil, tüm organizasyonun kültürü ve önceliği olmalıdır.

Bir vaka analizi olarak, uluslararası bir finans şirketi olan “Global Finans A.Ş.” örneğini ele alalım. Şirket, hızlı büyüme ve uzaktan çalışma modeline geçişle birlikte Google Drive kullanımını artırmıştı. Ancak bir iç denetim sırasında, kritik müşteri verilerini içeren bir çalışma dosyasının yanlışlıkla “bağlantıya sahip herkes görüntüleyebilir” şeklinde ayarlandığı tespit edildi. Bu dosya, haftalarca bu şekilde erişilebilir kalmıştı. Neyse ki, potansiyel bir veri sızıntısı olmadan fark edildi. Bu olay üzerine Global Finans A.Ş., Apps Script tabanlı otomatik bir denetim sistemi kurmaya karar verdi. Bu sistem sayesinde, belirli hassasiyet seviyesine sahip dosyaların dışarıya açılması durumunda anında uyarılar alabiliyor ve paylaşım izinlerini periyodik olarak kontrol edebiliyorlar. Gördüğünüz gibi, proaktif denetim, sadece bir önlem değil, aynı zamanda iş sürekliliğinin ve itibarın korunması için de olmazsa olmaz bir adımdır.

Apps Script Nedir ve Google Drive ile Nasıl Bütünleşir?

Google Apps Script, Google Workspace ekosistemini otomatikleştirmek, genişletmek ve entegre etmek için Google tarafından sunulan bulut tabanlı bir JavaScript platformudur. Temel olarak, Google Dokümanlar, E-Tablolar, Drive, Gmail ve Takvim gibi Google ürünleriyle etkileşime giren özel fonksiyonlar ve eklentiler oluşturmanıza olanak tanır. JavaScript tabanlı olması sayesinde, web geliştirme deneyimi olanlar için öğrenmesi oldukça kolaydır. Apps Script kodları, Google’ın sunucularında çalıştığı için herhangi bir sunucu kurma veya bakım yapma ihtiyacınız olmaz. Bu da onu hem bireysel kullanıcılar hem de büyük kuruluşlar için erişilebilir ve maliyet etkin bir çözüm haline getirir.

Apps Script’in Google Drive ile bütünleşmesi ise DriveApp servisi aracılığıyla gerçekleşir. DriveApp, Google Drive’ınızdaki dosyalara, klasörlere, izinlere ve diğer meta verilere programatik olarak erişmenizi ve bunları yönetmenizi sağlar. Bu sayede, Drive’daki dosyaları arayabilir, kopyalayabilir, taşıyabilir, silebilir, izinlerini değiştirebilir ve en önemlisi, bizim konumuz olan denetim işlemlerini gerçekleştirebilirsiniz. Örneğin, Drive’daki tüm dosyaları tarayarak hangilerinin kimlerle paylaşıldığını listeleyebilir, belirli kriterlere uyan dosyaların paylaşım ayarlarını otomatik olarak güncelleyebilir veya bir rapor oluşturup yöneticilere e-posta ile gönderebilirsiniz. Bu, manuel olarak saatler sürecek işleri saniyeler içinde halletmenizi sağlayan muazzam bir güçtür.

Apps Script projesi oluşturmak oldukça basittir. drive.google.com adresine gidip sol panelden “Yeni” -> “Daha fazla” -> “Google Apps Script” yolunu izleyebilir veya doğrudan script.google.com adresine giderek yeni bir proje başlatabilirsiniz. Projenizi oluşturduktan sonra, bir kod düzenleyiciyle karşılaşırsınız. Burada JavaScript kodunuzu yazarak Apps Script fonksiyonlarınızı geliştirebilirsiniz. Ancak unutulmaması gereken önemli bir nokta, kodunuzun Google Drive’ınıza veya diğer Google hizmetlerine erişebilmesi için gerekli izinleri (OAuth 2.0 kapsamları) vermeniz gerektiğidir. İlk kez bir DriveApp fonksiyonu çalıştırdığınızda, Google sizden bu izinleri onaylamanızı isteyecektir. Bu izinler, kodunuzun hangi verilere erişebileceğini ve hangi işlemleri yapabileceğini belirler. Güvenlik açısından, her zaman yalnızca ihtiyacınız olan minimum izinleri vermeye özen göstermelisiniz.

Apps Script’in sunduğu bu esneklik, Google Drive denetimini otomatize etme konusunda sınırsız imkanlar sunar. Tekrarlayan görevleri ortadan kaldırır, insan hatası olasılığını azaltır ve en önemlisi, veri güvenliği stratejinizin önemli bir parçası haline gelir. Bu servis, sadece teknik bilgiye sahip kişiler için değil, aynı zamanda verilerini daha iyi yönetmek ve korumak isteyen herkes için güçlü bir araçtır. Şimdi gelin, bu aracı nasıl kullanacağımızı adım adım inceleyelim.

Adım Adım Apps Script ile Paylaşılan Dosyaları Listeleme: Temel Bir Yaklaşım

Google Drive’daki paylaşılan dosyaları denetlemenin ilk adımı, hangi dosyaların paylaşıldığını ve bu paylaşımların detaylarını programatik olarak listelemektir. Apps Script’in DriveApp servisi, bu işlemi gerçekleştirmemizi sağlayan anahtar araçtır. Bu bölümde, tüm dosyalarınızı tarayarak paylaşılanları nasıl belirleyeceğinizi ve temel bilgilerini nasıl alacağınızı göstereceğiz. Bu, Apps Script ile yapacağınız daha karmaşık denetim işlemlerinin temelini oluşturacaktır.

Öncelikle, bir Apps Script projesi oluşturmanız gerekiyor. script.google.com adresine gidin ve yeni bir proje başlatın. Varsayılan olarak oluşturulan Code.gs dosyasını açın. İşte size, Drive’ınızdaki tüm dosyaları tarayıp, paylaşılanları filtreleyerek temel bilgilerini (adı, ID’si, URL’si, sahipleri ve paylaşanları) listeleyen basit bir kod örneği:


    function listSharedFilesBasic() {
      // Bu fonksiyon, Google Drive'daki paylaşılan dosyaların temel bilgilerini listeler.
      const files = DriveApp.getFiles(); // Drive'daki tüm dosyalara erişim sağlar
      let sharedFileDetails = []; // Paylaşılan dosya bilgilerini depolamak için boş bir dizi
    
      Logger.log("Google Drive'daki paylaşılan dosyalar taranıyor...");
    
      while (files.hasNext()) { // Tüm dosyalar üzerinde döngü oluştur
        const file = files.next(); // Bir sonraki dosyayı al
        
        // isShareableByEditors() metodunu kullanmak, dosyanın paylaşılabilir olup olmadığını kontrol etmenin bir yoludur.
        // Ancak daha detaylı paylaşım durumunu kontrol etmek için getSharingPermission() ve getAccess() metodları daha doğru olabilir.
        // Bu örnekte, 'isShareableByEditors()' yerine, dosyanın açıkça paylaşılıp paylaşılmadığını kontrol edeceğiz.
        
        // Dosyanın paylaşım ayarlarını kontrol et
        const sharingPermission = file.getSharingPermission();
        const access = file.getAccess();
    
        // Dosya özel değilse (yani bir şekilde paylaşılmışsa)
        if (sharingPermission !== DriveApp.Permission.PRIVATE || access !== DriveApp.Access.PRIVATE) {
          
          const owners = file.getOwners().map(owner => owner.getEmail()).join(', '); // Dosyanın sahiplerini al
          let sharers = [];
          
          // Görüntüleyenleri ve düzenleyenleri al
          file.getViewers().forEach(viewer => sharers.push(viewer.getEmail()));
          file.getEditors().forEach(editor => sharers.push(editor.getEmail()));
          
          // Eğer dosya herkese açık veya alan adına açıksa, bu bilgiyi de ekleyelim.
          if (sharingPermission === DriveApp.Permission.ANYONE_WITH_LINK || sharingPermission === DriveApp.Permission.ANYONE) {
            sharers.push("Herkese Açık (Bağlantı ile)" + (access === DriveApp.Access.ANYONE ? " - Genel Erişim" : ""));
          } else if (sharingPermission === DriveApp.Permission.DOMAIN || sharingPermission === DriveApp.Permission.DOMAIN_WITH_LINK) {
            sharers.push("Alan Adına Açık (Bağlantı ile)" + (access === DriveApp.Access.DOMAIN ? " - Alan Adı Erişimi" : ""));
          }
          
          // Tekrarlayan e-posta adreslerini kaldırmak için Set kullan
          const uniqueSharers = [...new Set(sharers)].join(', ');
    
          sharedFileDetails.push({
            name: file.getName(),
            id: file.getId(),
            url: file.getUrl(),
            owners: owners || "Bilinmiyor", // Sahibi yoksa "Bilinmiyor" olarak işaretle
            sharers: uniqueSharers || "Sadece Sahipler", // Paylaşım yoksa veya bulunamazsa
            lastUpdated: file.getLastUpdated().toISOString(),
            sharingPermission: sharingPermission.toString(),
            access: access.toString()
          });
        }
      }
      
      if (sharedFileDetails.length > 0) {
        Logger.log(Toplam ${sharedFileDetails.length} adet paylaşılan dosya bulundu.);
        sharedFileDetails.forEach(detail => Logger.log(JSON.stringify(detail)));
      } else {
        Logger.log("Hiç paylaşılan dosya bulunamadı.");
      }
    }
    

Bu kodu Apps Script düzenleyicisine yapıştırdıktan sonra, üst menüden fonksiyon açılır listesinden listSharedFilesBasic'i seçip "Çalıştır" düğmesine tıklayın. İlk çalıştırdığınızda, Google sizden bu betiğin Drive'ınıza erişim izni isteyecektir. Bu izinleri onayladıktan sonra, betik çalışacak ve sonuçları "Yürütme günlüğü" (Execution log) penceresinde göreceksiniz. Her bir paylaşılan dosyanın adı, ID'si, URL'si, sahipleri ve kimlerle paylaşıldığı burada listelenecektir.

Bu temel listeleyici, başlangıç için harika bir adımdır. Ancak, bu çıktıyı bir Google E-Tablosuna aktarmak, verileri daha kolay analiz etmenizi, filtrelemenizi ve görselleştirmenizi sağlayacaktır. Ayrıca, DriveApp.getFiles() metodu sadece sizin sahip olduğunuz veya sizinle paylaşılan dosyalara erişebilir. Kuruluşunuzun tüm Drive dosyalarını denetlemek için, genellikle bir Workspace yöneticisi hesabından veya uygun yetkilendirmelerle alan adı genelinde yetkilendirilmiş bir hizmet hesabından (service account) çalışmanız gerekebilir. İlerleyen bölümlerde, bu çıktıları nasıl daha anlamlı hale getireceğimizi ve daha ileri denetim tekniklerini ele alacağız.

Paylaşım İzinlerini Detaylıca Analiz Etme ve Raporlama: Google E-Tablolarına Aktarım

Bir önceki bölümde, paylaşılan dosyaların temel bilgilerini nasıl listeleyeceğimizi öğrendik. Ancak sadece listelemek yeterli değildir; bu veriyi anlamlı bir şekilde analiz edebilmek ve raporlayabilmek, gerçek denetim değerini sağlar. Google E-Tabloları, Apps Script ile sorunsuz bir şekilde entegre olabilir ve toplanan verileri düzenlemek, filtrelemek, sıralamak ve görselleştirmek için mükemmel bir platform sunar. Bu bölümde, paylaşılan dosya bilgilerini nasıl daha detaylı analiz edeceğimizi ve bu veriyi otomatik olarak bir Google E-Tablosuna nasıl aktaracağımızı göreceğiz.

Paylaşım izinlerini detaylıca analiz etmek, dosyanın kimlerle (belirli kullanıcılar, gruplar, alan adı içindeki herkes, herkes) hangi yetkiyle (görüntüleyen, yorumcu, düzenleyen) paylaşıldığını net bir şekilde ortaya koymaktır. Özellikle "Herkese Açık" veya "Bağlantıya Sahip Herkes" ayarları, en yüksek risk teşkil eden paylaşım türleridir ve bu tür durumların hızlıca tespit edilmesi gerekmektedir. Aşağıdaki kod örneği, bu detayları yakalayacak ve bir Google E-Tablosuna düzenli bir şekilde yazacak bir fonksiyondur.


    function exportSharedFilesToSheet() {
      const sheetName = "Paylaşılan Dosyalar Denetim Raporu";
      let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // Aktif E-Tabloyu al
      let sheet = spreadsheet.getSheetByName(sheetName);
      
      // Eğer rapor e-tablosu yoksa oluştur, varsa içeriğini temizle
      if (!sheet) {
        sheet = spreadsheet.insertSheet(sheetName);
        sheet.appendRow(["Dosya Adı", "Dosya ID", "URL", "Sahip(ler)", "Paylaşan(lar)", "Son Güncelleme", "Paylaşım Tipi", "Erişim Seviyesi"]);
        Logger.log("${sheetName}" adlı yeni rapor e-tablosu oluşturuldu.);
      } else {
        // Başlıkları hariç tüm verileri temizle
        sheet.getRange(2, 1, sheet.getLastRow(), sheet.getLastColumn()).clearContent();
        Logger.log("${sheetName}" e-tablosunun içeriği temizlendi.);
      }
    
      const files = DriveApp.getFiles(); // Drive'daki tüm dosyalara erişim
      let data = []; // E-Tabloya yazılacak verileri depolamak için dizi
      let fileCount = 0;
    
      Logger.log("Drive dosyaları taranıyor ve paylaşım bilgileri toplanıyor...");
    
      while (files.hasNext()) {
        const file = files.next();
        
        const access = file.getAccess();
        const permission = file.getSharingPermission();
    
        // Dosya özel değilse (yani bir şekilde paylaşılmışsa), detaylarını topla
        if (permission !== DriveApp.Permission.PRIVATE || access !== DriveApp.Access.PRIVATE) {
    
          const owners = file.getOwners().map(owner => owner.getEmail()).join(', ');
          let sharersInfo = [];
          
          // Belirli kullanıcılar için görüntüleyen ve düzenleyen bilgilerini al
          file.getViewers().forEach(viewer => sharersInfo.push(${viewer.getEmail()} (Görüntüleyen)));
          file.getEditors().forEach(editor => sharersInfo.push(${editor.getEmail()} (Düzenleyen)));
    
          // Herkese açık veya alan adına özel erişim tiplerini belirle
          if (permission === DriveApp.Permission.ANYONE_WITH_LINK) {
            sharersInfo.push("Bağlantıya Sahip Herkes (Görüntüleyebilir)");
          } else if (permission === DriveApp.Permission.ANYONE) {
            sharersInfo.push("Herkese Açık (Genel Arama ile Bulunabilir)");
          } else if (permission === DriveApp.Permission.DOMAIN_WITH_LINK) {
            sharersInfo.push("${DriveApp.getStorageLimit().getDomain()}" Alan Adına Bağlantı ile Açık);
          } else if (permission === DriveApp.Permission.DOMAIN) {
            sharersInfo.push("${DriveApp.getStorageLimit().getDomain()}" Alan Adına Açık (Genel Arama ile Bulunabilir));
          }
          
          // Oluşan veri satırını ekle
          data.push([
            file.getName(),
            file.getId(),
            file.getUrl(),
            owners || "Bilinmiyor",
            sharersInfo.length > 0 ? [...new Set(sharersInfo)].join('; ') : "Sadece Sahipler",
            file.getLastUpdated().toISOString(),
            permission.toString().replace("Permission.", ""), // Okunabilirliği artır
            access.toString().replace("Access.", "") // Okunabilirliği artır
          ]);
          fileCount++;
        }
      }
      
      if (data.length > 0) {
        // Toplanan tüm verileri e-tabloya tek seferde yaz
        sheet.getRange(sheet.getLastRow() + 1, 1, data.length, data[0].length).setValues(data);
        Logger.log(Toplam ${fileCount} adet paylaşılan dosya raporlandı.);
      } else {
        Logger.log("Hiç paylaşılan dosya bulunamadı veya raporlanacak veri yok.");
      }
      Logger.log("Paylaşılan Dosyalar Denetim Raporu" başarıyla oluşturuldu/güncellendi.);
    }
    

Bu kodu, oluşturduğunuz Apps Script projesine yapıştırın ve script.google.com adresinde "Paylaşılan Dosyalar Denetim Raporu" adında yeni bir Google E-Tablosu oluşturun (veya mevcut bir tanesini açın). Ardından, Apps Script düzenleyicisinde fonksiyonu seçip çalıştırın. Script, belirtilen E-Tablonuzu bulacak, mevcut verileri temizleyecek (başlıklar hariç) ve yeni denetim verilerini dolduracaktır. Eğer E-Tablo yoksa, yeni bir tane oluşturacaktır.

Oluşturulan E-Tablo aşağıdaki gibi bir yapıya sahip olacaktır:


Dosya Adı Dosya ID URL Sahip(ler) Paylaşan(lar) Son Güncelleme Paylaşım Tipi Erişim Seviyesi
Gizli Proje Planı.docx 1A2B3C4D5E drive.google.com/file/... user1@example.com user2@example.com (Düzenleyen); Bağlantıya Sahip Herkes (Görüntüleyebilir) 2023-10-26T10:00:00Z ANYONE_WITH_LINK ANYONE
İnsan Kaynakları Politikası.pdf F6G7H8I9J0 drive.google.com/file/... hr_admin@example.com Alan Adına Açık (Genel Arama ile Bulunabilir) 2023-09-15T14:30:00Z DOMAIN DOMAIN

Bu rapor sayesinde, hangi dosyaların yüksek riskli paylaşım ayarlarıyla yapılandırıldığını (örneğin "ANYONE" veya "ANYONE_WITH_LINK"), kimin bu paylaşımlardan sorumlu olduğunu ve son güncellemelerin ne zaman yapıldığını kolayca görebilirsiniz. E-Tabloyu kullanarak verileri sıralayabilir, filtreleyebilir ve koşullu biçimlendirme uygulayarak belirli paylaşım tiplerini (örn. herkese açık olanları kırmızı renkle) vurgulayabilirsiniz. Bu detaylı raporlama, veri güvenliği ekiplerinin ve yöneticilerin hızlı ve bilinçli kararlar almasını sağlayarak potansiyel güvenlik açıklarını proaktif bir şekilde kapatmalarına yardımcı olur.

Gelişmiş Denetim Senaryoları ve Otomasyon İpuçları

Temel ve detaylı raporlama adımlarını tamamladıktan sonra, Apps Script'in potansiyelini daha da ileriye taşıyarak gelişmiş denetim senaryolarını hayata geçirebiliriz. Bu bölüm, yalnızca raporlama yapmakla kalmayıp, proaktif güvenlik önlemleri alarak Drive güvenliğinizi nasıl otomatikleştirebileceğinize dair ipuçları ve örnekler sunmaktadır. Amaç, denetimi tek seferlik bir görevden, sürekli ve otomatik bir sürece dönüştürmektir.

Zamanlanmış Raporlar ve Anlık Uyarılar Nasıl Kurulur?

Denetim raporlarını manuel olarak çalıştırmak, özellikle büyük kuruluşlarda zaman alıcı olabilir. Apps Script'in tetikleyiciler (Triggers) özelliği, belirlediğiniz bir program dahilinde betiği otomatik olarak çalıştırmanıza olanak tanır. Böylece, her gün, her hafta veya her ay otomatik olarak güncel bir paylaşım raporu alabilirsiniz. Buna ek olarak, belirli bir dosya herkese açık hale geldiğinde veya hassas bir dosya dışarıdan bir kullanıcıyla paylaşıldığında anında e-posta ile bildirim alacak uyarı mekanizmaları kurmak da mümkündür.

Apps Script tetikleyicilerini kurmak için, Apps Script düzenleyicisinde sol paneldeki saat simgesine (Tetikleyiciler) tıklayın. Ardından "Tetikleyici ekle" düğmesine tıklayarak bir tetikleyici oluşturabilirsiniz. Burada, hangi fonksiyonun (örneğin exportSharedFilesToSheet), hangi olayın (örneğin zamana dayalı) ve ne sıklıkta (örneğin her gece 01:00-02:00 arası) çalışacağını belirleyebilirsiniz. Bu otomasyon, güvenlik ekiplerinin sürekli uyanık kalmasını sağlar.


    // E-posta ile bildirim gönderme örneği
    function sendAlertEmail(fileName, fileUrl, sharerInfo) {
      const recipient = "guvenlik_ekibi@example.com"; // Uyarı gönderilecek e-posta adresi
      const subject = ACİL: Potansiyel Güvenlik İhlali - ${fileName};
      const body = Merhaba,
    
    Google Drive'da yüksek riskli bir dosya paylaşımı tespit edildi:
    
    Dosya Adı: ${fileName}
    Dosya URL: ${fileUrl}
    Paylaşım Detayları: ${sharerInfo}
    
    Lütfen bu paylaşımı acilen inceleyin ve gerekli aksiyonları alın.
    
    Saygılarımızla,
    Apps Script Otomatik Güvenlik Sistemi;
      
      MailApp.sendEmail(recipient, subject, body);
      Logger.log(Uyarı e-postası gönderildi: ${fileName});
    }
    
    // exportSharedFilesToSheet fonksiyonunda potansiyel riskli dosya bulunduğunda bu fonksiyonu çağırabilirsiniz.
    // Örneğin, sharersInfo içinde "Herkese Açık" ifadesi geçtiğinde...
    

Yetim Dosyaları ve Eski Erişimleri Belirleme

"Yetim dosyalar", sahibi kuruluştan ayrılmış veya hesabı silinmiş ancak Drive'da hala varlığını sürdüren dosyalardır. Bu dosyalar, denetimsiz kaldıkları için ciddi bir güvenlik riski oluşturabilir. Apps Script ile DriveApp.searchFiles() metodunu kullanarak belirli bir kullanıcıya ait olmayan veya belirli bir süre boyunca güncellenmemiş dosyaları arayabilir, bu dosyaların sahipliğini devralabilir veya paylaşım izinlerini kısıtlayabilirsiniz.


    function findOrphanedFiles() {
      // Bu fonksiyon, belirli bir süre boyunca güncellenmemiş ve sahibini kaybetmiş dosyaları bulmaya çalışır.
      // Not: Drive API'nin 'q' sorgu parametresi daha gelişmiş filtreleme sağlar, ancak Apps Script'in getFiles()
      // metoduyla doğrudan "owner not in" sorgusu yapmak sınırlıdır. Bu örnek, genel bir yaklaşımdır.
      
      const files = DriveApp.getFiles(); // Tüm dosyaları al
      let orphanedFiles = [];
    
      Logger.log("Yetim dosyalar taranıyor...");
    
      while (files.hasNext()) {
        const file = files.next();
        try {
          const owners = file.getOwners();
          if (owners.length === 0) { // Sahipsiz dosya (bu genellikle çok nadir bir durumdur)
            orphanedFiles.push({
              name: file.getName(),
              id: file.getId(),
              url: file.getUrl(),
              lastUpdated: file.getLastUpdated().toISOString()
            });
          }
          // Daha gelişmiş senaryolar için, Drive API'nin Permissions.list ve Files.get gibi metodları kullanılabilir.
          // Örneğin, Drive API ile "owners.me" sorgusu yapıp, eğer dosya size ait değilse, sahibini kontrol edebilirsiniz.
          // Bu, Apps Script'in gelişmiş servislerini (Advanced Drive Service) kullanmayı gerektirir.
          
        } catch (e) {
          // Bazı dosyalara erişim hatası olabilir (örn. izinler yetersizse).
          Logger.log(Dosya '${file.getName()}' (${file.getId()}) işlenirken hata oluştu: ${e.message});
        }
      }
      if (orphanedFiles.length > 0) {
        Logger.log(Toplam ${orphanedFiles.length} adet yetim dosya bulundu.);
        orphanedFiles.forEach(detail => Logger.log(JSON.stringify(detail)));
      } else {
        Logger.log("Hiç yetim dosya bulunamadı (veya erişilebilir değil).");
      }
    }
    

Erişimleri İptal Etme ve Güvenlik Politikası Uygulama

Belirli bir denetim sonucunda yüksek riskli paylaşımlar tespit ederseniz, Apps Script ile bu paylaşımları otomatik olarak iptal edebilirsiniz. Örneğin, bir dosyanın "Herkese Açık" olarak paylaşıldığını tespit ettiğinizde, betiğiniz bu dosyanın paylaşım ayarını otomatik olarak "Özel" (Private) veya "Alan Adı İçi" (Domain internal) olarak değiştirebilir. Bu, manuel müdahaleye gerek kalmadan güvenlik politikalarınızı hızlıca uygulamanızı sağlar.


    // Örnek: Herkese açık bir dosyanın paylaşımını özel yapma
    function makeFilePrivate(fileId) {
      try {
        const file = DriveApp.getFileById(fileId);
        if (file.getSharingPermission() === DriveApp.Permission.ANYONE || 
            file.getSharingPermission() === DriveApp.Permission.ANYONE_WITH_LINK) {
          file.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.PRIVATE);
          Logger.log(Dosya ID: ${fileId} - "${file.getName()}" herkese açık paylaşımı iptal edildi ve özel yapıldı.);
        } else {
          Logger.log(Dosya ID: ${fileId} - "${file.getName()}" zaten özel veya farklı bir paylaşım tipi var.);
        }
      } catch (e) {
        Logger.log(Dosya ID: ${fileId} için paylaşım ayarları güncellenirken hata oluştu: ${e.message});
      }
    }
    // Bu fonksiyonu, denetim raporunda belirlediğiniz riskli dosyalar için çağırabilirsiniz.
    

Uzman İpucu: Otomasyon yaparken her zaman dikkatli olun. Otomatik değişiklikler yapmadan önce, küçük bir veri kümesi üzerinde test edin ve bir geri alma (undo) stratejiniz olduğundan emin olun. Ayrıca, kullanıcıları bilgilendirmek için bir e-posta bildirim sistemi entegre etmek, olası karışıklıkların önüne geçebilir.

Google Drive Denetimi İçin Mobil Uyumluluk Neden Önemli?

Denetim raporlarını oluşturmak kadar, bu raporlara her yerden ve her cihazdan erişebilmek de yönetici ve güvenlik ekipleri için kritik bir öneme sahiptir. Google E-Tabloları'na aktardığımız veriler, Google'ın mobil uygulamaları sayesinde akıllı telefonlar ve tabletler üzerinden sorunsuz bir şekilde görüntülenebilir, filtrelenebilir ve analiz edilebilir. Bu, özellikle hareket halindeki yöneticilerin veya olaylara hızla müdahale etmesi gereken güvenlik personelinin anında bilgiye ulaşmasını sağlar. Mobil uyumluluk, denetim sürecinin esnekliğini ve etkinliğini artırır.

Eğer Apps Script ile bir web uygulaması veya özel bir HTML raporu oluşturmayı tercih ederseniz, bu raporun mobil cihazlarda düzgün görüntülenmesi için responsive tasarım prensiplerini uygulamak gerekir. HTML ve CSS kullanarak tabloların veya diğer içeriklerin ekran boyutuna göre otomatik olarak ayarlanmasını sağlayabilirsiniz. Aşağıda, basit bir medya sorgusu (media query) örneği ile bu tür bir mobil uyumluluğun nasıl sağlanabileceği gösterilmiştir. Bu, raporun dar ekranlarda bile kullanılabilir kalmasına yardımcı olur:


    
    

Bu CSS kodu, varsayımsal bir HTML raporunda kullanıldığında, tablo başlıklarını gizleyerek ve her bir hücrenin önüne "data-label" özelliği ile sütun adını getirerek, verilerin mobil cihazlarda daha okunabilir olmasını sağlar. Ancak, Apps Script ile genellikle Google E-Tabloları kullanıldığı için, Google'ın kendi mobil uygulamalarının bu uyumluluğu zaten sağladığını belirtmek önemlidir. Bu sayede, ek bir kodlama çabası olmadan mobil cihazlardan denetim raporlarınıza erişim kolaylaşır.

Sonuç ve Sıkça Sorulan Sorular

Google Drive'da paylaşılan dosyaları Apps Script ile denetlemek, kuruluşların veri güvenliğini artırma, uyumluluk gereksinimlerini karşılama ve operasyonel verimliliği yükseltme konusunda kritik bir yetenek kazanmasını sağlar. Bu makalede, Apps Script'in temel prensiplerinden başlayarak, paylaşılan dosyaları listeleme, detaylı izin analizleri yapma ve bu verileri Google E-Tablolarına raporlama süreçlerini adım adım ele aldık. Ayrıca, zamanlanmış otomasyonlar, yetim dosyaların tespiti ve güvenlik politikalarının otomatik uygulanması gibi gelişmiş senaryolara da değindik. Bu teknikleri kullanarak, manuel denetimlerin getirdiği zaman kaybını ve insan hatası riskini minimize edebilir, hassas verilerinizi daha güvende tutabilirsiniz.

Unutmayın ki veri güvenliği sürekli bir çaba gerektirir. Apps Script ile kuracağınız bu denetim sistemi, bu çabanın önemli bir parçası olacak ve sizi potansiyel risklere karşı bir adım öne taşıyacaktır. Düzenli denetimler ve proaktif yaklaşımlar sayesinde, hem iç hem de dış tehditlere karşı daha dirençli bir dijital ortam yaratmanız mümkün olacaktır. Şimdi, aklınıza takılabilecek bazı soruları yanıtlayalım:

Sıkça Sorulan Sorular

  • S: Apps Script ile tüm Drive'ımı denetleyebilir miyim, yoksa sadece bana ait dosyaları mı?
    C: Varsayılan olarak, Apps Script betikleri genellikle betiği çalıştıran kullanıcının Drive'ındaki (sahip olduğu veya onunla paylaşılan) dosyalara erişebilir. Kuruluşunuzun tüm Drive'ını (tüm kullanıcıların dosyalarını) denetlemek için, Google Workspace yöneticisi olmanız ve betiği alan adı genelinde yetkilendirilmiş bir hizmet hesabı (service account) üzerinden çalıştırmanız veya Drive API'nin gelişmiş yetkilendirme seçeneklerini kullanmanız gerekebilir. Bu, genellikle daha büyük kuruluşların ihtiyaç duyduğu bir senaryodur ve "Alan Adı Genelinde Yetki (Domain-wide Delegation)" özelliği ile sağlanır.
  • S: Apps Script'in çalışması ne kadar güvenlidir?
    C: Apps Script, Google'ın güvenli altyapısında çalışır ve OAuth 2.0 protokolünü kullanarak hizmetlere erişim izinlerini yönetir. Bu, betiğinize yalnızca sizin veya kuruluşunuzun onayladığı izinlerin verileceği anlamına gelir. Kendi yazdığınız betikler için güvenliği sağlamak sizin sorumluluğunuzdadır; kötü amaçlı kod yazmaktan veya gereksiz izinler istemekten kaçınmalısınız.
  • S: Oluşturduğum denetim raporu çok büyük olursa ne yapmalıyım?
    C: Eğer Drive'ınızdaki dosya sayısı çok fazlaysa ve raporunuz çok büyük hale geliyorsa, Apps Script'in yürütme süresi limitlerine (genellikle 6 dakika) takılabilirsiniz. Bu durumda, betiğinizi daha küçük parçalara ayırarak veya yalnızca belirli kriterlere uyan dosyaları (örneğin son 30 günde güncellenenler) denetleyerek optimize edebilirsiniz. Ayrıca, verileri parça parça işleyip e-tabloya yazmak da bir çözüm olabilir.
  • S: Apps Script ile bir dosyanın paylaşımını otomatik olarak değiştirebilir miyim?
    C: Evet, file.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.PRIVATE) gibi fonksiyonlarla bir dosyanın paylaşım ayarlarını programatik olarak değiştirebilirsiniz. Ancak bu tür işlemleri yaparken çok dikkatli olmalı, önceden kapsamlı testler yapmalı ve kullanıcıları bilgilendirmeyi unutmamalısınız. Yanlışlıkla kritik dosyalara erişimi kapatmak iş süreçlerini aksatabilir.
  • S: Bu Apps Script çözümü ücretli mi?
    C: Hayır, Google Workspace kullanıcıları için Apps Script kullanımı genellikle ücretsizdir ve belirli günlük kotalar dahilinde çalışır. Bu kotalar, çoğu küçük ve orta ölçekli kuruluşun veya bireysel kullanıcının ihtiyaçları için fazlasıyla yeterlidir. Daha yüksek kotalara ihtiyaç duyan çok büyük kuruluşlar için ek seçenekler mevcut olabilir, ancak temel denetim görevleri için ek bir maliyetle karşılaşmazsınız.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık