navigating compliance in a coreos world

33
Navigating Compliance in a CoreOS World Paul Querna | @pquerna CTO, ScaleFT May 10, 2016

Upload: lykhanh

Post on 13-Feb-2017

225 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Navigating Compliance in a CoreOS World

Navigating Compliance in a CoreOS WorldPaul Querna | @pquernaCTO, ScaleFT

May 10, 2016

Page 2: Navigating Compliance in a CoreOS World
Page 3: Navigating Compliance in a CoreOS World

Runs CoreOS

Has 200+ Page Questionnaires

Page 4: Navigating Compliance in a CoreOS World
Page 5: Navigating Compliance in a CoreOS World

Fun! New! Not Fun! Old!

Page 6: Navigating Compliance in a CoreOS World
Page 7: Navigating Compliance in a CoreOS World

Many Standards for Many Purposes

https://www.microsoft.com/en-us/trustcenter/Compliance

Page 8: Navigating Compliance in a CoreOS World
Page 9: Navigating Compliance in a CoreOS World

● Controls (think: things to reduce risk):○ Policies / documentation○ Technical

Page 10: Navigating Compliance in a CoreOS World

User Management on CoreOS

Page 11: Navigating Compliance in a CoreOS World

User Management Controls

● Unique User IDs● Role based Permissions● Lifecycle Management

Page 12: Navigating Compliance in a CoreOS World

First Strategy

1. Put everything into cloud-config

Page 13: Navigating Compliance in a CoreOS World

Put everything into cloud-config

#cloud-config

users:- name: paul.querna shell: /bin/bash groups: - sudo - docker sudo: - ALL=(ALL) NOPASSWD:ALL ssh-authorized-keys: [ssh-rsa AAAAB…. [email protected]]

Page 14: Navigating Compliance in a CoreOS World

"cloud-init... there are a number of hurdles..."

Alex Crawford2015 CoreOS Fest

Page 15: Navigating Compliance in a CoreOS World

Hurdles

● Go code to generate YAML○ Users, fetching keys from git○ Inline script rendering○ systemd unit files

● Reboots○ Deleted user, comes back!

● Changes○ Lifecycle of configurations (including users) != lifecycle of servers

Page 16: Navigating Compliance in a CoreOS World

Attempt Two

1. Put “bootstrap” script in cloud-config(from zero today, try Ignition?)

2. Use Ansible for post-boot management

Page 17: Navigating Compliance in a CoreOS World

Bootstrap

#cloud-config

write_files:- path: /opt/bin/bootstrap-cc.sh permissions: "0755" owner: root content: |- #!/bin/bash ...coreos: units: - name: bootstrap-cc.service command: start content: | [Unit] Description=bootstrap runcmd [Service] Type=oneshot RemainAfterExit=yes ExecStart=/opt/bin/bootstrap-cc.sh

Page 18: Navigating Compliance in a CoreOS World

Ansible on CoreOS Linux

● Python…. Is not in the base system.○ PyPy portable: github.com/squeaky-pl/portable-pypy○ ln -s bin/pypy /opt/bin/python

○ Tell ansible where python is:[coreos:vars]

ansible_python_interpreter="/opt/bin/python"

● Ansible basically* works!○ Shell, Users, File

● Future: rkt fly?

Page 19: Navigating Compliance in a CoreOS World

Agents on CoreOS

Page 20: Navigating Compliance in a CoreOS World

First Strategy

1. Docker in systemd ● Namespaces● Mounting the universe● Systemd integration (lack of)

Page 21: Navigating Compliance in a CoreOS World

Outside of containers

1. Ansible: untar into /opt2. Ansible: creates systemd unit file

● Great for Go & self contained things

Page 22: Navigating Compliance in a CoreOS World

Round 3: rkt (fly)

● Tried 12 months ago for all uses: Pain● Tried 60 days ago w/ fly stage1: Yay!

Page 23: Navigating Compliance in a CoreOS World

acbuild: pretty easy?

# Start the build with an empty ACIacbuild --debug begin

# Name the ACIacbuild --debug set-name scaleft.com/sftd

# Copy the app to the ACIacbuild --debug copy "${INPUT_SFTD}" /scaleft/bin/sftd

# Set correct file permissions and ownerchmod 0755 .acbuild/currentaci/rootfs/scaleft/bin/sftdchown 0:0 .acbuild/currentaci/rootfs/scaleft/bin/sftd

# Run sftdacbuild --debug set-exec -- /scaleft/bin/sftd

for m in ${MOUNT_DIRS}; do acbuild mount add "${m}" "/${m}"done

acbuild --debug write --overwrite "${OUTPUT_FILE}"

Page 24: Navigating Compliance in a CoreOS World

User Management: Via Agent

● Dogfooding our own Agent● ScaleFT Server Daemon manages users● Runs via rkt fly and a systemd unit● www.scaleft.com/docs/sftd-coreos

Page 25: Navigating Compliance in a CoreOS World

Logs on CoreOS

Page 26: Navigating Compliance in a CoreOS World

Log Controls

● User identification (see User Management)● Action● Timestamp● Prevent modification● Ship to central server

Page 27: Navigating Compliance in a CoreOS World

Log Management

- systemd-journald: yay- This is mostly about journal vs classic syslog- More systemd journal integrations happening every day

Page 28: Navigating Compliance in a CoreOS World

First Strategy

1. journalctl -o json2. shell script to upload to s3

Page 29: Navigating Compliance in a CoreOS World

Round 2: In progress

● journalbeat in rkt fly:○ Pulls from journal using CGO bindings○ Cursor integration○ github.com/mheese/journalbeat

● ACI build:○ github.com/authclub/journalbeat-aci

Page 30: Navigating Compliance in a CoreOS World

Updates on CoreOS

Page 31: Navigating Compliance in a CoreOS World

Updates Controls

● Change control / documented approval procedures● If Anti-virus, auto-updates: +1● If not: Anti-virus: ?

Page 32: Navigating Compliance in a CoreOS World

Auto Updates

Here’s how you turn off CoreOS Linux’s original feature:

echo REBOOT_STRATEGY=off | sudo tee -a /etc/coreos/update.conf

See also:

update_engine_client -status

update_engine_client -update

CoreUpdate by CoreOS

Page 33: Navigating Compliance in a CoreOS World

Thanks!

@[email protected]

paul.querna.org/slides