Nginx - бұл Kubernetes орталығында қолданылатын Ingress контроллерінің маңызды компоненті. Nginx Ingress контроллерін защитау үшін өте маңызды, себебі потенциалды атакалар мен мәліметтердің жарықтыруына қарсы қорғауы керек.
1. Соңғы нұсқаға жаңарту
Nginx Ingress контроллерін периодты тұрақтай ақпаратты қабылдау үшін соңғы стабильді нұсқасына жаңартыңыз, бұл кезде қауіптіліктердің түзетін жөндемесін және жаңа функцияларды алуға мүмкіндік береді. Жаңарту үшін осы командаларды қолданыңыз:
Helm арқылы:
# Helm репозиториясын жаңарту
helm repo update
# Nginx Ingress құрылымын жаңарту
helm upgrade <release_name> nginx-stable/nginx-ingress
kubectl арқылы:
# Жаңа YAML манифестін қолдану арқылы жаңарту
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml
Түсіндіру: helm upgrade
командасы, мәзірдің nginx-stable
репозиториясынан соңғы нұсқасына қазірғі қайта жүктеу. kubectl apply
командасы жаңа конфигурацияны қолданып, Kubernetes кластерінде ресурстарды жаңарту арқылы қолданушылардың мүмкіндіктерін күтеді.
2. Қатынастардың минимизациясы
Nginx Ingress контроллері үшін RBAC (Рөл негізінде қолдау көрсету) параметрлерін күтеді, тек қажетті қызметтер мен пайдаланушыларға рұқсатты күтеді. RBAC объекттерін жасау манифесті мисалы:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: <namespace>
name: nginx-ingress-role
rules:
- apiGroups: [""]
resources: ["services", "endpoints"]
verbs: ["get", "list", "watch"]
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
namespace: <namespace>
name: nginx-ingress-role-binding
subjects:
- kind: ServiceAccount
name: nginx-ingress-serviceaccount
namespace: <namespace>
roleRef:
kind: Role
name: nginx-ingress-role
apiGroup: rbac.authorization.k8s.io
Түсіндіру: Бұл манифест ServiceAccount nginx-ingress-serviceaccount
арқылы рұқсаттарды тапсыру керек services
және endpoints
ресурстарын оқу үшін. Сондықтан тек қажетті ресурстарға рұқсат тапсыру арқылы қатынастардың минималды мүмкіндіктерін тиімді қорғауға болады.
3. HTTPS настройкасы
Дайынды да HTTPS ресурстарында мәліметтердің жарықтыруын қорғау үшін дайында HTTPS пайдаланыңыз. TLS сертификаттарын және Kubernetes секреттерін Nginx Ingress үшін пайдалану үшін мәліметтер:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
tls:
- hosts:
- example.com
secretName: example-tls-secret
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80
Түсіндіру: Осы мисалда HTTP трафигін маршрутизациялау үшін example.com
мекенжайы арқылы example-service
қызметіне HTTP ресурстарында TLS секрет example-tls-secret
сертификаттарын қамтамасыз ететін Ingress
ресурсын жасайды.
4. DDoS-атакалардан қорғау
DDoS-атакалардың алымын Nginx параметрлерін пайдаланып, белгілі IP немесе желілерден келетін сұраныстар санын шектеу арқылы күтіп, көбейту қажет. Nginx баптауларының көрсеткіші:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location / {
limit_req zone=one burst=20 nodelay;
...
}
}
}
Түсіндіру: Осы мисалда http
конфигурациясында Nginx зоналары $binary_remote_addr
мәндері үшін, 10 секундтардың 10 рақсатын шектеу үшін жасайды. limit_req
баптауы 20 сұранысқа берілген location /
үшін көрсетіліп, бұрышты үшін 20 сұранысты көмек қылуы керек.
5. Мониторинг және журналдау
Nginx Ingress Controller-дің кіру журналдарын табу және жарақты трафик негізінде аномальды трафик және қауіпті оқиғаларды жедел анықтау үшін сауда және талдамалар құрметін құрмет. Kubernetes күйлерінің стандартты мониторинг құралдарын, мәселеулердің алындарын, Prometheus және Grafana кезінде тазарту және аналитикалауға пайдалану үшін.
Толығырақ:
- Nginx Ingress қолданушысының метрикасын тіркеу үшін Prometheus: https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-prometheus/
- Grafana метрикаларының қарау үшін байланыс: https://grafana.com/grafana/dashboards/9614
6. Firewall және желі политикасы
Firewall басқармасын және басқару параметрлерін пайдаланып, Nginx Ingress Controller қосымшасына шектеу басқару үшін Kubernetes желі политикасын жасау үшін, сондай-ақ жасау және қызметтердің алдын алуы. Kubernetes NetworkPolicy
мисалында, Nginx Ingress үшін және мүмкіндіктерге қайта кіруден бас тартқызу үшін allow-nginx-ingress
қылмыстың басылған жасау мисалы:
# Nginx Ingress қосымшасына кіруге рұқсат беретін қызметтердің IP мекенжайларына байланыс NetworkPolicy настройкалау
kubectl apply -f - <<EOF
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-nginx-ingress
namespace: ingress-nginx
spec:
podSelector:
matchLabels:
app.kubernetes.io/name: ingress-nginx
policyTypes:
- Ingress
ingress:
- from:
- ipBlock:
cidr: 192.168.1.0/24
EOF
Түсіндіру: Осы мисалда 192.168.1.0/24
желідең IP мекенжайларындағы IP мекенжайларының allow-nginx-ingress
желі политикасын құру NetworkPolicy-ды көрсетеді.
7. Кіру және рұқсаттандыру
Nginx Ingress Controller үшін кіру және рұқсаттандыруды, Kubernetes бірнеше механизмдерін немесе жауапкершілерімен негізделген жеке системалар, мисалы, OIDC (OpenID Connect) және JWT (JSON Web Tokens) жоғары стандартты механизмдер немесе жеңілдіктерді пайдалану үшін.
OIDC пайдалану жасау мисалы:
apiVersion: ingress-nginx.io/v1
kind: NginxIngress
metadata:
name: example-ingress
spec:
ingressClassName: nginx
defaultBackend:
service:
name: default-http-backend
port:
number: 80
auth:
type: oidc
secretName: oidc-secret
config:
clientId: <client_id>
clientSecret: <client_secret>
issuerUrl: https://accounts.example.com
Түсіндіру: Осы мисалда OpenID Connect (OIDC) пайдалану арқылы аутентификацияны орнатуға арналған, конфигурацияның clientId
, clientSecret
және issuerUrl
OIDC провайдерімен жұмыс істеу үшін жарияланады.
8. Қауіпсіздік тестілеу жүргізу
Nginx Ingress Controller үшін қауіпсіздік жүргізуді регулярлық тестілеулер үшін, қауіпсіздік параметрлерін тестілеудің нысандарын алуға бағытталған. Қауіпсіздік сканерлер мен тестерлер пайдаланып, мұндай тестілеулерді жүргізу үшін kube-bench және kube-hunter бен қауіпсіздік барысында нысандарды шығарады.
kube-hunter пайдалану мисалы:
# Kubernetes кластерінде kube-hunter қайта теңшеу үшін орнату және іске қосу
kubectl apply -f https://raw.githubusercontent.com/aquasecurity/kube-hunter/main/job.yaml
Түсіндіру: Осы мисалда kube-hunter жобасы ретінде Kubernetes кластерінде орнатып, кластерде мүмкіндіктерді және қосымшаларды тексеру үшін алымдық алымдарды жүргізеді.
Қорытынды
Эффективді Nginx Ingress Controller защитау үшін Kubernetes орталығында қатты жүргізілімді басқару және ауыздық жүргізілімдерді қолдану қажет. Тәулік байланыстар мен деталдар бойынша, бұл стандарттардың жаңартуын, төменгіліктерді және атакалардың қарсы қорғалатын жүргізілімдерін қолдану арқылы, Kubernetes кластерінің қорғалуын арттыруыңызға мүмкіндік беретін.
Реклама Google |
![]() |
Назар аударыңыз! Бұл мақала ресми құжат емес.Ақпаратты сақтықпен және сынақ ортасында пайдалану керек.
Заманауи сақтық көшірме жасау, репликациялау, деректерді синхрондау және төлемдік бағдарламадан қорғау жүйелерін құру туралы сұрақтарыңыз болса, қазіргі заманғы деректердің сақтық көшірмесін жасау және қалпына келтіру технологиялары бойынша кеңес алу үшін біздің компанияға хабарласыңыз . Біздің компанияның осы салада 20 жылдан астам тәжірибесі бар. |
Қазақстандағы резервтік көшірудің ең жақсы он тәжірибесі
- oVirt гипервизорын қорғау — терең талдау
- oVirt жүйесінен Proxmox жүйесіне виртуалды машинаны көшіру
- Proxmox-тан oVirt-ке виртуалды машинаны көшіру
- Kubernetes контейнерлерін қорғау — терең талдау
- Proxmox гипервизорын бұзудан қалай қорғауға болады - Терең талдау
- Fail2Ban-ды oVirt жүйесін қорғауда қолдану - Терең талдау
- oVirt гипервизорын сақтандыруды ұйымдастыру — Терең талдау
- Виртуалды машинаны гипервизорлар арасында Proxmox арқылы көшіру
- Proxmox гипервизорын виртуалды машиналардың оңтайлы жұмысын қамтамасыз ету үшін конфигурациялау
- Proxmox-те SSH арқылы root құқықтарының бұзылуынан қорғау: терең талдау