2025년 1월 27일 · 55분· 강의 노트 제공됨
7명이 수강함
우리가 실생활에서 만나는 소프트웨어, 특히 SaaS에는 접근 제어(Access Control) 로직이 모두 포함되어있어요. 또한, 사내에서 활용되는 백오피스 어드민 역시 어느 시점 이후로는 접근 제어 로직이 꼭 필요해요. 이러한 접근 제어는 “프론트엔드” 주제는 아니지만, 웹 개발에서 꽤나 복잡도를 많이 갖고 있는 영역이기 때문에, 백엔드 개발자와 API 소통을 하거나하는 일이 생겼을때 활용할 일이 있을거라고 생각해요.

배경

  • 우리가 실생활에서 만나는 소프트웨어, 특히 SaaS에는 접근 제어(Access Control) 로직이 모두 포함되어있어요.
    • 예시
      • Notion
      • Google Drive
      • GitHub
  • 또한, 사내에서 활용되는 백오피스 어드민 역시 어느 시점 이후로는 접근 제어 로직이 꼭 필요해요.
    • 예시
      • 개발자 권한
      • 정직원 권한
      • 인턴 권한
  • 이러한 접근 제어는 “프론트엔드” 주제는 아니지만, 웹 개발에서 꽤나 복잡도를 많이 갖고 있는 영역이기 때문에, 백엔드 개발자와 API 소통을 하거나하는 일이 생겼을때 활용할 일이 있을거라고 생각해요.
    • 저는 복잡한걸 단순하게 만드는 걸 좋아하는데, 여러분도 그런가요? ㅎㅎ
 

정의: 인증과 인가, 접근 제어

  • 보통 우리는 “인증”과 “인가”를 헷갈리곤 해요. (Authentication vs Authorization)
  • “인증”(Authentication)은 현재 요청을 하는 유저가 “누구인지?”를 확인하는 프로세스에요. (프론트에서 여권 체크)
  • “인가”(Authorization)는 인증된 유저가 어떤 리소스에 “접근이 가능한지”를 확인하는 정책을 부여해요.
  • “접근 제어”(Access Control)는 정책이 부여된 유저가 리소스에 접근하도록 잠금을 해제하는 로직을 의미해요.
🔍
예를 들어, 호텔에 체크인하는 여행자를 생각해 보세요. 프론트 데스크에서 등록할 때 예약자 이름이 본인임을 확인하기 위해 여권을 제시해야 합니다. 이는 인증의 예입니다.
호텔 직원이 게스트를 인증하면 게스트는 제한된 권한이 있는 키 카드를 받습니다. 이는 권한 부여의 예입니다. 손님의 키 카드로는 방, 손님용 엘리베이터, 수영장에 액세스할 수 있지만, 다른 손님의 방이나 서비스 엘리베이터는 이용할 수 없습니다. 반면에 호텔 직원은 손님보다 호텔의 더 많은 영역에 액세스할 수 있습니다.
  • 인증: 프론트에서 여권을 제시하는 과정
  • 인가: 권한이 있는 키 카드를 부여
  • 접근 제어: 엘리베이터와 방의 잠금 장치
(홍보) 로그인(인증)은 어떻게 구현하면 되나요?
 

문제 상황

이거 어떻게 구현해야할까요?
GitHub
  • TonyX Repo코드를 푸시
체크해야하는 사항
  • TonyX Repo가 속한 P Org에 멤버인가?
  • TonyX Repo에 권한이 부여된 Q Team의 멤버인가?
  • TonyX RepoOutside Collaborator인가?
Google Drive
  • TonyY File에 접근
체크해야하는 사항
  • TonyY File에 읽기 권한이 있는가?
  • TonyY File이 포함된 상위 폴더에 읽기 권한이 있는가?
  • TonyY File이 첨부된 이메일(Gmail)에 접근할 수 있는가?
사내 어드민
  • 인턴 권한I, J 메뉴로 한정되어있음
  • 갑자기 업무 상의 이유로 인턴 K가 정규직 권한이 필요한 Z 메뉴에만 추가로 접근하도록 해야함
    • 정규직 권한으로 올려서 당장 해결은 가능하겠지만 접근 제어의 구멍이 생기는 꼴
    • 권한 회수 관리에서 실수가 발생 (나중에 인턴 K가 정규직 권한을 들고 있다는 걸 알게 되는 경우)
    • 근본적인 해결을 어떻게 하지?
수강 신청 시 전체 강의 노트 제공
로그인이 필요합니다
2025년 3월 25일
3명 수강
2025년 3월 18일
4명 수강
2025년 3월 11일
2명 수강
2025년 3월 4일
5명 수강
2025년 2월 25일
2명 수강
2025년 2월 18일
3명 수강
2025년 2월 11일
8명 수강
2025년 2월 4일
3명 수강
2025년 1월 21일
5명 수강
2025년 1월 14일
9명 수강
2025년 1월 7일
8명 수강
2024년 12월 31일
10명 수강
2024년 12월 24일
18명 수강
2024년 12월 17일
19명 수강
2024년 12월 10일
18명 수강
2024년 12월 3일
7명 수강
2024년 11월 26일
29명 수강
2024년 11월 19일
18명 수강
2024년 11월 5일
6명 수강
2024년 10월 29일
13명 수강
2024년 10월 22일
15명 수강
2024년 10월 15일
14명 수강
2024년 10월 8일
12명 수강
2024년 9월 24일
22명 수강
2024년 9월 10일
21명 수강
2024년 9월 3일
16명 수강
2024년 8월 20일
20명 수강
Luft Software Design
루프트소프트웨어디자인
사업자등록번호 306-04-33917
통신판매업신고번호 2024-인천동구-196
인천광역시 동구 새천년로38번길 11, 206동 1806호
서비스이용약관
개인정보처리방침
이메일 문의 tony@fromundefined.com
Designed by Tony