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.1 (Mit Typ-Erkennung & Datenschutz)
* * ZWECK:
* Durchsucht das gesamte Google Drive des ausführenden Benutzers nach 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 ---
var timestamp = new Date().toLocaleString();
var filename = "Sicherheitsbericht: Öffentliche Dateien (" + timestamp + ")";
var spreadsheet = SpreadsheetApp.create(filename);
var sheet = spreadsheet.getActiveSheet();
var outputData = [];
// Kopfzeile definieren (Jetzt mit "Typ")
outputData.push(["Dateiname", "Typ", "Link zur Datei", "Zugriffsart"]);
Logger.log("Starte Scan-Vorgang...");
// --- HAUPTPROZESS: SUCHE VIA DRIVE API ---
var pageToken;
var count = 0;
do {
// Abfrage an die Drive API v3
// WICHTIG: Wir fragen jetzt auch 'mimeType' ab, um Ordner zu erkennen
var result = Drive.Files.list({
q: "'me' in owners and trashed = false",
pageSize: 1000,
pageToken: pageToken,
fields: "nextPageToken, files(name, mimeType, webViewLink, permissions(type, allowFileDiscovery))"
});
var files = result.files;
if (files && files.length > 0) {
for (var i = 0; i < files.length; i++) {
var file = files[i];
var perms = file.permissions;
if (perms) {
for (var p = 0; p < perms.length; p++) {
var perm = perms[p];
if (perm.type === 'anyone') {
var accessType = perm.allowFileDiscovery ? "Öffentlich im Web (Suchmaschinen)" : "Jeder mit Link";
// Typ-Erkennung: Ist es ein Ordner?
var typeLabel = (file.mimeType === 'application/vnd.google-apps.folder') ? "Ordner" : "Datei";
// Daten zum Speicher hinzufügen (inkl. Typ an 2. Stelle)
outputData.push([file.name, typeLabel, file.webViewLink, accessType]);
count++;
break;
}
}
}
}
}
pageToken = result.nextPageToken;
} while (pageToken);
// --- AUSGABE ---
if (outputData.length > 0) {
// Bulk-Write für 4 Spalten
sheet.getRange(1, 1, outputData.length, 4).setValues(outputData);
sheet.getRange("A1:D1").setFontWeight("bold");
sheet.setFrozenRows(1);
}
Logger.log("Scan beendet. " + count + " Elemente 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.
- Öffnen Sie das Ausführungsprotokoll (unten im Editor) für den Link zur Tabelle.