tgoop.com/softwareengineervlog/2301
Last Update:
π¨ ΠΠ°Ρ Kubernetes Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ΅Π½: 3 ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ (ΠΈ ΠΊΠ°ΠΊ ΠΈΡ
ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π° 5 ΠΌΠΈΠ½ΡΡ)
ΠΡΠ±Π»Ρ Docker, K8s ΠΈ ΠΊΠ»ΠΈΠΊΠ±Π΅ΠΉΡΠ½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ. ΠΠΎ Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡΡΠ·Π½ΠΎ, ΡΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΡΠ±Π΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ.
Π‘Π΅ΠΉΡΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ³ΡΠ°ΡΡ Ρ ΠΎΠ±Π»Π°ΠΊΠ°ΠΌΠΈ (ΠΈ Ρ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅) Π² ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΎΠΏΡΡΠ½ΡΠΉ Π΄Π΅Π²ΠΎΠΏΡ ΡΡ
ΠΎΠ΄Ρ Π½Π°ΡΠ΅Π» 3 ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΈΠ·-Π·Π° ΠΊΠΎΡΠΎΡΡΡ
ΠΊΠ»Π°ΡΡΠ΅ΡΡ Π²Π·Π»Π°ΠΌΡΠ²Π°ΡΡ, ΠΌΠ°ΠΉΠ½ΡΡ ΠΊΡΠΈΠΏΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΠΎΠ½ΡΡΡ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½.
π΄ ΠΡΠΈΠ±ΠΊΠ° 1: default
namespace β ΠΌΡΡΠΎΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠΆΠΆΡΡ Π²Π°ΠΌ Π²ΡΡ
- ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: Π·Π°ΠΏΡΡΡΠΈΠ» ΠΏΠΎΠ΄Ρ Π² default
, Π·Π°Π±ΡΠ² ΠΏΡΠΎ ΠΈΠ·ΠΎΠ»ΡΡΠΈΡ.
- Π§Π΅ΠΌ ΠΎΠΏΠ°ΡΠ½ΠΎ: ΠΠ·Π»ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° = Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ.
- ΠΠ°ΠΊ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ: kubectl create namespace my-app
kubectl config set-context --current --namespace=my-app
π΄ ΠΡΠΈΠ±ΠΊΠ° 2: ServiceAccount Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π±ΠΎΠ³Π°
- ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ default:default
ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ°Π²Π° cluster-admin (Π΄Π°, Π±ΡΠ»ΠΎ Π»Π΅Π½Ρ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ).
- Π§Π΅ΠΌ ΠΎΠΏΠ°ΡΠ½ΠΎ: ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ β ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠΎΠΊΠ΅Π½ β ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠΌ.
- ΠΠ°ΠΊ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ:
kubectl create rolebinding restricted-view \
--clusterrole=view \
--serviceaccount=default:default \
--namespace=default
π΄ ΠΡΠΈΠ±ΠΊΠ° 3: ΠΠ΅ Π²ΠΊΠ»ΡΡΡΠ½ PodSecurityPolicy (ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈ)
- ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: ΠΠΎΠ΄Ρ ΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΎΡ root, ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ /etc
ΠΈ Π΄Π΅Π»Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΆΡΡΠΊΠΈΠ΅ Π²Π΅ΡΠΈ.
- Π§Π΅ΠΌ ΠΎΠΏΠ°ΡΠ½ΠΎ: Escalation privileges β Ρ
ΠΎΡΡΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΠ΄ ΡΠ΄Π°ΡΠΎΠΌ.
- ΠΠ°ΠΊ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ:
# ΠΠ»Ρ Π½ΠΎΠ²ΡΡ
Π²Π΅ΡΡΠΈΠΉ K8s (PSP deprecated, Π½ΠΎ Π΅ΡΡΡ Π·Π°ΠΌΠ΅Π½Ρ):
kubectl label ns my-app pod-security.kubernetes.io/enforce=restricted
π₯ ΠΠΎΠ½ΡΡ: ΠΡΠ»ΠΈ Π²Π°Ρ ΠΊΠ»Π°ΡΡΠ΅Ρ ΡΠΆΠ΅ ΠΆΠΈΠ²ΡΡ Ρ ΡΡΠΈΠΌ Π³ΠΎΠ΄Π°ΠΌΠΈ β ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π΅Π³ΠΎ :
kubectl get pods --all-namespaces -o json | grep "serviceAccount: default"
ΠΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΠ΄Π΅Π»Π°Π», Π΅ΡΠ»ΠΈ ΡΠ΅ΠΌΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°, ΡΠΎ Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ Π»ΠΈ k8s Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ manages cluster ΠΈΠ»ΠΈ ΠΊΠΎΠ»Ρ
ΠΎΠ· Π°-Π»Ρ minicube?
BY S0ER
Share with your friend now:
tgoop.com/softwareengineervlog/2301