본문 바로가기

Web33

[Backend] flyway 사용하기 🙋 들어가며 우리는 코드를 관리하기 위해서 git이라는 형상 관리 툴을 사용합니다. 반면에 여러분들은 DB는 어떤 것으로 형상을 관리하시나요? 바로 Flyway가 DB에 대한 형상 관리를 제공합니다. 이번 글에서 간단하게 사용법을 알아보겠습니다. 😋 🪽 flyway란? 공식 문서에는 다음과 같이 소개합니다. 😮 Flyway is an open-source database migration tool. DB 형상 관리를 도와주는 도구입니다. 심지어 오픈 소스입니다! 😋 🤔 왜 사용할까? 저는 개발을 할 때 DDL을 직접 작성해서 관리하는 것을 선호합니다. 스키마에 변경사항이 생기면 하나하나 수정했습니다. (다행히도 꼼꼼한 성격 때문에 아직까진 실수한 적 없습니다 😜) 만약 관리해야 할 DB가 많다면 이 과정.. 2023. 10. 11.
[Security] 시큐리티 파헤치기 (4) : 인증이란? (feat. Authentication) 🙋 들어가며 이번 글부터 시큐리티의 인증 시리즈를 다뤄볼 생각입니다. 인증에 대해서 무엇인지 알아보면서 인증 시리즈를 시작해 보겠습니다. 또한, 어떤 객체에 인증 정보를 담을지까지 알아보겠습니다. 🙆‍♂️ 인증(Authentication)? 인증이란, 어떤 사용자가 접근하고 있는지 확인하는 절차입니다. 보안에 민감한 정보를 다룬다면 당연히 누가 사용하는지 확인하고 접근시켜야 합니다. 자세하게 어떻게 동작하는지는 몰라도, 인증하려면 정보를 담아줄 그릇이 필요할 것 같습니다. 바로 이 그릇이 Authentication 객체입니다. 🪙 Authentication 인터페이스 Authentication 인터페이스는 인증 정보를 담는 하나의 토큰입니다. 실제 코드는 다음과 같이 구현되어 있습니다. public in.. 2023. 8. 17.
[Security] 시큐리티 파헤치기 (3) : 시큐리티 초기화, 다중 필터 체인 🙋 들어가며 이번 글에서는 시큐리티가 어떻게 초기화되고 어떤 값들이 생성되는지 알아보겠습니다. 시큐리티는 여러 개의 필터 체인을 관리할 수 있는데 어떻게 설정하는지 알아보겠습니다. 그리고 요청이 어떻게 알맞은 필터 체인에 타고 흐르는지도 알아보겠습니다. 📁 설정 파일 작성 (feat. Security 6) 시큐리티를 사용하기 위해서는 우선 설정 파일을 작성해야 합니다. 다음과 같이 단 어노테이션 하나만 달아주면 기본적인 시큐리티 설정이 완료됩니다. @Configuration @EnableWebSecurity // 기본 시큐리티 설정 public class SecurityConfig { } 바로 @EnableWebSecurity 입니다. 전혀 복잡하지 않죠? 😋 단순히 달아주기만 하면 애플리케이션이 메모리.. 2023. 8. 11.
[Backend] DB 인덱스 이해하기 🙋 들어가며 처음 자료구조를 공부할 때 우리는 배열을 가장 먼저 접합니다. 배열에서 데이터가 어디에 있는지 나타낼 때 인덱스라는 용어를 사용하는데, 데이터베이스에서도 이 인덱스라는 용어를 사용합니다. 이번 글을 통해서 인덱스가 무엇이고 어떻게 사용하는지 알아보겠습니다. 📚 인덱스란? 저번에 읽었던 책에서 찾고 싶은 내용이 있을 때 어떻게 찾을까요? 맨 앞에 있는 목차혹은 끝에 있는 찾아보기를 참고할 것 같습니다. 이렇게 빠르게 찾기 위해서 도움을 주는 페이지를 인덱스라고 합니다. 페이지라고 표현한 이유는 DB에서 인덱스는 하나의 자료구조이기 때문입니다. 기본적으로 인덱스는 키를 정렬해서 보관합니다. 🤔 왜 빨라질까? 인덱스를 둔다는 것은 원하는 데이터가 어디에 있는지 마킹해두는 것입니다. 마킹을 기반으로.. 2023. 8. 4.
[Security] 시큐리티 파헤치기 (2) : RequestCacheAwareFilter, RequestCache 🙋 들어가며 스프링 시큐리티 필터에는 다양한 필터들이 존재합니다. 오늘은 그중에서 인증, 인가를 위해서 가로채진 요청을 어떻게 다시 수행하는지 알아보겠습니다. ↩️ RequestCacheAwareFilter 이름에서 어떤 역할을 하는지 대략적으로 알 수 있습니다. 대충 요청에 대한 캐시를 알고 있는 필터 같습니다. 동작을 이해하기 위해서는 내부적으로 무엇을 가지고 있는지 알아야 합니다. 🏛️ 시큐리티 아키텍처 시큐리티는 결국 인증과 인가를 위한 프레임워크입니다. 인증을 위한 Authentication Manager와 인가를 위한 Access Decision Manager가 핵심입니다. 요청한 자원이 인증이 필요하다면 요청을 가로채 인증한 뒤 다시 원래 요청으로 되돌아가야 합니다. 시큐리티는 Reques.. 2023. 8. 2.
[Security] 시큐리티 파헤치기 (1) : DelegatingFilterProxy 🙋 들어가며 이전에 Spring Security를 너무 가볍게 공부한 것 같아서 A-Z로 다뤄보려고 합니다. 이번 편에서는 DelegatingFilterProxy에 대해서 이야기해 보겠습니다. 👩‍💼 DelegatingFilterProxy Security에서 빼놓을 수 없는 객체입니다. 이름에서 역할이 잘 명시되어 있습니다. 이름 그대로 Filter를 위임(deleagte)하는 대리자(proxy)입니다. 🤷 왜 위임하나요? 전체적인 흐름을 이해하고 왜 위임하는지 알아보겠습니다. 먼저 클라이언트의 요청이 들어오면 서블릿 컨테이너는 필터 체인을 생성합니다. 이후 요청이 필터와 서블릿을 통과하면 스프링 내부로 진입하게 됩니다. 필터 체인 : HttpServletRequest를 처리하는 서블릿과 필터를 포함하는.. 2023. 8. 2.