티스토리 뷰
Security/Architecture
Application Security Architecture - Design Principles
SalaYH 2023. 8. 6. 21:53반응형
Application 보안을 설계할 때, 시스템의 안전성과 신뢰성을 보장하기 위해 여러 가지 중요한 원칙을 준수해야 합니다.
아래는 Web/API Application 보안을 위해 반드시 고려해야 할 주요 설계 원칙들입니다.
최소 권한
- 최소 권한 원칙은 사용자나 시스템 구성요소가 필요한 최소한의 권한만 부여받아야 한다는 원칙입니다.
- 권한은 작업을 수행하는 데 필수적인 경우에만 부여되어야 하며, 더 이상 필요하지 않은 권한은 즉시 제거되어야 합니다.
- 이를 통해 시스템 접근과 관련된 모든 활동을 추적하고, 승인된 작업만 수행될 수 있도록 보장합니다.
- 기본적으로는 모든 접근이 차단된 상태에서, 필요한 경우에만 최소한의 권한이 부여되도록 설계해야 합니다.
Fall-Safe Defaults
- 시스템이 안전한 기본값을 가지도록 설계하는 것이 중요합니다.
- 이는 모든 자원에 대한 기본 접근 권한이 ‘거부(Denied)’ 상태로 설정된다는 것을 의미합니다.
- 사용자의 접근 요청이 명시적으로 허용되지 않는 한, 시스템은 접근을 허가하지 않아야 합니다.
- 이러한 원칙을 통해 의도치 않은 접근을 방지할 수 있습니다.
경제성
- 보안 설계는 가능한 한 단순해야 합니다.
- 시스템의 모든 구성요소와 이들 간의 상호작용은 이해하기 쉽게 설계되어야 합니다.
- 복잡한 설계는 이해와 유지보수를 어렵게 만들며, 이는 잠재적인 보안 취약점을 초래할 수 있습니다.
- 단순하면서도 효율적인 설계를 통해 보안을 강화할 수 있습니다.
완전한 중재
- 모든 자원에 대한 접근은 철저히 검토되어야 합니다.
- 시스템은 자원에 대한 접근이 허용되었는지 확인하는 과정을 거쳐야 하며, 이러한 검토는 모든 접근 시점에서 이루어져야 합니다.
- 캐시된 권한 매트릭스를 사용해 성능을 최적화할 수 있지만, 권한이나 역할이 변경되었을 때는 반드시 캐시를 갱신하는 메커니즘이 필요합니다.
- 이를 통해 공격자가 캐시된 데이터를 악용하는 것을 방지할 수 있습니다.
개방형 설계
- 보안 시스템은 비밀스러운 알고리즘에 의존하지 않고, 개방형 방식으로 설계되어야 합니다.
- 오픈소스를 사용할 때는 그에 따른 이슈를 명확히 이해하고, 필요한 조치를 취해야 합니다.
- 개방형 설계는 보안의 투명성을 높이고, 잠재적인 취약점을 보다 쉽게 식별할 수 있게 합니다.
권한 분리
- 시스템은 단일 조건에 의해 권한을 부여해서는 안 됩니다.
- 권한 분리 원칙에 따라, 중요한 작업에는 반드시 다중 승인 프로세스가 포함되어야 합니다.
- 이는 특정 사용자가 자신의 작업을 승인하는 것을 방지하고, 잠재적인 내부 위협을 줄이는 데 도움을 줍니다.
최소 공통 메커니즘
- 여러 구성요소 간의 상태 정보를 공유할 때 발생하는 보안 위험을 최소화해야 합니다.
- 자원 접근에 사용되는 메커니즘은 가능한 한 공유되지 않도록 해야 하며, 공통 인프라의 사용을 최소화하여 시스템의 취약점을 줄여야 합니다.
- 이를 통해 보안 위험을 줄이고, 시스템의 신뢰성을 높일 수 있습니다.
심리적 수용
- 보안 메커니즘이 자원에 접근하는 것을 지나치게 어렵게 만들어서는 안 됩니다.
- 사용자가 불편함을 느끼지 않도록 보안 조치가 자연스럽게 적용되어야 하며, 보안이 강화되면서도 사용 편의성을 유지하는 것이 중요합니다.
- 사용자 경험을 고려한 보안 설계는 시스템의 전체적인 보안성을 높이는 데 기여할 수 있습니다.
- 보안 메커니즘을 사용자 친화적으로 구성해야 사용자가 자주 이용하게 됨(ex. CAPTCHA → reCAPTCHA)
사용자 경험
일반적으로 보안을 강화할 수록 사용자 경험이 떨어질 수 있기 때문에, 이에 대한 적절한 균형을 유지하는 것이 중요함. UX가 편하게 구성되어 있어야 사용자가 반복적/습관적으로 보안 디자인을 사용할 수 있고, 이에 따라 보안 사고의 발생 가능성이 줄어듬
보안 매커니즘을 디자인할 때는 보안의 3대 요소를 적용하는 것은 당연하고 필연적이다.
디자인을 하면서 중요 취약점에 대해서 대비하기 위해 기능 별 보안기획을 하는 것 또한 중요하지만, 가장 중요한 것은 역시 '인증 및 인가'
그렇지만 이번에 가장 크게 느껴진 부분은 '사용자 경험'과 '심리적 수용'이다.
지금도 보안 목적을 위해 점점 더 복잡해지는 아키텍쳐 및 디자인을 보고 있으면 과연 이것이 옳은 방향인가 하는 의구심이 있었는데 이 질문을 관통하는 대답이였다.
보안과 사용자 경험 사이의 밸런스는 정말 어렵고 답이 있지는 않을 것이지만, 이 부분을 잘 해결하는 것이 중요할 것 같다.
반응형
'Security > Architecture' 카테고리의 다른 글
Application Security Architecture - 보안 3요소 적용 (0) | 2023.08.06 |
---|
댓글
반응형
최근에 올라온 글
- Total
- Today
- Yesterday