Gatekeeper 를 도입하기전 OPA를 가지고 쿠버네티스를 이용한 서비스 보안 운영을 해보았다.
아래의 과정은 클라이언트가 서비스를 사용하려 할 때 인증과 인가를 받아 토큰을 발급 받은 후
토큰을 가진 클라이언트는 서비스를 사용할 수 있도록 하기 위한 아키텍처이다.
아래를 수행하기 위해 필요한 지식을 먼저 습득하고 적용을 해보기로 한다.
OPA란?
다양한 클라우드 네이티브 영역 전반에 걸쳐 정책 인증을 코드로 관리하여 보안 운영 자동화를 할수있는 CNCF graduated 프로젝트이다.
OPA는 정책을 결정하는 부분과 수행하는 영역을 분리 하기 위해 시작되었으며 오픈 소스 범용 정책 엔진이 되었다.
policy decision-making 정책 의사결정을 만족하는가? 에 대한 개념과
policy enforcement 정책 시행하는 개념이 있다.
사용언어?
rego 생소한 언어 이다 보니 어느정도 공부를 필요로 한다.
아래의 url 에서 공부하고 rego로 opa 를 체험이 가능하다.
https://play.openpolicyagent.org/
OPA의 input에는 3가지 종류가 있다.
Query input : OPA가 결정을 해야하는 질의(권한이 있는가?)
Policy : 정의된 decision making 실행(사용자 리스트를 봐라!)
Data : decision making 을 위해 필요시 참조할 데이터(관리자 권한이 부여된 리스트)
클라이언트가 서비스에 접근하고 싶다라는 query input 을 할 때
클라이언트 Data 를 보고 접근이 가능한가 에 대한 부분은
Rego 언어로 정의된 Policy 를 보고 접근에 대한 결정을 내린다
이 동장방식을 가지고 권한이 있는지 아닌지에 대한 부분은 True/False로 이루어진다
아래는 위의 설명의 예시
Query input
Policy
Data
Output
관련 참고
API Authorization using Open Policy Agent and Kong
Integrating Identity: OAuth2 and OpenID Connect in Open Policy Agent
좋은 정보 감사합니다