mirror of
https://github.com/kubernetes-sigs/kubespray.git
synced 2026-02-01 09:38:12 -03:30
Drop linux capabilities and rework users/groups
* Drop linux capabilities for unprivileged containerized worlkoads Kargo configures for deployments. * Configure required securityContext/user/group/groups for kube components' static manifests, etcd, calico-rr and k8s apps, like dnsmasq daemonset. * Rework cloud-init (etcd) users creation for CoreOS. * Fix nologin paths, adjust defaults for addusers role and ensure supplementary groups membership added for users. * Add netplug user for network plugins (yet unused by privileged networking containers though). * Grant the kube and netplug users read access for etcd certs via the etcd certs group. * Grant group read access to kube certs via the kube cert group. * Remove priveleged mode for calico-rr and run it under its uid/gid and supplementary etcd_cert group. * Adjust docs. * Align cpu/memory limits and dropped caps with added rkt support for control plane. Signed-off-by: Bogdan Dobrelya <bogdando@mail.ru>
This commit is contained in:
@@ -1,24 +1,40 @@
|
||||
---
|
||||
addusers:
|
||||
etcd:
|
||||
name: etcd
|
||||
name: "{{ etcd_user }}"
|
||||
comment: "Etcd user"
|
||||
createhome: yes
|
||||
createhome: >-
|
||||
{% if ansible_os_family in ["CoreOS", "Container Linux by CoreOS"] %}no{% else %}yes{% endif %}
|
||||
home: "/var/lib/etcd"
|
||||
system: yes
|
||||
shell: /bin/nologin
|
||||
shell: /usr/sbin/nologin
|
||||
group: "{{ etcd_group }}"
|
||||
groups: "{{ etcd_cert_group }}"
|
||||
type: >-
|
||||
{% if ansible_os_family in ["CoreOS", "Container Linux by CoreOS"] %}cloud-init{% endif %}
|
||||
kube:
|
||||
name: kube
|
||||
name: "{{ kubelet_user }}"
|
||||
comment: "Kubernetes user"
|
||||
shell: /sbin/nologin
|
||||
shell: /usr/sbin/nologin
|
||||
system: yes
|
||||
group: "{{ kube_cert_group }}"
|
||||
group: "{{ kubelet_group }}"
|
||||
groups: "{{ etcd_cert_group }},{{ kube_cert_group }}"
|
||||
createhome: no
|
||||
netplug:
|
||||
name: "{{ netplug_user }}"
|
||||
comment: "Network plugin user"
|
||||
createhome: no
|
||||
system: yes
|
||||
shell: /usr/sbin/nologin
|
||||
group: "{{ netplug_group }}"
|
||||
groups: "{{ etcd_cert_group }}"
|
||||
|
||||
adduser:
|
||||
name: "{{ user.name }}"
|
||||
group: "{{ user.name|default(None) }}"
|
||||
groups: "{{ user.groups|default(None) }}"
|
||||
comment: "{{ user.comment|default(None) }}"
|
||||
shell: "{{ user.shell|default(None) }}"
|
||||
system: "{{ user.system|default(None) }}"
|
||||
createhome: "{{ user.createhome|default(None) }}"
|
||||
type: "{{ user.type|default(None) }}"
|
||||
|
||||
4
roles/adduser/handlers/main.yml
Normal file
4
roles/adduser/handlers/main.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
- name: User | update users for cloud-init
|
||||
command: /usr/bin/coreos-cloudinit --from-file /etc/{{ user.name }}_user_cloud_init_conf
|
||||
when: ansible_os_family in ["CoreOS", "Container Linux by CoreOS"]
|
||||
@@ -1,13 +1,35 @@
|
||||
---
|
||||
- name: User | Create Certificate Access Groups
|
||||
group: name={{ item }} system=yes
|
||||
with_items: "{{ user.groups.split(',') }}"
|
||||
|
||||
- name: User | Create User Group
|
||||
group: name={{user.group|default(user.name)}} system={{user.system|default(omit)}}
|
||||
|
||||
- name: User | Create cloud-init user
|
||||
template:
|
||||
dest: /etc/{{ user.name }}_user_cloud_init_conf
|
||||
src: users.j2
|
||||
owner: root
|
||||
mode: 0640
|
||||
notify: User | update users for cloud-init
|
||||
when: "{{ user.type|default('standard') == 'cloud-init' }}"
|
||||
|
||||
- meta: flush_handlers
|
||||
|
||||
- name: User | Hack groups for existing cloud-init users CoreOS
|
||||
command: /usr/sbin/usermod -aG {{ item }} {{ user.name }}
|
||||
with_items: "{{ user.groups.split(',') }}"
|
||||
when: "{{ ansible_os_family in ['CoreOS', 'Container Linux by CoreOS'] and user.type|default('standard') == 'cloud-init' }}"
|
||||
|
||||
- name: User | Create User
|
||||
user:
|
||||
comment: "{{user.comment|default(omit)}}"
|
||||
createhome: "{{user.create_home|default(omit)}}"
|
||||
createhome: "{{user.createhome|default(omit)}}"
|
||||
group: "{{user.group|default(user.name)}}"
|
||||
groups: "{{user.groups|default(omit)}}"
|
||||
home: "{{user.home|default(omit)}}"
|
||||
shell: "{{user.shell|default(omit)}}"
|
||||
name: "{{user.name}}"
|
||||
system: "{{user.system|default(omit)}}"
|
||||
when: "{{ user.type|default('standard') != 'cloud-init' }}"
|
||||
|
||||
15
roles/adduser/templates/users.j2
Normal file
15
roles/adduser/templates/users.j2
Normal file
@@ -0,0 +1,15 @@
|
||||
#cloud-config
|
||||
users:
|
||||
- name: {{ user.name }}
|
||||
gecos: {{ user.comment }}
|
||||
system: {{ user.system|bool }}
|
||||
no-log-init: {{ user.system|bool }}
|
||||
primary-group: {{ user.group }}
|
||||
no-create-home: {{ not user.createhome|bool }}
|
||||
homedir: {{ user.home }}
|
||||
shell: {{ user.shell }}
|
||||
groups: |
|
||||
{% for g in user.groups.split(',') %}
|
||||
- {{ g }}
|
||||
{% endfor %}
|
||||
#
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
addusers:
|
||||
- name: kube
|
||||
comment: "Kubernetes user"
|
||||
shell: /sbin/nologin
|
||||
system: yes
|
||||
group: "{{ kube_cert_group }}"
|
||||
createhome: no
|
||||
@@ -1,15 +0,0 @@
|
||||
---
|
||||
addusers:
|
||||
- name: etcd
|
||||
comment: "Etcd user"
|
||||
createhome: yes
|
||||
home: "/var/lib/etcd"
|
||||
system: yes
|
||||
shell: /bin/nologin
|
||||
|
||||
- name: kube
|
||||
comment: "Kubernetes user"
|
||||
shell: /sbin/nologin
|
||||
system: yes
|
||||
group: "{{ kube_cert_group }}"
|
||||
createhome: no
|
||||
@@ -1,15 +0,0 @@
|
||||
---
|
||||
addusers:
|
||||
- name: etcd
|
||||
comment: "Etcd user"
|
||||
createhome: yes
|
||||
home: "/var/lib/etcd"
|
||||
system: yes
|
||||
shell: /bin/nologin
|
||||
|
||||
- name: kube
|
||||
comment: "Kubernetes user"
|
||||
shell: /sbin/nologin
|
||||
system: yes
|
||||
group: "{{ kube_cert_group }}"
|
||||
createhome: no
|
||||
Reference in New Issue
Block a user