프로그래머스 백엔드 데브코스 TIL 39일차

Inchang Choi·2022년 5월 18일
0

백엔드 데브코스 TIL

목록 보기
23/30
post-thumbnail

학습목표

강의를 들으며 내가 알고 있는 내용을 점검하고,

새로 배운 내용을 정리하며,

궁금한 내용을 알아가며 학습해나가는 것을 목표로 합니다.

Spring Security

웹 어플리케이션의 주요 보안 위협 요소

인증(Authentication) 절차 미비

인증은 인가와 함께 보안 관련 핵심 개념 중 하나입니다.

사용자의 신원을 확인하는 과정이며 예를 들어 아이디나 패스워드를 통한 로그인 또는 OAuth2.0 프로토콜 등을 통한 소셜 인증등이 있습니다.

어플리케이션은 이를 통해 인증 영역과 인증 되지 않은 영역(익명 영역)으로 나눌 수 있습니다.

익명 영역

  • 사용자의 민감 정보를 노출 하지 않아야 합니다.
  • 시스템의 상태를 변경하거나 데이터를 관리 할 수 있는 기능을 제공하지 않아야 합니다.
  • 즉 사용자의 신원과 무관한 기능들

인증 영역

  • 사용자의 개인정보를 확인하고 수정할 수 있습니다.

인가(Authorization) 처리의 미비

적절한 권한이 부여된 사용자들만 특정 기능을 수행 하거나 데이터 접근을 허용해야 합니다.

주어진 권한을 넘어서는 기능 수행은 민감 데이터 유출 등 보안 사고 발생 가능성이 높습니다.

크리덴션(Credential) 보안

  • 민감 정보를 보호하는 것은 항상 최우선 순위를 둬야 하는 일입니다.
  • 민감 정보를 암호화 하지 않고 일반 텍스트로 저장하는 것은 매우 위험하며, 암호화가 필요 합니다.

전송 레이어 보안

  • 널리 알려진 웹 서비스에서 SSL보호를 적용하지 않는 것은 존재하지 않습니다.
  • 즉 https를 통해 연결이 되어야 합니다.

Spring Security는 어플리케이션 보안 관련 다양한 기능을 제공합니다.

  • Spring Boot 웹 어플리케이션에 적용 가능하며 적은 노력으로 각 상황에 따른 보안을 적용할 수 있습니다.
  • 사실상의 스프링 프로젝트의 필수 사항입니다.
  • 사용자 인증 및 인가 처리
  • 필요에 따른 커스터마이징
  • 다양한 확장 기능과 자연스러운 통합을 제공합니다.
    • Spring Session
    • Spring Security OAuth

Spring Security 시작해보기

  • @EnableWebSecurity , WebSecurityConfigurerAdapter 클래스
    • WebSecurityConfigurerAdapter 추상 클래스를 상속하는 구현체에 @EnableWebSecurity 어노테이션을 추가
    • 기본적인 Spring Security 설정이 자동으로 추가되며, 개별 설정을 override 할수 있습니다.
  • WebSecurity 클래스는 필터 체인 관련 전역 설정을 처리할 수 있는 API 를 제공합니다.
    • ignoring()
      • Spring Security 필터 체인을 적용하고 싶지 않은 리소스에 대해 설정합니다.
      • 일반적으로 정적 리소스(.html, .css, *.js 등)을 예외 대상으로 설정합니다.
      • 불필요한 서버 자원 낭비를 방지합니다.
  • HttpSecurity 클래스는 세부적인 웹 보안기능을 설정을 처리할 수 있는 API를 제공합니다.
  • 기본 로그인 계정을 추가하지 않으면 매번 랜덤으로 비밀번호가 생성됩니다.
    • UserDetailsServiceAutoConfiguration 클래스는 InMemoryUserDetailsManager (InMemory 기반 사용자 관리 UserDetailsService) Bean을 등록합니다.
    • InMemoryUserDetailsManager Bean 생성 시 SecurityProperties 클래스를 통해 spring.security 관련 설정을 처리합니다.
profile
always positive

0개의 댓글