티스토리 뷰

Web Analytics/Analytics

API Security Checklist

SalaYH 2024. 11. 15. 03:51
반응형

인증 권한 부여

API Gateway 사용하여 인증 권한 관리를 중앙화한다.

적절한 인증 방식을 구현한다:

   • API 기반 인증

   • JWT 기반 인증

   • OAuth 2.0

   • 기본 인증(HTTPS 필수)

   • 상호 SSL 인증

역할 기반 접근 제어(RBAC) 적용한다.

강력한 비밀번호 정책을 수립하고 다요소 인증을 적용한다.

로그인 시도 제한 계정 잠금 정책을 도입한다.

토큰과 자격 증명을 안전하게 저장하고 전송한다.

 

입력 검증 데이터 유효성 검사

모든 입력 데이터를 서버 측에서 검증한다.

화이트리스트 기반의 입력 검증을 수행한다.

데이터 타입, 길이 제한, 형식 검증을 적용한다.

인젝션 공격(SQL, NoSQL, OS 명령어 ) 방지하기 위한 입력 필터링을 한다.

구조화된 데이터(JSON, XML ) 스키마 검증을 통해 처리한다.

파일 업로드 파일 타입과 크기를 제한하고 검증한다.

입력 데이터를 표준 형식으로 정규화한다.

 

보안 헤더 설정

HTTP 응답에 적절한 보안 헤더를 설정한다:

   • Content Security Policy(CSP)

    X-Content-Type-Options: nosniff

   • Strict-Transport-Security(HSTS)

   • X-Frame-Options: DENY 또는 SAMEORIGIN

   • Referrer-Policy

   • Permissions-Policy( Feature-Policy)

   • X-XSS-Protection(레거시 브라우저 대응)

모든 응답에 보안 헤더를 포함하고 에러 페이지나 리다이렉트에도 적용한다.

 

OWASP API Top 10 취약점 대응

Broken Object Level Authorization: 객체 수준의 접근 제어를 철저히 검증한다.

Broken User Authentication: 강력한 인증 메커니즘과 안전한 세션 관리를 구현한다.

Excessive Data Exposure: 필요한 데이터만 응답에 포함하고 민감한 정보를 보호한다.

Lack of Resources & Rate Limiting: 속도 제한과 자원 사용량 제한을 적용한다.

Broken Function Level Authorization: 기능별로 적절한 권한 검증을 수행한다.

Mass Assignment: 데이터 바인딩 허용된 필드만 처리하고 민감한 필드는 보호한다.

Security Misconfiguration: 안전한 기본 설정을 적용하고 불필요한 기능을 비활성화한다.

Injection: 파라미터 바인딩과 입력 검증을 통해 인젝션 공격을 방지한다.

Improper Assets Management: API 자산을 체계적으로 관리하고 구버전을 적절히 폐기한다.

Insufficient Logging & Monitoring: 충분한 로그를 기록하고 실시간 모니터링을 수행한다.

 

데이터 보호 암호화

모든 통신에 TLS 1.2 이상을 사용한다.

민감한 데이터는 안전한 알고리즘으로 암호화하여 저장한다.

암호화 키를 안전하게 관리하고 접근을 통제한다.

불필요한 민감 데이터는 저장하지 않으며, 데이터 노출을 최소화한다.

암호화 키와 자격 증명을 안전하게 저장하고 처리한다.

 

로그 감사

보안 관련 이벤트(인증 시도, 접근 권한 오류, 시스템 오류 ) 로그로 기록한다.

로그에 민감한 정보를 포함하지 않는다.

로그의 무결성과 기밀성을 보호한다.

이상 징후에 대한 실시간 모니터링과 경보 체계를 구축한다.

규제 요구사항에 따라 로그를 보관하고 관리한다.

 

안전한 디자인 원칙 적용

최소 권한 원칙: 사용자와 시스템에 최소한의 권한만 부여한다.

실패-안전 기본 설정: 기본적으로 접근을 거부하고 명시적으로 허용된 경우에만 접근을 허용한다.

심층 방어: 여러 계층의 보안 대책을 적용하여 보안을 강화한다.

책임 분리: 중요한 작업이나 데이터에 대한 접근을 분리하여 관리한다.

보안을 고려한 설계: 개발 초기부터 보안을 고려하여 시스템을 설계한다.

보안에 의한 가용성: 보안성을 이유로 시스템의 가용성을 저해하지 않는다.

 

취약점 관리 유지보수

정기적인 보안 점검과 취약점 스캐닝을 수행한다.

소프트웨어와 의존성 라이브러리를 최신 상태로 유지한다.

취약점 보고 대응 프로세스를 구축한다.

보안 정책과 절차를 정기적으로 검토하고 업데이트한다.

개발자와 운영자에 대한 보안 교육을 실시한다.

 

기타 보안 고려사항

속도 제한과 트래픽 제어를 통해 서비스 남용을 방지한다.

IP 화이트리스트나 블랙리스트를 적용한다.

API 버전 관리를 체계적으로 수행하고 구버전을 적절히 폐기한다.

보안 모니터링 침입 탐지 시스템을 활용한다.

CDN WAF 사용하여 DDoS 기타 공격에 대비한다.

 

 

참고문헌

반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday