문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
web:신규서비스 [2021/11/12 16:51] kwon37xi [이미지와 정적 리소스 서빙 시스템 image, static resources] |
web:신규서비스 [2022/01/12 10:44] kwon37xi [보안] |
||
---|---|---|---|
줄 287: | 줄 287: | ||
* 문자 필드에 어떤 문자를 사용할 수 없게 해야하는 상황일 경우에도, | * 문자 필드에 어떤 문자를 사용할 수 없게 해야하는 상황일 경우에도, | ||
* 인증 토큰(token) 은 변조가 불가하면서 애플리케이션 사용에 필요한 최소한의 데이터를 담도록 한다. [[web: | * 인증 토큰(token) 은 변조가 불가하면서 애플리케이션 사용에 필요한 최소한의 데이터를 담도록 한다. [[web: | ||
+ | * DDoS 공격 방어를 위해 WAF(Web Application Firewall, 웹방화벽) 설정을 해야한다. | ||
===== 서버 운영 ===== | ===== 서버 운영 ===== | ||
* 절대로 여러 사람이 공유하는 공용 계정으로 서버를 관리하지 말라(AWS 등 포함). 이는 치명적인 보안 사고로 이어진다. | * 절대로 여러 사람이 공유하는 공용 계정으로 서버를 관리하지 말라(AWS 등 포함). 이는 치명적인 보안 사고로 이어진다. | ||
줄 326: | 줄 327: | ||
* 이렇게 해야 '' | * 이렇게 해야 '' | ||
* 절대로 예외를 먹지 말것. 정말 특별한 경우가 아니면 항상 예외의 stacktrace까지 모두 남길것. 특별한 경우에는 왜 특별한지 주석 달 것. | * 절대로 예외를 먹지 말것. 정말 특별한 경우가 아니면 항상 예외의 stacktrace까지 모두 남길것. 특별한 경우에는 왜 특별한지 주석 달 것. | ||
+ | * UI 관점에서 사용자 행위 로그를 꼭 남기도록 하고 이를 분석하여 개선 방향을 도출할 수 있도록 한다. | ||
===== Production Server ACL ===== | ===== Production Server ACL ===== | ||
* 운영 시스템에 대한 ACL은 개발 초기부터 망 분리 등을 통해 운영시스템에서만 접속가능하도록 하고 **절대 개발자 PC, 테스트 시스템 등에서는 접속이 불가능**하도록 구성한다(여기서 말하는 접속은 서버에 대한 SSH 접속이 아니라 DB,Redis,MQ 같은 시스템, API 서버 등에 대한 접속을 뜻한다). | * 운영 시스템에 대한 ACL은 개발 초기부터 망 분리 등을 통해 운영시스템에서만 접속가능하도록 하고 **절대 개발자 PC, 테스트 시스템 등에서는 접속이 불가능**하도록 구성한다(여기서 말하는 접속은 서버에 대한 SSH 접속이 아니라 DB,Redis,MQ 같은 시스템, API 서버 등에 대한 접속을 뜻한다). | ||
줄 420: | 줄 421: | ||
* Sprint 를 1주 단위 정도로 잘게 쪼개는 게 좋다. 목표를 명확히 가시화 한다. | * Sprint 를 1주 단위 정도로 잘게 쪼개는 게 좋다. 목표를 명확히 가시화 한다. | ||
* 스프린트당 통합 테스트를 목표로 정하는게 좋다. 허접해도 통합해서 뭔가를 보는게 좋다. | * 스프린트당 통합 테스트를 목표로 정하는게 좋다. 허접해도 통합해서 뭔가를 보는게 좋다. | ||
+ | |||
+ | ===== 외부 연결 정보와 인증서 관리 ===== | ||
+ | * 외부 API 연동 Key 혹은 HTTPS 인증서 등의 목록을 면밀히 관리해야 한다. | ||
+ | * 특히 인증서 자체의 숫자가 늘어나서 관리가 안 될 수 있기 때문에 소스코드에 API Key 등을 두지 말고, 특정 저장소에서 일관되게 사용할 수 있게 해야 한다. | ||
+ | * HTTPS SSL 인증서의 경우 만료일 관리 스케줄링을 하고, 관리 주체를 명확히 가져가도록 한다. | ||
+ | |||
===== 신규 개발 조직 구축시 먼저 할 일 ===== | ===== 신규 개발 조직 구축시 먼저 할 일 ===== | ||
줄 437: | 줄 444: | ||
* [[: | * [[: | ||
* [[java: | * [[java: | ||
+ | * 개발 시간도 아니면서 개발 시간이 부족하게 만드는 요소들(배포 복잡도로 인한 배포 시간이 너무 오래걸린다던가, | ||
* 기술 선언서를 만든다. | * 기술 선언서를 만든다. | ||
* 장애대응 방법과 태도(비난하지 말고 함께 문제를 해결한다던가) | * 장애대응 방법과 태도(비난하지 말고 함께 문제를 해결한다던가) | ||
줄 449: | 줄 457: | ||
* Test 방법 | * Test 방법 | ||
* 그리고 지속적인 회고로 기술 선언서를 개선한다. | * 그리고 지속적인 회고로 기술 선언서를 개선한다. | ||
+ | |||
+ | |||
===== 지속적인 업그레이드 ===== | ===== 지속적인 업그레이드 ===== |