Google-Workspace mit RClone nutzen

Über „Drive for Desktop“ lassen sich Inhalte des Google-Workspace sehr einfach bearbeiten, die Daten liegen aber unverschlüsselt in der Cloud und können ggf. durch Google-Mitarbeiter oder -KI eingesehen werden.

Um diesen Sachverhalt definitiv auszuschließen müssen die Daten, die auf dem Google-Workspace gespeichert sind, verschlüsselt werden. Eine praktikable Lösung, die ohne Container auskommt, ist RClone. Es wurde speziell für die Nutzung mit Cloud-Speichern entwickelt und ermöglicht unter Anderem folgendes.

  • Einbinden verschiedener Cloudspeicherdienste
  • Nutzung mehrerer Protokolle
  • Zusammenfassung mehrerer Speicherorte zu einer einheitlichen Sichtweise
  • Verschlüsselung der Inhalte

Installation

RClone steht für viele Plattformen zur Verfügung und kann von der offiziellen Seite des Projektes heruntergeladen werden. Für Windows ist das ein einfaches ZIP-Archiv, das an einer beliebigen Stelle entpackt werden kann. Um die spätere Skripterstellung nicht unnötig kompliziert zu machen, sollte keine durch die UAC geschütztes Verzeichnis genutzt werden.

Um die Cloud-Speicher auch als Laufwerk darstellen zu können, muss zusätzlich noch WinFsp installiert werden. Dabei reichen die „Core“-Funktionalitäten aus.

Konfiguration

Vorbereitungen für Google-Drive

Wird über externe Programme auf den Google Workspace zugegriffen, ist dafür eine Client-ID notwendig. Für RClone ist eine solche bereits vorhanden, jedoch stark genutzt, so dass es ggf. zu Beschränkungen der Zugriffs-Anzahl kommen kann. Um dies zu vermeiden, sollte eigenen Client-ID erstellt werden.

Die Erstellung erfolgt über die Google API Console.

Über „APIs und Dienste aktivieren“ kann eine neue API aktiviert werden. Um den Zugriff auf Google Drive zu ermöglichen muss die „Google Drive API“ aus dem Katalog gesucht werden.

Diese muss dann zunächst aktiviert werden.

Nach dem Aktivieren wechselt das Dashboard in eine Übersicht der aktivierten APIs und Dienste. Hier müssen dann neue Anmeldedaten erstellt werden. Dies erfolgt im linken Menü über „Anmeldedaten“.

Hier muss zunächst der „Zustimmungsbildschirm“ konfiguriert werden. Hier kann ein interner oder externer „Zustimmungsbildschirm“ erstellt werden.

Im folgenden werden Anwendungsinformationen abgefragt, die zur OAuth-Anmeldung dargestellt werden, im Einzelnen:

  • Anwendungsname – RClone
  • Nutzersupport-E.Mail – rclone@dachs.blog
  • Anwendungslogo
  • Startseite der Anwendung – registrierte Domain für Google-Workspace
  • Link zur Datenschutzerklärung
  • Link zu Nutzungsbedingungen
  • Autorisierte Domain – registrierte Domain für Google-Workspace

Als nächsten werden Bereiche konfiguriert, auf die die App Zugriff haben soll. Als Bereich sollte die „Google Drive API“ mit „…/auth/drive“ ausreichen, da hier Dateien aufgerufen, bearbeitet, erstellt und gelöscht werden dürfen.

Zum Abschluss müssen noch der zulässigen Nutzer hinzugefügt werden und es folgt eine Übersichtsseite der getätigten Einstellungen.

Nachdem der „Zustimmungsbildschirm“ erstellt ist, kann der eigentliche OAuth-API-Schlüssel über „Create Credentials“ und „OAuth-Client-ID“ erstellt werden. Hier muss als Anwendungstyp „Desktopanwendung“ und ein beliebiger Name angegeben werden.

