SpringBoot Security

[Spring] Security
Feb 21, 2024
SpringBoot Security
💡
스프링 시큐리티(Spring Security)는 스프링 프레임워크 기반의 웹 어플리케이션에서 보안 기능을 구현할 수 있도록 지원하는 프레임워크이다. 스프링 시큐리티는 인증(Authentication), 권한 부여(Authorization), 보안 관련 이벤트 처리, 세션 관리, CSRF방어, XSS방어등의 기능을 제공함. 이러한 기능들을 통해 스프링 시큐리티는 안전하고 보안성 높은 웹 어플리케이션 개발을 도와줌.

메모리 DB

notion image
 
  1. 클라이언트의 요청이 많아질수록 서버가 많이 필요하다. 이때 새로운 하드웨어를 추가하여 서버를 늘리는 것을 Scale Out 이라고 한다. (Scale Up 은 기존의 하드웨어의 성능을 향상 시키는 방식 → I/O의 속도에는 영향을 미치지 않는다.)
  1. 클라이언트가 서버1에 접속을 하였다가 서버2로 접속을 하면 세션이 없기 때문에 다시 로그인을 해야하거나 서버로부터 거절을 당한다. → 서버마다 session이 없기 때문에
  1. 세션 동기화를 하면 2번 문제를 해결할 수 있지만 메모리 DB를 사용하는 것이 더 효율적 이기 때문에 사용하지 않는다.
    1. 성능 저하, 높은 비용, 복잡성 증가, 일관성 유지의 어려움 등의 단점이 있음.
  1. 메모리 DB에 세션을 저장하여 모든 서버에 세션을 공유한다.
    1. 메모리 DB는 모든 데이터를 메모리에서 직접 처리하므로, 디스크 I/O가 없기 때문에 데이터 처리 속도가 훨씬 빠름.
    2. 대표적으로 Redis, Memcached 등이 있음.

대칭키 시스템

  1. 대칭키 시스템은 암호화와 복호화에 같은 키를 사용하는 암호화 방식으로 비밀키 시스템이라고도 부른다.
  1. 발신자와 수신자가 동일한 대칭키를 공유하여 암호화와 복호화 과정이 빠르다.
  1. 단점으로는 키 관리이다. 예를 들어, 만약 통신을 할 사람이 많아질 경우 각각의 사람들과 키를 공유해야 하는데, 매우 복잡한 작업이 될 수 있다. 또한 키가 노출되면 보안에 매우 취약해진다.
  1. 세션 방식과 다른점은 클라이언트의 정보를 저장하거나 관리하지 않는다. → stateless
  1. 단점은 통신을 할때 대칭키도 함께 전달해야하기 때문에 보안에 취약하다

비대칭키 시스템(공개키)

notion image
  1. 공개키로 암호화를 하고 비밀키로 복호화하는 시스템이다.
  1. 공개키는 누구에게나 공개되어 있고, 비밀키는 사용자만이 알고 있는 키.
  1. A가 B에게 통신하기 위해서는 B공개키로 잠그고 다시 A의 비밀키로 잠그면 데이터의 무결성을 지키면서 안전한 통신을 할 수 있다.
    1. B공개키로 잠그면 B만 열 수 있다. → 암호화 가능
    2. A비밀키로 잠그면 누구나 열 수 있지만, A가 보낸것을 알 수 있다. → 신뢰성 확보
  1. 보안의 3요소 CIA가 다 지켜진다.
    1. Confidentiality(기밀성)
    2. Integrity(무결성)
    3. Availability(가용성)
  1. OAuth(권한 위임)이 가능하다. 발행과 검증을 다른곳에서 가능.

OAuth 4가지 방식

1. Client Credentials Grant(클라이언트 자격증명 승인 방식)

공개키사용한 토큰 승인 방식
notion image

2. Authorization Code Grant(인증 코드 승인 방식)

대칭키 사용한 코드 승인 방식
notion image

3. Implict Grant(암시적 승인 방식)

4.Resource Owner Password Credentials Grant(리소스 소유자 암호 자격증명 승인 방식)

Share article
RSSPowered by inblog