kentonv changed the topic of #sandstorm to: Welcome to #sandstorm: home of all things sandstorm.io. Say hi! | Have a question but no one is here? Try asking in the discussion group: https://groups.google.com/group/sandstorm-dev | Public logs at https://botbot.me/freenode/sandstorm/
harish has quit [Ping timeout: 265 seconds]
samba_ has quit [Ping timeout: 248 seconds]
harish has joined #sandstorm
jemc has quit [Ping timeout: 240 seconds]
cstrahan_ has joined #sandstorm
cstrahan has quit [*.net *.split]
jemc has joined #sandstorm
cstrahan_ is now known as cstrahan
harish has quit [Ping timeout: 264 seconds]
harish has joined #sandstorm
harish has quit [Ping timeout: 252 seconds]
e-fish has quit [Ping timeout: 248 seconds]
ta1s0n has joined #sandstorm
Ta1}s0n has quit [Ping timeout: 248 seconds]
ecloud_ has joined #sandstorm
ecloud has quit [Quit: No Ping reply in 180 seconds.]
jemc has quit [Ping timeout: 248 seconds]
pie_ has quit [Remote host closed the connection]
pie_ has joined #sandstorm
isd has joined #sandstorm
taktoa has joined #sandstorm
ta1s0n has quit [Ping timeout: 268 seconds]
pie__ has joined #sandstorm
harish has joined #sandstorm
pie_ has quit [Ping timeout: 265 seconds]
harish has quit [Ping timeout: 240 seconds]
harish has joined #sandstorm
samba_ has joined #sandstorm
Ta1}s0n has joined #sandstorm
harish has quit [Ping timeout: 248 seconds]
isd has quit [Quit: Leaving.]
ruess has joined #sandstorm
ruess has quit [Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
samba_ has quit [Quit: WeeChat 2.0]
harish has joined #sandstorm
Ta1}s0n has quit [Remote host closed the connection]
pie__ has quit [Remote host closed the connection]
pie__ has joined #sandstorm
pie__ has quit [Ping timeout: 250 seconds]
harish has quit [Read error: Connection reset by peer]
harish has joined #sandstorm
pie__ has joined #sandstorm
pie__ has quit [Ping timeout: 256 seconds]
pie__ has joined #sandstorm
pie__ has quit [Remote host closed the connection]
jemc has joined #sandstorm
rolig has quit [Quit: Quit]
<CcxWrk> Is apps.sandstorm.io down, or is the javascript just throwing tantrum for me?
Telesight has joined #sandstorm
<CcxWrk> I see encryption of grain storage mentioned in how-it-works, is that implemented? I assume that is supposed to work by decrypting on demand, kind of like Lavabit did, right?
rolig has joined #sandstorm
samba_ has joined #sandstorm
pie_ has joined #sandstorm
taktoa has quit [Ping timeout: 252 seconds]
pie_ has quit [Ping timeout: 252 seconds]
<kentonv> CcxWrk, not implemented unfortunately. But yes, that's the idea.
<kentonv> apps.sandstorm.io seems up for me
<CcxWrk> Okay. So it just does not like TorBrowser.
<TimMc> or vice versa
<CcxWrk> How would the encryption be implemented? EncFS or similar FUSE filesystem for the data? How is grain data separated from it's code anyway, overlayfs?
guido has quit [Remote host closed the connection]
ccx^xmpp has joined #sandstorm
<kentonv> CcxWrk, in the grain, /var contains the grain-specific writable storage, and the rest of the filesystem is the read-only app package contents
<kentonv> in Blackrock, all the disks are virtual block devices, so we could implement encryption in a lot of ways. I'm somewhat inclined to do the encryption on the storage nodes so that worker nodes never even see the keys.
<kentonv> (worker nodes are where grains actually run, storage nodes are where the data actually goes to disk)
<kentonv> on regular Sandstorm, I'm not sure how we'd implement per-grain encryption without some help from the filesystem, since we don't currently have any way to MITM the storage there
<ccx^xmpp> My ideal would be to store grain data into Tahoe-LAFS, possibly leveraging it's access contols. I know Tahoe has some rough edges around concurrency (and I have some ideas on how to solve it), how does that look in Sandstorm?
* simpson paying attention
<ccx^xmpp> :P do you have a highlight or what?
<kentonv> ccx^xmpp, I love Tahoe, but I don't think it's designed to transparently back the storage for a high-transaction database, which is what many Sandstorm apps would expect.
<simpson> I actually read every single line sent to my IRC client. It's a problem.
<simpson> kentonv: I have wanted a daemon that is like Tahoe, except that it speaks Capn instead of Foolscap and completely internally handles sharding.
<simpson> It's on my todo list. It's pretty far down there, though.
<ccx^xmpp> Sharding as in determining which nodes are responsible for which grains?
<kentonv> it's possible that only Blackrock will be able to support per-grain encryption. But perhaps we can find a way to bring Blackrock to single-machine servers. The stuff it does with virtual disks means it really needs exclusive control of the machines it runs on, but maybe distributing it as a self-contained VM image would make sense.
<simpson> Yeah, and also the erasure-encoding part.
<kentonv> FWIW it could make a lot of sense to use Tahoe-LAFS as "cold storage" for grains that aren't currently running, or for periodic snapshots.
<ccx^xmpp> Yup, that was my idea. Because I want snapshots for concurrently running grains and merging changes. (basically letting it implement a CRDT)
<ccx^xmpp> That's currently the only way of doing concurrency on Tahoe anyway: let each node have it's own copy.
<simpson> I mean, Magic Folders and directories are things today, and they work fine.
<simpson> I know that you have a desire for a more formally-correct system, and I'm still onboard, and it's still gotta be designed and built.
<kentonv> you really can't do merges transparently
<ccx^xmpp> Not outside of the grain itself, it's something each would to do by itself.
<kentonv> so you mean, the app would need to support a "merge" operation?
<ccx^xmpp> Yes.
<kentonv> fair enough
<ccx^xmpp> simpson: I'm more concerned with moving grains to end-user machines and then using them offline.
<simpson> ccx^xmpp: Ah, so totally different use-case from mine.
<kentonv> A magical world where everything is a CRDT would be pretty cool... I think, though, it's probably unrealistic to expect most app authors to implement that (much less get it right).
<kentonv> so a more realistic model might be one where you "check out" a grain for offline use
<kentonv> which makes it read-only for everyone else in the meantime, until you check it back in
<ccx^xmpp> Disconnected operation is a big feature (that I miss almost everywhere), I know.
<kentonv> TBH even for apps that actually get CRDT / OT right, like say Google Docs, this is probably the right model, because if two people make extensive edits in separate forks it's likely that things are going to collide horribly when they merge later
<ccx^xmpp> Probably not too great for docs without manual merges. There is a ton of applications that do some kind of syncing nowadays. Mostly PIM stuff like calendars/contacts/todo/emails/notes...
<ccx^xmpp> Radicale even uses git as a backend.
<kentonv> ah, good point. I have a bias towards starting with docs as my model.
<kentonv> (because I've worked with them more)
<ccx^xmpp> Think more like personal wiki.
Telesight has quit [Read error: Connection reset by peer]
Telesight has joined #sandstorm
<kentonv> yeah I can definitely agree that the things you listed seem like they'd merge easily
<ccx^xmpp> Lot of collaborative stuff offers history with reverts anyway (ether*, cryptpad.fr)
<ccx^xmpp> kentonv: What exactly is the Blackrock you mentioned?
<kentonv> the cluster version of Sandstorm, that powers Sandstorm Oasis. https://github.com/sandstorm-io/blackrock
<ccx^xmpp> I see. The other option I see for Sandstorm+Tahoe is passing FURLs into grains (probably via query argument) and letting them manipulate those. I assume that'd need some extra cap added to Sandstorm.
<kentonv> what's a FURL?
<kentonv> foolscap URL?
<ccx^xmpp> I'll probably start writing Tahoe "app" for werc and then looking if it can be Sandstormized.
<ccx^xmpp> Yeah, but I didn't actually mean that.
<ccx^xmpp> I mean the URLs that serve as file/directory capabilities.
<kentonv> yeah, Sandstorm will need some way for the system to be aware when passing an external capability to an app
<kentonv> usually it's preferred that these things go through the powerbox
<kentonv> there could be a Tahoe "driver app" which implements Cap'n Proto capabilities based on Tahoe capabilities, handing them out via powerbox interactions.
<ccx^xmpp> What I'd really like is to have an option while looking at werc to click on "edit in etherpad" and it'd spawn separate grain with that, editing the tahoe file directly.
<ccx^xmpp> kentonv: Does Sandstorm use cgroups or namespaces? Or is it purely seccomp+chroot?
<kentonv> namespaces and seccomp, no cgroups. Plan to use cgroups in blackrock eventually for CPU/RAM quota tracking but it's tricky to use cgroups in regular sandstorm since it's hard to avoid interfering with other things on the machine.
<ccx^xmpp> Yeah, I'm looking into running it on a Linux-VServer box so I figured I might need to spin up a VM with separate kernel for it.
<kentonv> yeah Sandstorm doesn't work on linux-vserver or openvz since it needs working containerization
<kentonv> FWIW I highly recommend avoiding vserver and openvz. They are weird forks of Linux and I'm dubious about their security.
<kentonv> and if this is as bad as it looks, vservers and openvz are going to be screwed: https://lwn.net/SubscriberLink/741878/929c269a8b3c56f2/
<kentonv> (some people seem to be... rewriting the kernel memory management... seemingly in a hurry... we don't yet know why. It's a huge rewrite and I doubt it's gonna be backported to vserver/openvz very quickly, since they are based on such old forks.)
<ccx^xmpp> I use VServer because I just don't trust LXC to be actually secure container.
<ccx^xmpp> And yeah, that will likely be a big bad thing.
<ccx^xmpp> VServer tracks oldest LTS generally. So we'll see what happens there.
<ccx^xmpp> If it comes to worst… Sandstorm on FreeBSD/HardenedBSD when? :-)
Telesight has quit [Remote host closed the connection]
<kentonv> hmm, what makes you think VServer is likely to be secure where LXC or Docker are not?
<kentonv> to me VServer appears to be a similar approach that has received far less scrutiny
<kentonv> (for the record I wouldn't trust any of these options to provide "secure" isolation)
<ccx^xmpp> It's been used as PaaS solution for a decade. It's been tracking lxc kernel code where appropriate, shrinking the patchset, but lot of it still isn't there in upstream. Conversely particularly user namespaces had quite lot of security issues by actually adding complexity.
<ccx^xmpp> vserver uses quite a simple model, it's quite jails-ish
<ccx^xmpp> I'm not saying it's bulletproof, but lxc never convinced me enough to switch.
<ccx^xmpp> (And I did't have time to rewrite every piece of software to Capsicum) :-]
jemc has quit [Ping timeout: 240 seconds]
_whitelogger has joined #sandstorm