#5011 [RFE] Forward CA requests to dogtag or helper by GSSAPI
Opened by simo. Modified

Currently the framework has direct access to a certificate that allows it to perform privileged operations against the CA component.
This flies in the faces of the original framework philosophy which advocates for privilege separation and enforcement of ACIs in the backends not the frontend.

Once ticket https://fedorahosted.org/pki/ticket/1359 is implemented we should be able to forward requests to the CA just like we perform operations against the LDAP server by using s4u2proxy and letting the backend apply Access Controls.


When this work is done, we should consider automatically storing user's Kerberos principal in a certificate SAN or at least in Dogtag object for the certificate - so that certificates for a given principal can be easily searched for.

Earlier comments by Martin Kosek and Simo:

Martin Kosek mkosek@redhat.com wrote:

Agent credential is used by FreeIPA web interface, all
authorization is then done on python framework level. We can add
more agents and then switch the used certificate, but I wonder how
to use it in authorization decisions. Apache service will need to
to have access to all these agents anyway.

We really need to move to a separate service for agent access, the
framework is supposed to not have any more power than the user
that connects to it. By giving the framework direct access to
credentials we fundamentally change the proposition and erode the
security properties of the separation.

We have discussed before a proxy process that pass in commands as
they come from the framework but assumes agent identity only after
checking how the framework authenticated to it (via GSSAPI).

First we need to think how fine grained authorization we want to
do.

We need to associate a user to an agent credential via a group, so
that we can assign the rights via roles.

I think we will want to be able to for example say that user Foo
can generate certificates in specified subCA. I am not sure it is
a good way to go, it would also make such private key distribution
on IPA replicas + renewal a challenge.

I do not think we need to start with very fine grained permissions
initially.

Right now, we only have "Virtual Operations" concept to authorize
different operations with Dogtag CA, but it does not distinguish
between different CAs. We could add a new Virtual Operation for
every subCA, but it looks clumsy. But the ACI-based mechanism and
our permission system would still be the easiest way to go, IMHO,
compared to utilizing PKI agents.

We need to have a different agent certificate per role, and then
in the proxy process associate the right agent certificate based
on what the framework asks and internal checking that the user is
indeed allowed to do so.

The framework will select the 'role' to use based on the operation
to be performed.

Simo.

the dogtag prerequisite 1359 was postponed, therefore postponing as well.

master:

  • caca181d3b73c045abd72e464a195c6b61c251c7 private_ccache: yield ccache name

master:

  • f51869bf5214e2d2322f85bf72b7ae86b6893974 replica install: relax domain level check for promotion

Metadata Update from @simo:
- Issue assigned to ftweedal
- Issue set to the milestone: FreeIPA 4.5

master:

  • 2066a80be21258d9311ae374fe124d9ac3b79acd Remove redundant principal_type argument
  • 11c9df25774fbc8ed24b30f75c205d12ca3c5b90 Extract method to map principal to princpal type

Metadata Update from @tkrizek:
- Custom field affects_doc reset
- Custom field tester adjusted to wanted
- Issue close_status updated to: None

Metadata Update from @tkrizek:
- Custom field affects_doc reset

master:

  • 3ba0375c831eca673c2df146b565a32dbc03fdb3 rabase.get_certificate: make serial number arg mandatory

Metadata Update from @mbasti:
- Issue set to the milestone: FreeIPA 4.5.1 (was: FreeIPA 4.5)

Ground work was prepared in 4.5, but it was not finished. Moving to 4.7 - next major, to be finished there.

Metadata Update from @pvoborni:
- Issue set to the milestone: FreeIPA 4.7 (was: FreeIPA 4.5.1)

Metadata Update from @rcritten:
- Custom field rhbz adjusted to https://bugzilla.redhat.com/show_bug.cgi?id=1527185 (was: todo)

Issue linked to Bugzilla: Bug 1527185

Metadata Update from @rcritten:
- Issue set to the milestone: FreeIPA 4.7.1 (was: FreeIPA 4.7)

FreeIPA 4.7 has been released, moving to FreeIPA 4.7.1 milestone

Metadata Update from @ftweedal:
- Assignee reset

master:

  • c7766ebb940cca040d08a1dd58b92f6546ca3e9b (HEAD) Define errors_by_code in ipalib.errors

ipa-4-8:

  • 7bfe6b261fa03ecc05d9f75ef24175f588d45e16 (HEAD) Define errors_by_code in ipalib.errors

master:

  • 0c0061babdd9a6584ea30742648a200d6aa4d3ba extract virtual operation access check subroutine

master:

  • d7f3a0b2d31fe3a02a19286d590cf1a343458fd8 ra.get_certificate: use REST API

master:

  • 5ab24ddf8a74c4c59c5c28bc79da150633530363 ca-del: require CA to already be disabled
  • 6da63e3be44033d7d623a574787937ab4ec9ed0a ca plugin: improve doc
  • 6a0901f6fdf744023dc90ec5141aa9ebe4d806fd tests: fix cleanup for CATracker

Metadata Update from @rcritten:
- Issue set to the milestone: None (was: FreeIPA 4.7.1)

Should this be closed?

I found this link mentioned as a precondition on the page https://www.freeipa.org/page/V4/Sub-CAs#implementation

Metadata