Tool: Audit für öffentliche Google Drive Dateien
Übersicht
Dieses Skript dient der Sicherheitsüberprüfung des eigenen Google Drive Accounts. Es durchsucht automatisch alle Dateien, bei denen der Benutzer der Eigentümer ist, und prüft, ob diese öffentlich zugänglich sind.
Was wird gefunden?
- Dateien mit dem Status: "Jeder, der über den Link verfügt" (Anyone with link)
- Dateien mit dem Status: "Öffentlich im Web" (Public / Searchable)
Das Skript generiert einen Bericht in einer neuen Google Tabelle mit Zeitstempel.
Voraussetzung & Einrichtung
Da das Skript sehr viele Dateien schnell verarbeiten muss, nutzt es die Google Drive API v3 (Advanced Service). Diese muss einmalig aktiviert werden.
Schritt 1: Skript anlegen
- Öffnen Sie script.google.com oder erstellen Sie ein neues Skript aus Google Drive heraus.
- Benennen Sie das Projekt (z. B.
Security-Audit-Tool).
Schritt 2: Drive API aktivieren (WICHTIG!)
Damit das Skript funktioniert, muss der Drive-Dienst hinzugefügt werden:
- Klicken Sie im Editor links in der Leiste auf Dienste (Services)
+. - Suchen Sie in der Liste nach Drive API.
- Wählen Sie es aus und klicken Sie auf Hinzufügen.
- Hinweis: Der Identifier muss
Driveheißen (Standard).
- Hinweis: Der Identifier muss
Schritt 3: Code einfügen
Löschen Sie allen vorhandenen Code im Editor und fügen Sie das untenstehende Skript ein.
Das Skript
/**
* SKRIPT: Audit öffentlicher Google Drive Dateien
* VERSION: 2.01 (Bulk-WriteMit Typ-Erkennung & API v3 Optimized)Datenschutz)
* * ZWECK:
* Durchsucht das gesamte Google Drive des ausführenden Benutzers nach Dateien,Dateien/Ordnern,
* die öffentlich oder per Link für "Jeden" freigegeben sind.
* Erstellt einen Bericht in einer neuen Google Tabelle.
*
* VORAUSSETZUNG:
* Der Dienst "Drive API" (Version 3) muss im Editor unter "Dienste" aktiviert sein.
*/
function generatePublicFileReport() {
// --- KONFIGURATION & SETUP ---
// Zeitstempel für den Dateinamen generieren (Format: Datum, Uhrzeit)
var timestamp = new Date().toLocaleString();
var filename = "Sicherheitsbericht: Öffentliche Dateien (" + timestamp + ")";
// Neue Google Tabelle erstellen
var spreadsheet = SpreadsheetApp.create(filename);
var sheet = spreadsheet.getActiveSheet();
// Datenspeicher initialisieren (sammelt alle Ergebnisse vor dem Schreiben)
var outputData = [];
// Kopfzeile definieren (Jetzt mit "Typ")
outputData.push(["Dateiname", "Typ", "Link zur Datei", "Zugriffsart"]);
Logger.log("Starte Scan-Vorgang für: Vorgang..." + Session.getActiveUser().getEmail());
// --- HAUPTPROZESS: SUCHE VIA DRIVE API ---
var pageToken;
// Marker für die Seitenblätterung bei vielen Dateien
var count = 0; // Zähler für gefundene Treffer
do {
// Abfrage an die Google Drive API (v3)v3
// Filter:WICHTIG: NurWir Dateien,fragen diejetzt mirauch gehören'mimeType' ('me'ab, inum owners)Ordner undzu nicht im Papierkorb sinderkennen
var result = Drive.Files.list({
q: "'me' in owners and trashed = false",
pageSize: 1000,
// Anzahl der Dateien pro Abruf (Maximalwert für Performance)
pageToken: pageToken,
fields: "nextPageToken, files(name, mimeType, webViewLink, permissions(type, allowFileDiscovery))"
});
var files = result.files;
// Prüfen, ob Dateien im aktuellen Paket enthalten sind
if (files && files.length > 0) {
// Jede Datei einzeln auf Berechtigungen prüfen
for (var i = 0; i < files.length; i++) {
var file = files[i];
var perms = file.permissions;
if (perms) {
// Durchlaufen aller Berechtigungseinträge der Datei
for (var p = 0; p < perms.length; p++) {
var perm = perms[p];
// Kriterium: Typ ist 'anyone' (bedeutet: Jeder mit Link oder Öffentlich)
if (perm.type === 'anyone') {
// Unterscheidung: Ist die Datei suchbar (Public) oder nur via Link erreichbar?
var accessType = perm.allowFileDiscovery ? "Öffentlich im Web (Suchmaschinen)" : "Jeder mit Link";
// TrefferTyp-Erkennung: Ist es ein Ordner?
var typeLabel = (file.mimeType === 'application/vnd.google-apps.folder') ? "Ordner" : "Datei";
// Daten zum DatenspeicherSpeicher hinzufügen (inkl. Typ an 2. Stelle)
outputData.push([file.name, typeLabel, file.webViewLink, accessType]);
count++;
// Sobald ein öffentlicher Zugriff gefunden wurde, zur nächsten Datei springen
break;
}
}
}
}
}
// Marker für die nächste Seite setzen (falls mehr als 1000 Dateien existieren)
pageToken = result.nextPageToken;
} while (pageToken);
// Schleife läuft, solange es noch weitere Seiten gibt
// --- AUSGABE: SCHREIBEN IN DIE TABELLEAUSGABE ---
if (outputData.length > 0) {
// Bulk-Write:Write Schreibtfür alle4 Daten auf einmal (performant & ressourcensparend)Spalten
sheet.getRange(1, 1, outputData.length, 3)4).setValues(outputData);
// Visuelle Formatierung der Kopfzeile
sheet.getRange("A1:C1"D1").setFontWeight("bold");
sheet.setFrozenRows(1); // Erste Zeile fixieren
}
Logger.log("Scan beendet. " + count + " kritische DateienElemente gefunden.");
Logger.log("Link zum Bericht: " + spreadsheet.getUrl());
}
Ausführung & Ergebnis
- Wählen Sie oben im Editor die Funktion
generatePublicFileReportaus. - Klicken Sie auf Ausführen.
Beim ersten Mal:Bestätigen Sie die Zugriffsberechtigungen (Ihr Account -> Erweitert -> Unsicher -> Zulassen).Warten Sie, bis das Skript durchgelaufen ist.- Öffnen Sie das Ausführungsprotokoll (unten im Editor)
. Klicken Sie auffür den Link zurgenerierten GoogleTabelle.
Hinweis:Wenn die Tabelle leer ist (nur Überschriften), wurden keine öffentlichen Dateien gefunden, deren Eigentümer Sie sind.