
purpleteam의 CLI 구성 요소
npm install -g purpleteam
이 저장소를 클론하세요.
config/config.example.json을 사용하려는 환경에 따라 config/config.local.json 또는 config/config.cloud.json으로 복사하세요.
문서 및 추가 예제는 config/config.js를 참조하세요.
loggers.testerProgress.dirname 이 값을 설정하세요.
purpleteamApi local 환경을 사용하려는 경우 기본 속성 값을 그대로 사용할 수 있습니다. cloud 환경을 사용하려는 경우 purpleteam 계정에 가입할 때 이 정보를 받게 됩니다.
testerFeedbackComms.medium Long Polling (lp)은 local 및 cloud 환경 모두에서 지원됩니다. Server Sent Events (sse)는 AWS 제한으로 인해 local 환경에서만 지원됩니다. lp와 sse 모두 실시간입니다. 두 구현에는 각각 장단점이 있습니다.
sse 사용은 CLI에서 orchestrator로 초기 구독 후 단방향 통신입니다. Tester와 orchestrator 간에 Redis pub/sub을 사용하여 tester 피드백을 게시합니다. 백엔드가 테스트 실행 중인 상태에서 CLI가 중단(구독 해제)되면 이벤트가 손실됩니다.
lp 사용은 요청-응답 통신입니다. 요청은 tester 피드백 메시지를 사용할 수 있거나 애플리케이션별(AWS Api Gateway 아님) 타임아웃이 초과될 때까지 응답되지 않습니다. CLI가 tester 피드백 메시지 세트(하나에서 여러 개)를 수신하는 즉시 orchestrator(local 환경에서 실행 중인 경우) 또는 API(cloud 환경에서 실행 중인 경우)에 다른 요청을 보냅니다. Tester와 orchestrator 간에 Redis pub/sub을 사용하여 tester 피드백을 게시합니다.
CLI의 tester 피드백 초기 요청이 테스트 시작 직후에 이루어지면 tester 피드백 메시지는 Redis 목록에 메모리에 유지됩니다. 즉, 테스트 실행 중에 CLI가 일시적으로 중단되었다가 다시 시작되면, orchestrator가 계속 실행 중인 경우 CLI가 실행되지 않았을 때 orchestrator에 도착했던 tester 피드백 메시지를 받게 됩니다.
추가 배경: 이는 향후 변경될 수 있습니다. WebSocket도 향후 구현 가능한 옵션이지만, WebSocket을 구현하려면 전체 인증 방식을 변경해야 합니다. 당사가 선택한 클라우드 인프라 AWS Api Gateway는 스트리밍을 지원하지 않으며, Cognito User Pools에서 OAuth Client Credentials Flow를 지원하지 않습니다.
purpleteamAuth local 환경을 사용하려는 경우 기본 속성 값을 그대로 사용할 수 있습니다. cloud 환경을 사용하려는 경우 purpleteam 계정에 가입할 때 이 정보를 받게 됩니다.
buildUserConfig.fileUri CLI에 인수로 수동 전달하지 않으려면 이 값을 설정하세요. 이는 테스트 대상 시스템(SUT) 세부 정보를 지정하기 위해 구성한 Job 파일입니다.
outcomes.dir 이 값을 설정하세요. 이는 orchestrator(local 환경에서 실행 중인 경우) 또는 API(cloud 환경에서 실행 중인 경우)에서 결과 파일이 저장될 원하는 디렉토리입니다.