
Kubernetes 클러스터와 Istio 서비스 메시를 위한 자동화된 보안 검사기로, OPA 정책을 통해 모범 사례를 적용하고 잘못된 구성에 대한 수정 보고서를 생성합니다.
Kubernetes 서비스 메시 보안을 강화하세요!!
mesh-kridik는 Istio 서비스 메시가 있는 Kubernetes 클러스터에서 다양한 보안 검사를 수행하고 보안 보고서를 출력하는 오픈 소스 보안 검사기입니다.
보안 검사 테스트는 istio 보안 모범 사례의 완전한 구현입니다.
보안 검사는 Istio 서비스 메시가 있는 Kubernetes 클러스터에서 수행되며 OPA(Open Policy Agent)를 활용하여 보안 규칙을 적용합니다. 출력 감사 보고서에는 보안 문제의 근본 원인과 보안 문제에 대한 제안된 수정 사항이 포함됩니다.

git clone https://github.com/chen-keinan/mesh-kridik
cd mesh-kridik
make build
플래그 없이 Mesh-Kridik 실행, 모든 테스트 실행
./mesh-kridik
플래그를 사용하여 mesh-kridik 실행, 필요에 따라 테스트 실행
Usage: mesh-kridik [--version] [--help] <command> [<args>]
Available commands are:
-r , --report : run security checks and generate remediation report
-i , --include: execute only specific security check, example -i=1.1
-e , --exclude: ignore specific security check, example -e=1.1,2.0
테스트를 실행하고 실패 테스트 보고서와 그 수정 사항을 생성합니다.
./mesh-kridik -r
Kube-kridik은 사용자 플러그인을 위한 후크를 제공합니다 예제:
go build -buildmode=plugin -o=~/<plugin folder>/<plugin>.so ~/<plugin folder>/<plugin>.go
cp ~/<plugin folder>/<plugin>.so ~/.kube-kridik/plugins/compile/<plugin>.so
Kube-kridik은 다음 사양을 지원하며 쉽게 확장할 수 있습니다:
이 사양은 ~/.mesh-kridik/security/mesh/istio 폴더 아래의 사양 파일을 수정하여 쉽게 확장할 수 있습니다.
| 이름 | 설명 | 영향 |
|---|---|---|
| Mutual TLS | Istio 상호 TLS 프록시는 기본적으로 허용 모드로 구성됩니다. | 프록시는 상호 TLS와 일반 텍스트 트래픽을 모두 허용합니다. |
| Istio 안전한 인가 정책 패턴 | ALLOW-with-positive-matching 또는 DENY-with-negative-match 패턴 사용 | 이러한 인가 정책 패턴은 정책 불일치 시 최악의 결과가 인가 정책 우회 대신 예기치 않은 403 거부이므로 더 안전합니다. |
| 인가 정책의 경로 정규화 | 인가 정책의 시행 지점은 백엔드 애플리케이션의 일반적인 리소스 접근 지점 대신 Envoy 프록시입니다. | 일치하지 않으면 예기치 않은 거부 또는 정책 우회로 이어질 수 있습니다. |
| 이그레스 트래픽에 대한 TLS 발신 | 이그레스 트래픽에 대한 서비스 ServiceEntry의 DestinationRule 사용 | 외부 서비스로의 이그레스 트래픽에 TLS 발신을 사용하지 않으면 일반 텍스트로 전송됩니다. |
| 프로토콜 탐지 | 서비스 프로토콜을 명시적으로 선언 | 탐지 누락은 예기치 않은 트래픽 동작을 초래할 수 있습니다. |
| CNI 지원 | Istio 투명 트래픽 캡처 | 모든 네트워크 트래픽이 캡처되지는 않습니다. |
| 지나치게 광범위한 호스트 | 게이트웨이에서 지나치게 광범위한 호스트 설정을 피하십시오. | 예기치 않은 도메인의 잠재적 노출을 유발할 수 있습니다. |
| 게이트웨이 생성 권한 제한 | 게이트웨이 리소스 생성을 신뢰할 수 있는 클러스터 관리자로 제한 | 신뢰할 수 없는 사용자가 게이트웨이를 생성할 수 있습니다. |
| 다운스트림 연결 제한 구성 | 배포에서 개별 게이트웨이 인스턴스가 필요로 하는 동시 연결 수에 따라 config map의 global_downstream_max_connections를 업데이트하십시오. 제한에 도달하면 Envoy가 TCP 연결을 거부하기 시작합니다. | 다운스트림 연결 수에 제한이 없으면 악의적인 행위자에 의해 악용될 수 있습니다. |
| 타사 서비스 계정 토큰 구성 | 1자 토큰의 속성이 덜 안전하므로 3자 토큰을 구성하는 것이 좋습니다. | 1자 토큰 속성은 덜 안전하여 인증 침해를 유발할 수 있습니다. |
| 제어 플레인 | Istiod는 편의상 기본적으로 인증되지 않은 몇 가지 일반 텍스트 포트를 노출합니다. | 인증되지 않은 일반 텍스트로 XDS 서비스 포트 15010과 디버그 포트 8080을 노출합니다. |
| 데이터 플레인 | 프록시는 다양한 포트를 노출합니다. | 프록시와 동일한 포드에서 실행되는 애플리케이션은 접근 권한이 있습니다. 사이드카와 애플리케이션 간에 신뢰 경계가 없습니다. |
| 트래픽 캡처 제한 이해 | meshConfig.outboundTrafficPolicy.mode를 설정하여 이그레스 트래픽 보호 | 외부 서비스 접근이 제어되지 않습니다. |