Die mit „Erstellen“ angezeigten IDs müssen heruntergeladen und notiert werden, um später bei der RClone-Konfiguration genutzt zu werden.

Bei Erstellung einer externen Applikation, muss diese jetzt unter „OAuth-Zustimmungsbildschirm“ veröffentlicht werden. Wurde eine interne Applikation erstellt, entfällt die Veröffentlichung, die Daten sind dann aber nur Nutzern der registrierten Domain zugänglich.

RClone-Konfiguration

Die eigentliche Konfiguration RClones erfolgt über die Kommandozeile.

rclone config

Beim ersten Aufruf wird die Konfigurationsdatei erstellt und es kann mit der Erstellung eines Dienstes begonnen werden.

2022/07/29 19:49:23 NOTICE: Config file "C:\\Users\\Administrator\\AppData\\Roaming\\rclone\\rclone.conf" not found - using defaults
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q>

Zunächst wird eine Bezeichnung ausgewählt und der Typ des Dienstes abgefragt. Für Google-Drive bieten sich „GDrive“ und „drive“ oder „18“ an.

n/s/q> n

Enter name for new remote.
name> GDrive

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.

[...]
14 / Encrypt/Decrypt a remote
   \ (crypt)
[...]
18 / Google Drive
   \ (drive)

[...]

Storage> drive

Als erstes werden die im vorherigen Abschnitt erstellten IDs abgefragt.

Option client_id.
Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a value. Press Enter to leave empty.
client_id> *******

Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret> *******

Als nächstes wird der Bereich abgefragt auf den Zugiff besteht, da bei der Erstellung der Applikation nur „drive“ ausgewählt wurde, muss hier die Option 1 gewählt werden.

Option scope.
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
 1 / Full access all files, excluding Application Data Folder.
   \ (drive)
 2 / Read-only access to file metadata and file contents.
   \ (drive.readonly)
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ (drive.file)
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ (drive.appfolder)
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ (drive.metadata.readonly)
scope> 1

Es werden noch weitere Optionen abgefragt, die aber üblicher Weise mit den Standardwerten verwendet werden.


Option service_account_file.
Service Account Credentials JSON file path.
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
Enter a value. Press Enter to leave empty.
service_account_file>

Edit advanced config?
y) Yes
n) No (default)
y/n> n

Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine

y) Yes (default)
n) No
y/n> y

2022/07/29 20:03:29 NOTICE: Make sure your Redirect URL is set to "http://127.0.0.1:53682/" in your custom config.
2022/07/29 20:03:29 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=NwZSwD3Yw1sXI7vvOX7lrA
2022/07/29 20:03:29 NOTICE: Log in and authorize rclone for access
2022/07/29 20:03:29 NOTICE: Waiting for code...

An dieser Stelle wird im Browser eine OAuth-Anmeldefenster geöffnet, und die Berechtigung des im letzten Kapitel erstellten Anwendung abgefragt.

Nach der Bestätigung wird die Konfiguration abgeschlossen.

2022/07/29 20:04:43 NOTICE: Got code
Configure this as a Shared Drive (Team Drive)?

y) Yes
n) No (default)
y/n> n

Configuration complete.
Options:
- type: drive
- client_id: *******
- client_secret: *******
- scope: drive
- token: *******
- team_drive:
Keep this "GDrive" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d>

Mit dem Speichern und beenden der Konfiguration kann durch Mounten des Dienstes „GDrive“ grundsätzlich bereits auf Google-Drive zugegriffen werden.

rclone mount GDrive:/ M:

Erweiterte Konfiguration und Verschlüsselung

C:\Services\RClone>rclone config
Current remotes:

Name                 Type
====                 ====
GDrive               drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n

