Blue는 보안과 확장성을 위해 처음부터 설계되었습니다.
면책 조항: 이 문서는 편의를 위한 번역본입니다. 영어 원문이 공식 버전이며, 번역본과 원문 사이에 차이가 있을 경우 영어 원문이 우선합니다.
최종 업데이트: 2025년 7월 16일
Blue는 중요한 프로세스를 위한 엔터프라이즈급 보안과 원활한 확장성을 제공합니다. 고가용성을 위해 설계되고 120개 이상 국가의 15,000개 이상 팀으로부터 신뢰받는 Blue는 귀하의 글로벌 운영을 안전하게 지원합니다.
저희 플랫폼은 핵심부터 보안과 확장성을 우선시하는 견고한 아키텍처를 기반으로 구축되었습니다. 비즈니스가 성장함에 따라 프로젝트 관리 요구사항이 발전한다는 점을 이해하며, Blue는 귀하와 함께 성장하도록 설계되었습니다. 소규모 팀이든 대기업이든, 저희 시스템은 효율적이고 안전하게 워크로드를 처리할 수 있습니다.
안전하고 확장 가능한 플랫폼
Blue는 프로젝트 관리 요구사항에 대해 최고 수준의 보안과 확장성을 보장합니다. 저희의 엔터프라이즈급 조치는 데이터를 보호하고 제한 없이 성장할 수 있도록 지원합니다.
여러 보호 계층을 갖춘 심층 방어 보안 아키텍처를 구현했습니다:
API 보호
- 지능형 속도 제한: 작업별 제한으로 남용을 방지하면서 사용성을 유지합니다(예: 일반 작업은 5회/60초, 내보내기는 1회/50초)
- 쿼리 깊이 제한: 순환 GraphQL 쿼리 공격을 방지하기 위해 최대 10레벨 깊이로 제한
- 요청 크기 제한: GraphQL 작업의 경우 256MB, 직접 파일 업로드는 더 큰 제한
- 보안 헤더: Helmet.js 통합으로 X-Frame-Options, X-Content-Type-Options 및 기타 보호 헤더 제공
데이터 보호
- 입력 위생화: 모든 사용자 생성 HTML 콘텐츠는 화이트리스트 접근 방식을 사용하여 위생화됩니다
- SQL 주입 방지: Prisma ORM을 통한 매개변수화된 쿼리로 SQL 주입 위험을 제거합니다
- XSS 보호: 서버 측 위생화와 Vue.js 템플릿 이스케이핑 모두로 교차 사이트 스크립팅을 방지합니다
- 파일 업로드 검증: 모든 업로드에 대해 MIME 타입 검증, 확장자 검증 및 파일명 위생화
엔터프라이즈급 암호화
Blue는 민감한 데이터를 보호하기 위해 인증된 암호화와 함께 군사급 AES-256-GCM 암호화를 구현합니다.
100,000회 반복의 PBKDF2 키 유도와 함께 Galois/Counter Mode(GCM)에서 AES-256 암호화를 사용합니다. 이 인증된 암호화는 데이터를 보호할 뿐만 아니라 변조되지 않았음을 보장합니다. 각 암호화 작업은 고유한 솔트와 초기화 벡터(IV)를 사용하여 모든 암호화된 데이터 조각을 암호학적으로 고유하게 만듭니다. 귀하의 장치와 저희 서버 간에 전송되는 모든 데이터는 TLS 1.2 이상을 사용하여 암호화되며, WebSocket 연결은 실시간 기능을 위해 WSS(WebSocket Secure)로 자동 업그레이드됩니다.
고급 보호 시스템
Blue는 플랫폼 보안과 안정성을 보장하기 위해 여러 계층의 자동화된 보호를 사용합니다.
실시간 보호
- 작업별 속도 제한: 서로 다른 API 작업에 맞춤형 속도 제한(일반 작업 5회/60초, 내보내기 1회/50초, 보안 민감 작업 3회/60초)
- 자동 위협 탐지: 인증 실패 시도와 의심스러운 패턴이 자동 보호 조치를 트리거합니다
- 쿼리 복잡성 분석: 깊은 GraphQL 쿼리는 10레벨로 제한되며 제한에 근접한 쿼리는 로그로 기록됩니다
- CORS 및 CSRF 보호: 교차 출처 요청은 적절한 자격 증명과 SameSite 쿠키 속성으로 검증됩니다
인프라 보안
- Redis 기반 속도 제한: 모든 서버에 걸친 분산 속도 제한으로 일관된 보호를 보장합니다
- 안전한 파일 처리: 파일 업로드는 MIME 타입, 확장자 및 크기 제한(GraphQL 256MB, 직접 4.8GB)에 대해 검증됩니다
- 환경 기반 보안: 개발, 스테이징 및 프로덕션 환경에 대해 서로 다른 보안 구성
- 키 순환 지원: 액세스 토큰과 리프레시 토큰에 대한 별도 시크릿으로 독립적인 키 순환 가능
다중 계층 인증 및 권한 부여
Blue는 여러 보호 계층을 갖춘 정교한 인증 시스템을 구현합니다.
인증 방법
- 이중 토큰 JWT 시스템: 단기간 액세스 토큰(15분)과 장기간 리프레시 토큰(60일)을 결합하여 노출 창을 최소화합니다
- 개인 액세스 토큰(PAT): API 통합을 위해 저장 전 bcrypt로 해시되고 각 요청에서 검증됩니다
- Firebase 인증: 자동 토큰 관리가 포함된 웹 및 모바일 앱의 원활한 통합
- 이메일 기반 보안 코드: 사용 후 자동 정리가 포함된 민감한 작업을 위한 시간 제한 코드
세밀한 권한 부여
저희 GraphQL API는 Shield 미들웨어를 사용하여 필드 수준에서 권한을 강제합니다. 소유자, 관리자, 구성원, 클라이언트, 보기 전용, 댓글 전용의 6가지 고유한 권한 수준으로 역할 기반 액세스 제어(RBAC)를 구현합니다. 이러한 권한은 모든 작업에 대해 회사 수준과 프로젝트 수준 액세스를 모두 확인하는 컨텍스트 인식 방식입니다.
표준 역할 외에도 Blue는 더욱 세밀한 액세스 제어를 가능하게 하는 사용자 정의 역할을 지원합니다. 조직은 canCreateRecords
, canEditRecords
, canDeleteRecords
, canViewAnalytics
와 같은 특정 권한으로 맞춤형 역할을 생성하여 각 팀원이 수행할 수 있는 작업을 정확하게 제어할 수 있습니다. 사용자 정의 역할은 회사와 프로젝트 수준 모두에 적용할 수 있어 서로 다른 프로젝트에서 서로 다른 권한 세트를 사용할 수 있습니다. 특별 규칙은 보관된 프로젝트와 비활성 회사를 처리하여 예외 상황에서도 데이터가 보호되도록 보장합니다.
지속적인 보안 모니터링
Blue는 보안 무결성을 유지하기 위해 포괄적인 모니터링을 구현합니다.
저희 시스템에는 보안 이벤트, 인증 실패 시도 및 비정상적인 액세스 패턴에 대한 실시간 모니터링이 포함됩니다. 속도 제한은 무차별 대입 공격을 자동으로 방지하며, 쿼리 깊이 제한은 리소스 고갈로부터 보호합니다. 모든 보안 관련 이벤트는 상세한 감사 추적과 함께 로그로 기록되어 의심스러운 활동에 대한 신속한 조사가 가능합니다.
일일 데이터 백업
데이터 무결성을 보장하고 필요 시 신속한 재해 복구를 가능하게 하기 위해 매일 데이터를 백업합니다.
저희는 모든 고객 데이터의 자동화된 일일 백업을 수행하며, 이러한 백업을 지리적으로 분산된 안전한 위치에 저장합니다. 또한 저희 플랫폼은 포괄적인 세션 보안을 구현합니다:
세션 관리
- 보안 쿠키: 모든 세션 쿠키는 httpOnly(JavaScript 액세스 방지), secure(HTTPS 전용) 및 sameSite='strict'(CSRF 보호) 플래그를 사용합니다
- 토큰 순환: 리프레시 토큰은 로그인 시 자동으로 순환되어 토큰 재생 공격을 방지합니다
- 도메인 격리: 도메인별 쿠키 설정을 통한 다중 테넌트 보안
- 자동 만료: 세션은 정의된 기간 후 만료되며 인증 아티팩트의 안전한 정리가 이루어집니다
기술적 보안 구현
Blue의 보안은 애플리케이션 아키텍처의 모든 계층에 구축되어 있습니다.
프론트엔드 보안
- 토큰의 로컬 저장 없음: 인증 토큰은 Firebase SDK에 의해 관리되며 localStorage에 절대 저장되지 않습니다
- 자동 토큰 갱신: 토큰은 만료 전에 원활하게 갱신됩니다
- 라우트 가드: 모든 페이지는 렌더링 전에 사용자 권한을 검증합니다
- 폼 검증: 서버 제출 전 VeeValidate를 사용한 포괄적인 클라이언트 측 검증
백엔드 보안 아키텍처
- GraphQL Shield: 모든 API 작업은 특정 권한 규칙에 의해 보호됩니다
- Prisma ORM: 타입 안전 데이터베이스 쿼리로 주입 공격을 방지합니다
- Redis 기반 시스템: 속도 제한과 세션 관리에 성능과 안정성을 위해 Redis를 사용합니다
- 감사 로깅: 보안에 민감한 작업은 규정 준수 및 디버깅을 위해 로그로 기록됩니다
비밀번호 및 토큰 보안
- BCrypt 해싱: 모든 비밀번호와 개인 액세스 토큰은 적절한 작업 팩터와 함께 bcrypt를 사용합니다
- 평문 저장 없음: 민감한 데이터는 읽을 수 있는 형태로 절대 저장되지 않습니다
- 보안 비교: 타이밍 안전 비교 함수로 타이밍 공격을 방지합니다
- 일회용 코드: 보안 코드는 사용 즉시 무효화됩니다