On Tue, 2011-03-08 at 08:43 -0800, Patrick Ohly wrote:
> On Di, 2011-03-08 at 10:31 +0000, Philip Van Hoof wrote:
> > Can somebody from Intel answer One of the questions about EDS?
> 
> All you are asking for is performance. To me, that wasn't the main issue
> with Tracker. The key drawbacks of Tracker as storage for contacts are
> these:
>      1. only one address book

You can use either a graph or things like a nie:DataSource and the
property nie:dataSource to have multiple address books.

>      2. no support for controlling access

This is unfortunately as far as I know no different in EDS.

Tracker's plans for per-resource access control is to use its (limited)
support for graphs for that.

Access to metadata is then granted per graph. (not implemented, and I'm
not trying to make it sound that this is easy)

Combined with 1. that would mean that you could grant access to one
address book to application A, but not to application B, although B has
access to another address book.

So for example

INSERT { GRAPH <urn:protected-xxx> { <person> a nco:Contact ... } }

Application X would get access to urn:protected-xxx in some way. It does
a query for all nco:Contact, and it gets <person>.

Application Y would not get access to this. It does a query for all
nco:Contact, and it doesn't get <person>.

And explained lower: Application Y gets no read access to meta.db, so it
must use tracker-store who'd regulate this access. Nor can Application Y
use sqlite3_open on its own, as it has no read access other than via
tracker-store (which uses FD passing D-Bus as IPC).

> There are real-world scenarios (think mirroring sensitive enterprise or
> social web data) were an additional address book is needed, because data
> must not be mixed with the "normal" contacts.

Sure, ok

> You mentioned plans to add access control. Can that be implemented while
> retaining the direct read capability and the performance improvement
> that you mentioned when announcing that feature? Doesn't look possible
> to me.

I have to be careful now what I write because only after Aegis became
public were NDA things lifted a bit on this stuff ... (not our fault)

What I reply is available in gitorious publicly anyway, so hopefully
it's all fine ;-)

Check the files tracker.postinst and tracker.aegis, *.aegis:
http://meego.gitorious.org/tracker/tracker/trees/harmattan/debian

With Aegis we give certified applications read access to meta.db using
the <credential name="GID::metadata-users" />.

The directory $HOME/.cache/tracker is protected to be readable only by
processes in that got this GID granted through Aegis. The library
libtracker-sparql, which enables SPARQL query capability, detects
whether or not the process has access and selects either D-Bus (over fd
passing) or direct-access to meta.db based on the UNIX file permissions.

It is true that once a process has permission to read meta.db, that you
can't hide it the data that is in meta.db. We had no plans to do in-db
encryption as this would just make things horribly slow (decrypting
cells in custom SQLite functions, no thanks).

On Harmattan a plan was to only give certified applications the right to
add the GID::metadata-users credential. Meaning that the source code is
known to the vendor, and known not to abuse meta.db.

We investigated whether storing meta.db on a AegisFS was an option. But
because AegisFS uses FUSE, it is notoriously slow on each syscall.

Would meta.db be stored on a AegisFS, then the data would also be
protected using encryption (to survive reboot to root-mode).

> The other question of course is about the schedule. Access control is
> needed for products *now*, not in some distant future. EDS doesn't have
> access control either, but I consider it much easier to add (already
> based on a daemon concept, much more limited scope).

The same "daemon concept" applies to Tracker's tracker-store. As access
to meta.db is regulated through Aegis's GID:: credential.


Cheers,

Philip

-- 


Philip Van Hoof
freelance software developer
Codeminded BVBA - http://codeminded.be

_______________________________________________
MeeGo-dev mailing list
MeeGo-dev@meego.com
http://lists.meego.com/listinfo/meego-dev
http://wiki.meego.com/Mailing_list_guidelines

Reply via email to