]> piware.de Git - talk-cockpit-auth-anywhere.git/blob - outline.md
Add initial outline
[talk-cockpit-auth-anywhere.git] / outline.md
1 = Talk summary =
2
3 Cockpit is primarily known as a graphical, browser-based, reactive, and non-intrusive interface for configuring and troubleshooting your servers. But it also makes these accessible from a lot more places like computers with Windows or mobile devices. You can log into Cockpit using classic passwords, single-sign on in an Identity Management domain, seamlessly from Foreman/Satellite, through SSH keys, or even a local smart card. This talk explains how all these standard Linux authentication schemas transcend through a web browser while keeping them trustworthy. It also shows briefly how you can write your own authentication plugin tailored to your environment.
4
5 = Outline =
6
7 - Introduction
8   + Cockpit as graphical UI to interact with your server, complementing ssh
9   + Configure LVM or RAID once a year? Simpler and safer to do it like this
10     (Storage page demo) than this (shell commands below) → add PV, resize partition
11     sudo lvresize-prep.sh  and lvresize-cleanup.sh
12
13 ```sh
14 pvcreate /dev/sdb2
15 vgextend vg0 /dev/sdb2
16 lvresize --extents '+100%FREE' vg0/data1
17 resize2fs /dev/vg0/data1
18 ```
19
20   + Makes server accessible from a lot more places
21   + Integrates into authentication setups beyond simple user/password login page
22
23 - Devices demo
24   + Win10 VM, Edge browser (./vm-run windows-10, [[https://10.0.2.2:9090]], preload that)
25   + Firefox mobile emulation ([[http://localhost:9090/storage]])
26   + So far zero configuration except for enabling cockpit.socket
27
28 - Anatomy of a Cockpit session
29   + ws-session.drawio
30   + ws: http+WebSocket on TCP ←→ cockpit JSON protocol (auth and session) on a pipe;
31     ask for/collect credentials (password, oauth token, krb negotiation, client
32     cert); unprivileged
33   + session/auth: use creds from ws to start a login session, connect pipe to
34     it; standard is cockpit-session (suid root helper) that starts PAM (password, krb)
35     but it doesn't have to be: ssh or custom plugins
36   + cockpit-bridge: session leader, role of bash; JSON protocol on stdio ←→ system
37     APIs (exec programs, call D-Bus, use files or sockets); runs as target user
38
39 - Alternative session launcher: ssh
40   + ws and session do not need to run on the same machine
41   + ssh-session.drawio
42   + ssh key login with dashboard to older RHEL machine
43   + bastion-host.drawio
44   + bastion host (no ws on critical machines, don't trust cockpit-session, even to localhost)
45     config option to only use this mode, can be run from container
46
47 - Alternative authentication: smart card
48   + most interesting mechanism as it's rather browser specific; moral equivalent of ssh with key
49   + demo
50   + cert-auth.png
51
52 - Other auth setups:
53   + SSO with Identity Management
54   + OAuth (for Kubernetes/OpenShift integration)
55
56 - Custom auth plugin
57   + TODO
58
59 = Unsorted =
60
61 - foreman demo (custom auth plugin) https://www.youtube.com/watch?v=Ua3b79UG9JM 5:35 ~ 10s
62 - [ManageIQ](https://github.com/ManageIQ/manageiq/blob/master/lib/miq_cockpit.rb)
63
64 = Links =
65
66  * [authentication protocol](https://github.com/cockpit-project/cockpit/blob/master/doc/authentication.md)
67  * [Authentication configuration](https://cockpit-project.org/guide/latest/authentication.html)
68