Waarom de app er een aanmaakt
Section titled “Waarom de app er een aanmaakt”Een Nextcloud-beheerder kan via WebDAV niet schrijven in de eigen bestanden van een andere gebruiker. Wanneer een taak met Destination Type Nextcloud User draait als Migratie of Testmigratie, worden de bestanden daarom als die gebruiker geschreven, met een app-wachtwoord dat de app voor de run aanmaakt.
- Alleen voor dat soort taak. Een Discovery schrijft niets in de bestanden van de gebruiker en krijgt er geen. Dat geldt ook voor een taak naar een Team Folder of een bestandsshare.
- Eén per run. Elk wachtwoord wordt voor één run aangemaakt en krijgt als naam
SMART Migration runen het nummer van de run. - Alleen voor een beheerder. Het account dat de taak claimt, moet een Nextcloud-beheerder zijn. Een lid van een groep die onder Wie de app kan gebruiken is gekozen, mag de API van de app gebruiken, maar een claim door zo'n account krijgt geen wachtwoord.
- Alleen voor een bestaande gebruiker. Een taak waarvan de
Destination Usergeen Nextcloud-gebruiker is, krijgt geen wachtwoord, en de run ervan kan niet schrijven.
De levensloop van één wachtwoord
Section titled “De levensloop van één wachtwoord”Het wachtwoord bestaat precies zo lang als de run waarvoor het is aangemaakt.
De server claimt de taak
De SMART Migration-server vraagt de app om de volgende taak met de status Gereed en stuurt zijn openbare RSA-sleutel mee met het verzoek.
De app maakt het wachtwoord aan
Zodra vaststaat dat de taak is uitgegeven, maakt de app een nieuw app-wachtwoord voor de bestemmingsgebruiker aan: 72 willekeurige letters en cijfers uit de veilige willekeurige generator van Nextcloud. De app legt vast dat er voor de run een wachtwoord is uitgegeven, maar nooit het wachtwoord zelf.
Het wordt versleuteld en verzonden
Het wachtwoord wordt versleuteld met de openbare sleutel van de server en Base64-gecodeerd teruggestuurd in het antwoord op de claim. Het wordt nooit als leesbare tekst verzonden.
De server schrijft de bestanden
De server ontsleutelt het wachtwoord met zijn privésleutel en meldt zich als de bestemmingsgebruiker aan bij WebDAV om de bestanden te schrijven.
De app trekt het in
Wanneer de server de run als Voltooid of Geannuleerd meldt, of wanneer de taak wordt geannuleerd, trekt de app het wachtwoord direct in. Een run die is verwijderd, in bulk is geannuleerd of is achtergelaten door een server die is gestopt, wordt opgevangen door een achtergrondtaak die elke vijf minuten elk wachtwoord intrekt waarvan de run voorbij is.
De opschoning heeft de achtergrondtaken van Nextcloud nodig
De opschoning om de vijf minuten draait als een van de achtergrondtaken van Nextcloud. Stel deze in op Cron onder Beheerinstellingen → Basisinstellingen, zodat ze draaien, of er nu wel of niet iemand een pagina open heeft. Een run die Actief blijft, behoudt zijn wachtwoord totdat hij eindigt.
Hoe het onderweg wordt beschermd
Section titled “Hoe het onderweg wordt beschermd”Het wachtwoord reist alleen binnen het antwoord op de claim, versleuteld met een sleutel die alleen de SMART Migration-server kan ontcijferen. Wie dat antwoord leest, in een log, in een proxy die HTTPS inspecteert of in een opgeslagen kopie van de communicatie, ziet alleen versleutelde tekst.
| Onderdeel | Wat wordt gebruikt |
|---|---|
| De sleutel van de server | Een RSA-sleutelpaar van minstens 2048 bits, aangemaakt door de SMART Migration-server. Alleen de openbare sleutel wordt verzonden, als publicKey: Base64 van de DER-vorm, of PEM. |
| Versleuteling | RSA-OAEP met SHA-1, uitgevoerd door OpenSSL van PHP op de Nextcloud-server. |
| Onderweg | De versleutelde tekst, Base64-gecodeerd, als destinationUserAppPassword, binnen de HTTPS-verbinding die de server al gebruikt. |
| Ontsleuteling | CrypterObject van PowerBuilder op de SMART Migration-server, met de privésleutel. |
- Waarom versleuteling met een openbare sleutel. De openbare sleutel is geen geheim: ook een verzoek en het antwoord daarop die samen zijn onderschept, geven het wachtwoord niet prijs. Een gedeelde sleutel die met het verzoek wordt meegestuurd, zou naast het wachtwoord reizen dat hij moet beschermen.
- Waarom SHA-1 in OAEP. OAEP met SHA-1 is wat
CrypterObjectvan PowerBuilder kan ontsleutelen. De veiligheid van OAEP berust niet op de botsingsbestendigheid van de hash, dus de bekende zwakheden van SHA-1 op het gebied van botsingen zijn hier niet van toepassing. - Geen sleutel, geen wachtwoord. Een claim zonder
publicKeykrijgt voor zo'n taak geen wachtwoord, en het Nextcloud-log vermeldt waarom. EenpublicKeydie geen openbare RSA-sleutel van minstens 2048 bits is, wordt geweigerd voordat er een taak wordt genomen. - Bij een fout gaat alles dicht. Als het wachtwoord niet kan worden versleuteld, wordt het direct ingetrokken en bevat het antwoord op de claim er geen.
Op de SMART Migration-server
De server maakt zijn sleutelpaar aan wanneer een worker start en bewaart de privésleutel alleen in het geheugen. Hij ontsleutelt het wachtwoord vlak voordat hij zich aanmeldt bij WebDAV en schrijft het wachtwoord of de privésleutel nooit naar zijn logs.
Wat er wordt bewaard, en waar
Section titled “Wat er wordt bewaard, en waar”Noch de app noch Nextcloud bewaart het wachtwoord zelf.
- De eigen lijst met app-wachtwoorden van Nextcloud bewaart het zoals elk app-wachtwoord: als een eenrichtingshash, zichtbaar in Instellingen → Beveiliging → Apparaten & sessies van de gebruiker zolang de run duurt.
- De app bewaart één rij per uitgegeven wachtwoord, met de run, de gebruiker, het tijdstip van aanmaken en het account dat de taak heeft geclaimd, zodat de app weet wat er moet worden ingetrokken. De rij wordt verwijderd zodra het wachtwoord is ingetrokken.
- Het Nextcloud-log legt elk uitgegeven en ingetrokken wachtwoord vast, met de gebruiker en de run, op het niveau Info, en elke weigering als waarschuwing: geen
publicKey, een claim door een account dat geen beheerder is, een gebruiker die niet bestaat.
Waar het wel en niet bij kan
Section titled “Waar het wel en niet bij kan”Een app-wachtwoord meldt zich aan als de bijbehorende gebruiker. Zolang de run duurt, kan het in Nextcloud dus alles wat die gebruiker kan. Het is niet beperkt tot de bestemmingsmap van de taak.
- Het kan niet bij externe opslag waarbij de gebruiker zich aanmeldt met zijn eigen inloggegevens, en ook niet bij bestanden die zijn versleuteld met de eigen sleutels van de gebruiker: het wordt aangemaakt zonder het inlogwachtwoord van de gebruiker. Server-side versleuteling met de hoofdsleutel is geen probleem.
- Het is kortstondig. Het bestaat vanaf de claim tot het einde van de run, en alleen de SMART Migration-server kan het lezen.
Waartegen het beschermt, en waartegen niet
Section titled “Waartegen het beschermt, en waartegen niet”De versleuteling houdt het wachtwoord weg uit alles wat zich tussen de app en het geheugen van de SMART Migration-server bevindt. Ze beschermt niet tegen iemand die al controle heeft over een van beide kanten.
| Beschermd | Niet beschermd |
|---|---|
| Het antwoord op de claim dat naar een log, een supportopname of een opgeslagen bestand is geschreven | Iemand die controle heeft over de SMART Migration-server terwijl de run loopt: die beschikt over de privésleutel en heeft de Microsoft 365-inloggegevens al |
| Een proxy of monitoringtool die HTTPS-verkeer inspecteert | Een Nextcloud-beheerder, die met occ toch al app-wachtwoorden voor elke gebruiker kan aanmaken |
| Een verzoek en het antwoord daarop die samen zijn onderschept | Een wachtwoord van een run die nooit eindigt: het blijft bestaan totdat de run voorbij is |
Er handmatig een intrekken
Section titled “Er handmatig een intrekken”De gebruiker kan het wachtwoord intrekken in zijn eigen Instellingen → Beveiliging → Apparaten & sessies; een beheerder kan het weergeven en verwijderen met occ user:auth-tokens:list en occ user:auth-tokens:delete. De run kan daarna niet meer schrijven in de bestanden van de gebruiker.
Zie ook