Re: mgr/ssh invocation of ceph-daemon

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



For fine-grained authorization, Open Policy Agent (a CNCF incubating
project) easily integrates with PAM
(https://www.openpolicyagent.org/docs/latest/ssh-and-sudo-authorization/).
There's a dockerized demo ready to use at:
https://github.com/open-policy-agent/contrib/tree/master/pam_authz.
That one uses keyboard-interactive log-on, but it can be easily
switched to publickey.

For the authentication, if you don't want to mess with authorized_keys
and root, you can make sshd trust a CA instead
(https://smallstep.com/blog/use-ssh-certificates/). BTW, by using a CA
you can also avoid ssh's TOFU issue (host keys can be signed by the CA
too).

Kind regards,

Ernesto


On Tue, Nov 12, 2019 at 3:52 PM Sage Weil <sweil@xxxxxxxxxx> wrote:
>
> Right now the way ceph-daemon is used by the ssh orchestrator is designed
> to minimize the dependencies/setup complexity.  The only requirements for
> a host to be added to the cluster are
>
>  - python (2 or 3)
>  - systemd
>  - either podman or docker installed
>  - the ceph cluster's pub key in /root/.ssh/authorized_keys
>
> No other software (including Ceph) needs to be installed.  The mgr/ssh
> module invokes ceph-daemon on the remote host by running /usr/bin/python
> over ssh and piping the cluster's version of ceph-daemon to stdin.
>
> The downside to this approach is that some users might not like the idea
> of ceph having an ssh key with root access.  For large clusters I'm not
> sure how much this really matters--if you pwn ceph you can delete TB to PB
> of data so do you really care if someone has root?--but for hyperconverged
> cases this might be a problem.
>
> One alternative might be to
>
>  - create a ceph user on the node, and put the cluster's key in
>    that user's authorized_keys
>  - install a package that includes ceph-daemon (/usr/bin/ceph-damaen)
>  - install an /etc/sudoers.d/ceph file that lets the ceph user
>    'sudo ceph-daemon ...'
>
> Cons:
>  - This makes the bootstrap process slightly more complicated: (1) install
>    package, (2) create user, (3) install ssh key (vs just #3).
>  - The remote version of ceph-daemon can get out of sync with the
>    cluster.. either stale and missing some feature, or even too new and
>    not behaving the way the cluster expects.
>
> Pros:
>  - This limits the attack surface area (if someone manages to get the
>    cluster's ssh key) to the functions that ceph-daemon implements, vs
>    full root.
>
> We could mitigate the 'keep ceph-daemon up to date' problem somewhat by
> implementing a 'ceph-daemon update' function that will apt/dnf/yum install
> ceph-daemon on the local host, so that the cluster could self-update the
> remote host.
>
> Or... we could skip the package entirely and install the ceph-daemon
> script in /home/ceph/ceph-daemon, and include an update function that
> updates the script in place.  That is less complicated than knowing how to
> apt/dnf/yum install a package for all the random distros and repo location
> combinations (one of the biggest benefits of containers IMO).  But it
> still requires some sort of process to keep ceph-daemon up to date.
> Maybe if we always pass an md5sum to ceph-daemon whenever we invoke it to
> assert that we are running the version we want, and if there is a
> mismatch, ceph-daemon bails out with a special exit code that triggers and
> update and retry?
>
> Anyway, what are people's thoughts here?  How much more complicated are we
> interested or willing to make this to make people more comfortable with
> the idea that ceph owns an ssh key?
>
> sage
> _______________________________________________
> Dev mailing list -- dev@xxxxxxx
> To unsubscribe send an email to dev-leave@xxxxxxx
>
_______________________________________________
Dev mailing list -- dev@xxxxxxx
To unsubscribe send an email to dev-leave@xxxxxxx



[Index of Archives]     [CEPH Users]     [Ceph Devel]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux