initial commit
This commit is contained in:
76
08-Słownik-K8s/SecurityContext.md
Normal file
76
08-Słownik-K8s/SecurityContext.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# SecurityContext
|
||||
|
||||
#kubernetes #security #słownik
|
||||
|
||||
## Co to jest?
|
||||
|
||||
**SecurityContext** to konfiguracja bezpieczeństwa na poziomie poda lub kontenera. Definiuje **jak kontener jest uruchamiany** z perspektywy systemu operacyjnego.
|
||||
|
||||
## Kluczowe pola
|
||||
|
||||
```yaml
|
||||
securityContext:
|
||||
runAsNonRoot: true # Nie uruchamiaj jako root
|
||||
runAsUser: 1000 # UID procesu
|
||||
runAsGroup: 1000 # GID procesu
|
||||
readOnlyRootFilesystem: true # Root FS tylko do odczytu
|
||||
allowPrivilegeEscalation: false # Blokuj setuid/setgid
|
||||
capabilities:
|
||||
drop: ["ALL"] # Usuń WSZYSTKIE Linux capabilities
|
||||
add: ["NET_BIND_SERVICE"] # Dodaj konkretne (opcjonalnie)
|
||||
seccompProfile:
|
||||
type: RuntimeDefault # Seccomp profil
|
||||
```
|
||||
|
||||
## Pola wyjaśnione
|
||||
|
||||
### runAsNonRoot
|
||||
Wymusza uruchomienie kontenera jako użytkownik inny niż root (UID != 0). Jeśli obraz ma `USER root`, pod nie wystartuje.
|
||||
|
||||
### readOnlyRootFilesystem
|
||||
System plików kontenera jest read-only. Kontener może pisać tylko do zamontowanych woluminów (`/tmp`, `/workspace`). Zapobiega modyfikacji binariów.
|
||||
|
||||
### capabilities
|
||||
Linux capabilities to granularne uprawnienia (zamiast "all-or-nothing" root):
|
||||
|
||||
| Capability | Opis |
|
||||
|------------|------|
|
||||
| `CAP_NET_ADMIN` | Konfiguracja sieci |
|
||||
| `CAP_SYS_ADMIN` | Operacje administracyjne |
|
||||
| `CAP_NET_BIND_SERVICE` | Bindowanie portów < 1024 |
|
||||
| `ALL` | Wszystkie naraz |
|
||||
|
||||
`drop: ["ALL"]` usuwa WSZYSTKIE capabilities - kontener ma minimalne uprawnienia.
|
||||
|
||||
### seccompProfile
|
||||
**Seccomp** (Secure Computing Mode) filtruje syscalls na poziomie kernela:
|
||||
- `RuntimeDefault` - profil domyślny containerd (blokuje niebezpieczne syscalls)
|
||||
- `Unconfined` - brak filtrowania
|
||||
- `Localhost` - custom profil z pliku
|
||||
|
||||
### allowPrivilegeEscalation
|
||||
Blokuje mechanizmy eskalacji uprawnień:
|
||||
- setuid/setgid bity na plikach
|
||||
- `no_new_privs` flag w kernelu
|
||||
|
||||
## Użycie w Sympozium
|
||||
|
||||
Agent containers mają **hardened SecurityContext**:
|
||||
|
||||
```go
|
||||
SecurityContext: &corev1.SecurityContext{
|
||||
ReadOnlyRootFilesystem: true,
|
||||
AllowPrivilegeEscalation: false,
|
||||
Capabilities: &corev1.Capabilities{
|
||||
Drop: []corev1.Capability{"ALL"},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
W połączeniu z [[NetworkPolicy]] i [[RBAC]], tworzy to defense-in-depth.
|
||||
|
||||
Więcej: [[Model bezpieczeństwa Defence-in-Depth]] | [[Cykl życia Agent Pod]]
|
||||
|
||||
---
|
||||
|
||||
Powiązane: [[Model bezpieczeństwa Defence-in-Depth]] | [[gVisor]] | [[Kata Containers]] | [[Pod]]
|
||||
Reference in New Issue
Block a user