Работа mTLS в основном ограничивает доступ к услуге, требуя от клиента предоставить сертификат. Если вы предоставляете услугу, а затем запрашиваете сертификат только у клиентов с определенными IP-адресами, весь остальной мир может по-прежнему иметь доступ к вашей услуге без сертификата, что полностью отрицает точку mTLS.
Если вам нужна дополнительная информация, вот хорошая статья , которая объясняет, почему существуют TLS и mTLS и в чем разница между ними.
Есть два способа сделать разумную установку из этого:
- Просто используйте обычный TLS вместо mTLS
- Чтобы служба в вашем кластере требовала mTLS для доступа к ней независимо от IP-адресов
Если вы выберете вариант 2, вам нужно настроить саму службу для использования mTLS, а затем настроить вход для прохождения сертификата клиента в службу. Вот пример конфигурации для входа nginx, который будет работать со службой, которая ожидает mTLS:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: mtls-sample
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "https"
nginx.ingress.kubernetes.io/auth-tls-pass-certificate-to-upstream: "true"
spec:
rules:
- http:
paths:
- path: /hello
backend:
serviceName: mtls-svc
servicePort: 443