Istio RBAC를 통해 네임스페이스, 서비스, HTTP 메소드 수준의 권한 제어를 실습 해보자.
준비작업
- k8s, helm 설치
- Istio 초기화 (namespace, CRDs)
- Istio ingresgateway는 노드 포트로 설치
- Istio pod 정상상태 확인 및 대기
- bookinfo 설치
/productpage
정상 동작여부 확인
- productpage 와 reviews 의 서비스를 위한 ServiceAccount 생성
- 브라우저에서
/productpage
URL 접속해보기
Istio authorization 활성화
- ClusterRbacConfig를 구성하여 네임스페이스 “default”에 대한 Istio authorization을 활성화한다.
authorization 대상을 지정하지 않았으므로 /productpage
에 요청을 보내면 RBAC: access denied
가 반환된다.
Namespace-level 접근 제어
- 네임스페이스 레벨에서 접근 제어를 정의한다.
- app 라벨이
[“productpage”, “details”, “reviews”, “ratings”]
인 서비스의 “GET”
호출에 대해 ServiceRole을 정의하고 전체 사용자에게 ServiceRole을 부여한다. (ServiceRoleBinding)
결과: “RBAC: access denied”
에서 정상적인 화면으로 전환된다.
cleanup
Service-level 접근 제어
#1. productpage 서비스 접근 허용
- 결과:
/productpage
는 정상적으로 조회되지만 Detail 과 Review 부분은 에러가 발생한다.
#2. details & reviews 서비스 접근 허용
- details과 reviews의 서비스에도 ServiceRole을 부여해보자.
- ServiceRole 이름을 새로 생성했으므로 이전 ServiceRole, ServiceRoleBinding과 함께 적용된다.
결과: review, rating이 정상적으로 조회된다.
cleanup
참고