
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 ロングポーリング(lp)は local 環境と cloud 環境の両方でサポートされています。サーバー送信イベント(sse)は AWS の制限により local 環境でのみサポートされています。lp と sse はどちらもリアルタイムです。それぞれに長所と短所があります。
sse を使用する場合、CLI からオーケストレーターへの最初のサブスクリプション以降は一方向通信になります。テスト結果の公開には、テスターとオーケストレーター間で Redis pub/sub が使用されます。バックエンドがテスト実行中に CLI が停止すると(サブスクライブされていない状態になると)、イベントが失われます。
lp を使用する場合、リクエスト-レスポンス通信になります。リクエストは、テスターからのフィードバックメッセージが利用可能になるか、アプリケーション固有(AWS Api Gateway ではなく)のタイムアウトを超えるまで応答されません。CLI が一連(1~複数)のテスターフィードバックメッセージを受信すると、オーケストレーター(local 環境の場合)または API(cloud 環境の場合)に再度リクエストを送信します。テスターとオーケストレーター間のフィードバックメッセージの公開には Redis pub/sub が使用されます。
テスト開始直後に CLI がテスターからのフィードバックを要求する限り、フィードバックメッセージは Redis リストにメモリ上で保持されます。つまり、テスト実行中に CLI が一時的に停止しても、再起動すると、CLI が実行されていなかった間にオーケストレーターに到着したテスターからのフィードバックメッセージを受信できます(オーケストレーターが実行中である場合)。
補足: これは将来変更される可能性があります。WebSocket も将来実装する可能性のあるオプションですが、WebSocket を実装するには認証アプローチ全体を変更する必要があります。選んだクラウドインフラである AWS Api Gateway はストリーミングをサポートしておらず、Cognito User Pools による OAuth クライアントクレデンシャルフローもサポートしていません。
purpleteamAuth local 環境を使用する予定の場合は、デフォルトのプロパティ値のままでも構いません。cloud 環境を使用する予定の場合は、purpleteam アカウントにサインアップする際にこの情報が提供されます。
buildUserConfig.fileUri この値を、CLI の引数として手動で渡したくない場合に設定してください。これは、テスト対象システム(SUT)の詳細を指定するために設定した Job ファイルです。
outcomes.dir この値を設定してください。これは、オーケストレーター(local 環境の場合)または API(cloud 環境の場合)からの結果ファイルが保存される任意のディレクトリです。