Enter name for new remote.
name> Media

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ (fichier)
 2 / Akamai NetStorage
   \ (netstorage)
 3 / Alias for an existing remote
   \ (alias)
 4 / Amazon Drive
   \ (amazon cloud drive)
 5 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, China Mobile, Cloudflare, ArvanCloud, Digital Ocean, Dreamhost, Huawei OBS, IBM COS, IDrive e2, Lyve Cloud, Minio, Netease, RackCorp, Scaleway, SeaweedFS, StackPath, Storj, Tencent COS and Wasabi
   \ (s3)
 6 / Backblaze B2
   \ (b2)
 7 / Better checksums for other remotes
   \ (hasher)
 8 / Box
   \ (box)
 9 / Cache a remote
   \ (cache)
10 / Citrix Sharefile
   \ (sharefile)
11 / Combine several remotes into one
   \ (combine)
12 / Compress a remote
   \ (compress)
13 / Dropbox
   \ (dropbox)
14 / Encrypt/Decrypt a remote
   \ (crypt)
15 / Enterprise File Fabric
   \ (filefabric)
16 / FTP
   \ (ftp)
17 / Google Cloud Storage (this is not Google Drive)
   \ (google cloud storage)
18 / Google Drive
   \ (drive)
19 / Google Photos
   \ (google photos)
20 / HTTP
   \ (http)
21 / Hadoop distributed file system
   \ (hdfs)
22 / HiDrive
   \ (hidrive)
23 / Hubic
   \ (hubic)
24 / In memory object storage system.
   \ (memory)
25 / Internet Archive
   \ (internetarchive)
26 / Jottacloud
   \ (jottacloud)
27 / Koofr, Digi Storage and other Koofr-compatible storage providers
   \ (koofr)
28 / Local Disk
   \ (local)
29 / Mail.ru Cloud
   \ (mailru)
30 / Mega
   \ (mega)
31 / Microsoft Azure Blob Storage
   \ (azureblob)
32 / Microsoft OneDrive
   \ (onedrive)
33 / OpenDrive
   \ (opendrive)
34 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ (swift)
35 / Pcloud
   \ (pcloud)
36 / Put.io
   \ (putio)
37 / QingCloud Object Storage
   \ (qingstor)
38 / SSH/SFTP
   \ (sftp)
39 / Sia Decentralized Cloud
   \ (sia)
40 / Storj Decentralized Cloud Storage
   \ (storj)
41 / Sugarsync
   \ (sugarsync)
42 / Transparently chunk/split large files
   \ (chunker)
43 / Union merges the contents of several upstream fs
   \ (union)
44 / Uptobox
   \ (uptobox)
45 / WebDAV
   \ (webdav)
46 / Yandex Disk
   \ (yandex)
47 / Zoho
   \ (zoho)
48 / premiumize.me
   \ (premiumizeme)
49 / seafile
   \ (seafile)
Storage> crypt

Option remote.
Remote to encrypt/decrypt.
Normally should contain a ':' and a path, e.g. "myremote:path/to/dir",
"myremote:bucket" or maybe "myremote:" (not recommended).
Enter a value.
remote> GDrive:RC1

Option filename_encryption.
How to encrypt the filenames.
Choose a number from below, or type in your own string value.
Press Enter for the default (standard).
   / Encrypt the filenames.
 1 | See the docs for the details.
   \ (standard)
 2 / Very simple filename obfuscation.
   \ (obfuscate)
   / Don't encrypt the file names.
 3 | Adds a ".bin" extension only.
   \ (off)
filename_encryption> 1

Option directory_name_encryption.
Option to either encrypt directory names or leave them intact.
NB If filename_encryption is "off" then this option will do nothing.
Choose a number from below, or type in your own boolean value (true or false).
Press Enter for the default (true).
 1 / Encrypt directory names.
   \ (true)
 2 / Don't encrypt directory names, leave them intact.
   \ (false)
directory_name_encryption> 1

Option password.
Password or pass phrase for encryption.
Choose an alternative below.
y) Yes, type in my own password
g) Generate random password
y/g> y
Enter the password:
password:
Confirm the password:
password:

Option password2.
Password or pass phrase for salt.
Optional but recommended.
Should be different to the previous password.
Choose an alternative below. Press Enter for the default (n).
y) Yes, type in my own password
g) Generate random password
n) No, leave this optional password blank (default)
y/g/n> y
Enter the password:
password:
Confirm the password:
password:

Edit advanced config?
y) Yes
n) No (default)
y/n> y

Option server_side_across_configs.
Allow server-side operations (e.g. copy) to work across different crypt configs.
Normally this option is not what you want, but if you have two crypts
pointing to the same backend you can use it.
This can be used, for example, to change file name encryption type
without re-uploading all the data. Just make two crypt backends
pointing to two different directories with the single changed
parameter and use rclone move to move the files between the crypt
remotes.
Enter a boolean value (true or false). Press Enter for the default (false).
server_side_across_configs>

Option no_data_encryption.
Option to either encrypt file data or leave it unencrypted.
Choose a number from below, or type in your own boolean value (true or false).
Press Enter for the default (false).
 1 / Don't encrypt file data, leave it unencrypted.
   \ (true)
 2 / Encrypt file data.
   \ (false)
no_data_encryption>

Option filename_encoding.
How to encode the encrypted filename to text string.
This option could help with shortening the encrypted filename. The
suitable option would depend on the way your remote count the filename
length and if it's case sensitve.
Choose a number from below, or type in your own string value.
Press Enter for the default (base32).
 1 / Encode using base32. Suitable for all remote.
   \ (base32)
 2 / Encode using base64. Suitable for case sensitive remote.
   \ (base64)
   / Encode using base32768. Suitable if your remote counts UTF-16 or
 3 | Unicode codepoint instead of UTF-8 byte length. (Eg. Onedrive)
   \ (base32768)
filename_encoding> 2

Edit advanced config?
y) Yes
n) No (default)
y/n> y

Option server_side_across_configs.
Allow server-side operations (e.g. copy) to work across different crypt configs.
Normally this option is not what you want, but if you have two crypts
pointing to the same backend you can use it.
This can be used, for example, to change file name encryption type
without re-uploading all the data. Just make two crypt backends
pointing to two different directories with the single changed
parameter and use rclone move to move the files between the crypt
remotes.
Enter a boolean value (true or false). Press Enter for the default (false).
server_side_across_configs>

Option no_data_encryption.
Option to either encrypt file data or leave it unencrypted.
Choose a number from below, or type in your own boolean value (true or false).
Press Enter for the default (false).
 1 / Don't encrypt file data, leave it unencrypted.
   \ (true)
 2 / Encrypt file data.
   \ (false)
no_data_encryption>

Option filename_encoding.
How to encode the encrypted filename to text string.
This option could help with shortening the encrypted filename. The
suitable option would depend on the way your remote count the filename
length and if it's case sensitve.
Choose a number from below, or type in your own string value.
Press Enter for the default (base64).
 1 / Encode using base32. Suitable for all remote.
   \ (base32)
 2 / Encode using base64. Suitable for case sensitive remote.
   \ (base64)
   / Encode using base32768. Suitable if your remote counts UTF-16 or
 3 | Unicode codepoint instead of UTF-8 byte length. (Eg. Onedrive)
   \ (base32768)
filename_encoding>

Edit advanced config?
y) Yes
n) No (default)
y/n> n

Configuration complete.
Options:
- type: crypt
- remote: GDrive:RC1
- password: *** ENCRYPTED ***
- password2: *** ENCRYPTED ***
- filename_encoding: base64
Keep this "Media" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

Current remotes:

Name                 Type
====                 ====
GDrive               drive
Media                crypt

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

C:\Services\RClone>rclone mount Media:/ M: --volname "Media" --vfs-cache-mode full --vfs-cache-max-age 100h --vfs-cache-max-size 250G --vfs-cache-poll-interval 15m

This post is also available in: Deutsch

Schreibe einen Kommentar