4.11. 권한 부여 정책 추가
Layer 7(L7) 권한 부여 정책을 사용하여 curl 서비스가 다른 모든 작업을 차단하면서 GET 요청을 productpage 서비스에 보낼 수 있도록 합니다.
프로세스
다음 예와 유사한 권한 부여 정책을 생성합니다.
설정 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 권한 부여 정책을 적용합니다.
oc apply -f authorization-policy.yaml
$ oc apply -f authorization-policy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
targetRefs 필드는 waypoint 프록시의 권한 부여 정책에서 대상으로 하는 서비스를 지정합니다.
검증
다음 명령을 실행하여
default네임스페이스에curl애플리케이션을 배포합니다.oc apply -n default -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/curl/curl.yaml
$ oc apply -n default -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/curl/curl.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
curl배포의 상태를 기다린 후 가져옵니다.oc -n default rollout status deploy/curl --timeout=3m
$ oc -n default rollout status deploy/curl --timeout=3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
productpage서비스에 대한GET요청이default/curl포드에서 만들 때 HTTP 200 응답으로 성공했는지 확인합니다.oc -n default exec deploy/curl -- sh -c \ 'curl -s -o /dev/null -w "HTTP %{http_code}\n" http://productpage.info.svc.cluster.local:9080/productpage'$ oc -n default exec deploy/curl -- sh -c \ 'curl -s -o /dev/null -w "HTTP %{http_code}\n" http://productpage.info.svc.cluster.local:9080/productpage'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 적용된 권한 부여 정책으로 인해 HTTP 403 응답으로 동일한 서비스에 대한
POST요청이 거부되었는지 확인합니다.oc -n default exec deploy/curl -- sh -c \ 'curl -s -o /dev/null -w "HTTP %{http_code}\n" -X POST http://productpage.info.svc.cluster.local:9080/productpage'$ oc -n default exec deploy/curl -- sh -c \ 'curl -s -o /dev/null -w "HTTP %{http_code}\n" -X POST http://productpage.info.svc.cluster.local:9080/productpage'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
info네임스페이스의평가Pod와 같은 다른 서비스의GET요청이RBAC: access denied에서도 거부되었는지 확인합니다.oc exec "$(oc get pod -l app=ratings -n info \ -o jsonpath='{.items[0].metadata.name}')" \ -c ratings -n info \ -- curl -sS productpage:9080/productpage$ oc exec "$(oc get pod -l app=ratings -n info \ -o jsonpath='{.items[0].metadata.name}')" \ -c ratings -n info \ -- curl -sS productpage:9080/productpageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
curl애플리케이션을 삭제하여 리소스를 정리합니다.oc delete -n default -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/curl/curl.yaml
$ oc delete -n default -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/curl/curl.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow