이번 강의에서는 Docker Containers와 Docker Compose를 사용하여 보안 관련 변경 사항을 테스트하는 방법을 살펴보겠습니다. 이 과정을 통해 마이크로서비스 네트워크에서 내부 서비스가 외부에 직접 노출되지 않도록 보호하고, 모든 클라이언트 애플리케이션이 반드시 엣지 서버를 통해서만 접근할 수 있도록 설정하는 방법을 배웁니다.
Docker 이미지 생성:
s12
태그로 생성합니다.s12
태그를 가진 이미지를 확인할 수 있습니다.Docker Compose 파일 수정:
docker-compose.yml
파일에서 태그 이름을 s11
에서 s12
로 변경합니다.8080
포트를 사용하고, 외부에는 7080
포트를 노출합니다.start -dev
명령어를 추가합니다.extends
를 사용하여 Keycloak 서비스가 easybank
네트워크 내에서 시작되도록 설정합니다.서비스 포트 제거:
accounts
, loans
, cards
마이크로서비스에 대해 포트 매핑을 제거하여 외부에서 직접 접근할 수 없도록 합니다.Gateway 서버 환경 변수 추가:
application.yml
파일에서 spring.security.oauth2.resourceserver.jwt.jwk-set-uri
환경 변수를 추가하여 Keycloak 서버에서 공개 인증서를 가져올 수 있도록 설정합니다.localhost
대신 Docker 네트워크 내부에서 사용되는 Keycloak 서비스 이름과 포트(8080
)을 설정합니다.Docker Compose 실행:
docker-compose up -d
명령어를 실행하여 모든 컨테이너를 시작합니다.중요 사항:
docker-compose up
명령어를 실행하기 전에 모든 로컬 애플리케이션과 기존의 Keycloak 컨테이너를 중지해야 합니다. 그렇지 않으면 새로운 Keycloak 서비스가 시작되지 않을 수 있습니다.Docker Desktop 확인:
7080
포트에서 실행 중인지 확인합니다.cards
, accounts
, loans
서비스는 포트 매핑이 없으며, 외부에서 직접 접근할 수 없습니다.Postman에서 API 테스트:
connection refused
오류가 발생하는지 확인합니다.API 호출 테스트:
보안된 API 호출 테스트:
accounts
의 create
API)를 호출하여 401 Unauthorized
오류가 발생하는지 확인합니다.Keycloak 클라이언트 및 역할 재설정:
client_credentials
와 authorization_code
방식 모두에 대해 클라이언트를 생성하고, 적절한 역할을 할당합니다.Client Credentials Grant Type Flow 테스트:
access token
을 생성하고, 보안된 API 호출이 성공하는지 확인합니다.Authorization Code Grant Type Flow 테스트:
access token
을 생성하고, 이를 사용하여 보안된 API 호출이 성공하는지 확인합니다.보안 설정 검증:
loans
, cards
, accounts
마이크로서비스는 외부에 노출되지 않으며, 오직 Gateway 서버를 통해서만 접근할 수 있습니다.GitHub 저장소 업데이트:
section12
폴더에서 해당 변경 사항을 확인할 수 있습니다.이번 섹션에서는 마이크로서비스 보안 설정을 완료하고, Docker 환경에서 제대로 작동하는지 확인했습니다. 이로써 마이크로서비스를 안전하게 보호하는 방법을 배우게 되었으며, 이는 매우 중요한 마일스톤입니다.
감사합니다. 다음 섹션에서 다시 뵙겠습니다.