- 인증 (
Authentication) :
。사용자의 신원을 증명하는 과정 ( ex.ID/PW 로그인,JWT등 )
▶ 사용자의 로그인 정보를 받아서 ID정보가 일치하는지 확인하는 과정.
Multiple Authentication: 복수의 인증이 존재하는경우
▶ID/PW로 1차 인증 후SMS로 2차 인증.
。인증실패 시401반환
- 인가 (
Authorization) :
。로그인을 통해Authenticated된사용자가Server의 특정Resource에Access가능한권한이 있는지 확인하는 과정.
▶ 적절한Access권한을 지니고있는지 판단.
。인가실패 시403반환
보안의 원칙
기본 실패( Fail-Safe Defaults ) :
。System이 Fail하더라도 기본적으로 안전한 상태를 유지하도록 설정한다는 원칙.
▶ 권한이 명시적으로 허가되지않은 모든 자원에 대한 접근을 차단하는것을 기본으로 설정.
ex) 방화벽에서 모든트래픽차단 후 허용할 트래픽만 부분적으로 추가하는 방식.
최소권한( Least Privilege )
。각 사용자 또는 Process에게 항상 작업수행에 필요한 수준의 최소한의 접근권한을 할당.
▶ 해당 원칙을 따르면 보안사고가 발생해도 피해최소화가 가능
ex) 일반사용자 수준에는 관리자권한없이 실행되도록 설정 및 관리장계정이 필요한 작업이 있는경우에만 관리자권한을 부여.
메카니즘의 효율성( Economy of Mechanism )
。보안 Architecture의 설계는 이해가 쉽도록 최대한 단순해야한다.
▶ 복잡한 보안시스템의 경우 Error가 발생할 가능성이 높고 유지보수가 어려우므로.
ex) 인증시스템을 여러단계로 나누는 대신, 단순하면서도 강력한 단일 인증기법을 적용
완벽한 조율( Complete Mediation )
。보안시스템에 대한 모든 접근요청은 항상 검증해야한다.
▶ 기존에 캐시된 인증정보를 사용하는 것이 아닌, 매번 새로운 인증절차를 거쳐야함.
ex) 사용자가 로그인한 후에도, 중요한 작업(예: 계좌 이체)을 수행할 때마다 비밀번호를 다시 입력하게 하는 방식.
개방 설계( Open Design )
。보안은 비밀유지에 의존해서는 안된다.
。보안 시스템의 설계는 비밀유지가 아닌, 강력한 보안알고리즘과 보안정책에 기반해야하는 원칙.
▶ 보안알고리즘이 공개되더라도 안전하게 보안시스템이 유지되어야한다.
ex) 오픈소스 암호화 알고리즘 (JWT등)은 코드는 공개되어있더라도 여전히 안전하게 사용가능.
권한분리( Separation of Privilege )
。중요한 작업 수행 시 복수 이상의 독립적인 권한이 필요하도록 설계해야한다는 원칙.
▶ 하나의 권한이 노출되더라도 전체 시스템이 위험에 빠지지 않도록 보호하는 역할을 수행.
ex) 금융 시스템에서 한 사람이 결제를 승인할 수 없고, 다른 사람이 별도로 확인해야 결제가 이루어지도록 설정.
+최소 공통 Mechanism( Least Common Mechanism )
。서로 다른 사용자 또는 프로세스가 공유되는 보안 Mechanism의 수와 사용은 최소화해야한다.
▶ 공유하는 보안Mechanism이 많을 경우 하나가 뚫릴 경우, 전체 시스템이 연쇄적으로 위험해질 수 있다.
ex) 여러 사용자가 동일한 세션을 공유하지 않고, 각 사용자에게 개별 세션을 할당하는 방식.
심리적 수용성( Psycological acceptability / Easy to use )
。사용자가 보안시스템을 사용하는 경우 편리하게 사용할 수 있어야한다는 원칙.
▶ 너무 복잡한 보안정책의 경우 사용자가 기피하거나 비밀번호를 다른곳에 저장하는 등 보안취약점을 생성할 수 있으므로.
ex ) 너무 복잡한 비밀번호 정책 대신, 다중 인증(MFA)을 도입하여 보안성을 유지하면서도 사용자의 편의를 높이는 방식.