2009-08-04 2 views
15

Wie funktioniert die Sandbox von Google App Engine? Was müsste ich tun, um meine eigene Sandbox zu erstellen (um meinen Kunden zu ermöglichen, ihre Apps auf meiner Engine auszuführen, ohne ihnen die Möglichkeit zu geben, mein Festplattenlaufwerk zu formatieren)? Ist es nur Klassenlader Magie, Byte-Manipulation oder etwas?Wie funktioniert Google App Engine Sandbox?

+1

Ich entfernte Gas-Tag, weil ich glaube nicht, dass es für Google Application Sandbox steht, und ich glaube nicht, dass Gnu Assembler zu dieser Frage verwandt ist. –

+0

Sorry, ich habe mich etwas vertippt, ich habe diese Frage mit einem tastaturlosen tragbaren Gerät erstellt. – Shahbaz

Antwort

2

In der Java-Fall, ich denke, es ist meist durch die Einschränkung der verfügbaren Bibliotheken getan. Da Java kein Zeigerkonzept hat und Sie nativ kompilierten Code (nur JVM-Bytecode) nicht hochladen können, können Sie nicht aus der Sandbox ausbrechen. Fügen Sie eine enge Prozessplanung hinzu, und Sie sind fertig!

Ich denke, der schwierigste Teil ist, die Bibliotheken auszuwählen, um es nützlich zu machen, während sie sicher bleiben.

Im Python-Fall mussten sie die VM selbst modifizieren, da sie nicht sicherheitsbewusst konzipiert war. Zum Glück haben sie Guido selbst, um es zu tun.

9

Sie benötigen wahrscheinlich eine Kombination aus einem restriktiven Classloader und einem gründlichen Verständnis der . Sie würden wahrscheinlich Ihre JVM mit einem sehr strengen SecurityManager ausführen.

+1

Wichtiger Hinweis - Mit dem SecurityManager können Sie die Heap-Speicherauslastung oder CPU-Auslastung NICHT einschränken. Sie haben keine andere Wahl, als für jede Aufgabe/jedes Skript separate Prozesse zu erzeugen. – Zorkus

0

sicher erlauben meinen Kunden ihre Anwendungen auf meinem Motor laufen zu lassen, ohne ihnen die Möglichkeit zu geben meinem Plattenlaufwerk

leicht die Java Security Manager erreicht wird Dies kann zu formatieren. Ein Beispiel finden Sie unter this.

+0

Es kann erreicht werden, aber nicht leicht, Selbst mit 'SecurityManager' ist es eine ziemliche Aufgabe. – Gautam