LEP/BetterPrivacy

Not logged in - Log In / Register

Revision 39 as of 2010-10-04 15:22:30

Clear message

Better Privacy

Rationale

Canonical's internal business relies more on Launchpad each day. Much of this business must be conducted in private. Launchpad currently provides some of what Canonical needs, but not all. What it does provide is often inconsistent and hard to understand. These inconsistencies increase the chance of privacy leaks, which could do irreparable harm to our business.

Stakeholders

Constraints

What MUST the new behaviour provide?

1. A way of running projects in total privacy.

2. A way of running software projects that have public client components and proprietary server components

3. A way of running projects that do much of their work in private, but do some in public.

4. A way of making some resources private on a public project.

5. A way that allows anyone to ask a question, but for that question to be private and visible only to the asker and some team.

6. A way of granting permission to view a private project/distribution to a person or team.

7. Only people who pay us can get privacy

8. Privacy settings must be easy to change

9. Minimal on-going developer burden 10. Minimal on-going LOSA burden 11. An intern should be able to control this. That is:

12. If an intern is able to do this, then it would be nice if someone (a LOSA? the hypothetical intern?) could grant permission to non-Launchpad Canonical staff to create private projects, distributions. 13. Privacy doesn't matter for almost everything, it should not clutter up the page for public things. 14. Someone (XXX - who?) needs to be able to see who can access a given thing 15. Must be obvious that an object is private (see bug 298152)

16. A way for admins to see a list of all private things that someone else has access to. (Maybe move to AuditTrail) 17. Privacy must add no significant performance penalty

Proposed approach

We will add a visibility context to all Pillars. The context controls visibility of everything in the context.

Adding a bug task to a IHasBugs with a different visibility context won't be permitted.

We will add a long requested feature - bug links - and those will only be visible when the user has access to both ends of the link. The UI for it will be nice and tasteful.

There will be a clear indicator on pages that have restricted visibilty.

If needed we can add a finer visibility context than pillar, but we hope we don't need to because that massively multiplies the difficult in users understanding how visible things are.

fin

-- RobertCollins

Draft

Anyone must be able to file a security bug on an open source project. This bug must be visible only to the reporter and the security team.

Anyone must be able to create a security-fix branch on an open source project. This branch (and any associated merge proposals) must be visible only to the owner and the security team.

Nice-to-have

Authorized people (who? how?) should be able to push private branches to public projects (see bug 527900)

Nice to be able to see a list of all private things (projects? teams? branches?) that I have access to

Private comments or private threads on bugs

Out of scope

A systematic approach to write permissions is out-of-scope for this LEP, although may be a part of LEP/PermissionsAndNotifications

A systematic approach to granting non-admins access to restricted features is out-of-scope for this LEP, although may be a part of LEP/PermissionsAndNotifications

Workflows

Create a private project

Create a private distribution

Create a private team

Allow a person to see a bug on a private project

Create a private branch in a public project

Currently, you have to "register" the branch, which is counter-intuitive.

Report a security issue, fix it, then publicize it

Get access to a private project that you ought to have access to, but don't

Success

How will we know when we are done?

How will we measure how well we have done?

Thoughts?

Useful to distinguish between containers (e.g. project, distro) and artifacts (e.g. bugs, code)?

We have a bit of a mess right now on hiding completely (e.g. raising a 404) and denying access (e.g. raising a 403).

The "team exists across all projects" thing is going to confuse people

Team privacy and project privacy are orthogonal. Useful for use cases like DX, but less useful of OEM.

Standard way of showing a link to a private object

What are our encryption requirements?

What are our legal requirements?

Probably need to have a "GRANT" permission or something similar

Prior art in web ACLs?

What about projects that go open source?

What about projects that go closed source?

Might be necessary to distinguish between READ access and VIEW ACL access. Ask OEM how important this is? Really convulated for the bug case.

Consider the case "jdoe, please join the private-sekret-project" mailing list. At the moment this is hard because you can't see it and you can't find out who owns it. In this case, and perhaps in others, it would be useful to at least let you send a one-way message to the owner of the object, asking for access?

How will ACLs be represented in the API? What kind of manipulation might people like to do programatically?

Hypothesis is that ACL system is distinct from the subscription levels.

References