From 5f4c0d0c435fecfdf42a8087dcfc30a6ebc9d15c Mon Sep 17 00:00:00 2001 From: CharlesLR-sekoia Date: Tue, 25 Jun 2024 17:54:18 +0200 Subject: [PATCH 1/4] add_best_practices_page --- .../getting_started/playbook_example.png | Bin 0 -> 93979 bytes docs/getting_started/best_practices.md | 93 ++++++++++++++++++ mkdocs.yml | 3 +- 3 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 docs/assets/getting_started/playbook_example.png create mode 100644 docs/getting_started/best_practices.md diff --git a/docs/assets/getting_started/playbook_example.png b/docs/assets/getting_started/playbook_example.png new file mode 100644 index 0000000000000000000000000000000000000000..f1f4bc9e3eaefb447ef442772de174d667266613 GIT binary patch literal 93979 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

nV@zXwQ$CNxxJ9F?lZU%K=IWEsNbSVzw zFm-*1ijG0Sbi#E~OzM_VrVf_~1THS3bm(!0`jJ8S_NoQVt+Rppg|ejT zsPRGj4h?xXR8}~cIT0gqy@c*y*W;+o(T25+Hx3@o7o#G_T2O<6zS0#B7RlwgS#i1+&Gn1K8|iZ{=DmWj2v_HGBff$RzZtEgx~c1y{g!w+ zno&r)PEl=gbIEyf&X2x5{=H=E2Rh8R&MdF|xACi?btbk)_EbS$zLoUhHq2b4SbETb z1=1X=eTN+6Q^3FVOL~qNDN&VjLd4f)_6oe$$G}cqo6MQ4`iWyq4(1uMOr-~+{dmGj zN`8F!?a7aNVqMFsxkIzpJJP#{an9JPz`!A4wt12#fHEkbGEXK=sPBP+(Xw^?{b3)pd3 zaH1X<6@kutAUI8XU^@)ouK)vKVY*Uw>cBuY&rn0qGyRpS^q%=qivDlf3`~wn4qb07 z@Yu1r3OUL$79&8*>((b{m-~Ew2fnF+>&M|dH2CDfGc3qPwn}9lXsM%{4IL`f72vx1 z%#}(!m?v76&2rh8Gx#Z{&A?9R+KU5^`}FA(AjqVFi@@Ka{fc{vDWDq6=}pqrPLW`b z7H4>Ag|>71TB!dfoK;E1^oiwXm#m)=7>kl3gqWl~+7a7#QQngv;MUiNd{J|t1@kzt zy9W2*2M6HLv08>J_Gr8AuivKY;SnwZH?Bgs{C(fUVUt=kzfTXH)>V-D4XorR?cxvl z`w!wY9zF7hN>BcMb8)|J0INmHl+e=cTTtLQ1JGD-pOVNW(YL(xY(WN$mJk1UhfE}~ zWN9&PuhBGVM?1)~S}*tc$U+Sr!o5&y6W|5&c0wm^MzAQ}Y-#nuu(78fc+^8j6dAt3 zt$hx>$DzOrG%Igqv3--Z;Sq0~eoff4VZKQojv@ZyZG3dL@xlqDHJwETUHrj<4;?l- z^9^3~poB&EK$Wk!f9OumB@7O7!w(){fQHjSwHVi76Ep2yJw1)V=Hg3HVDpEYIIfw-^CWU8d818-$edABP| zNUHgIQBZhWJH*UTxQSCTg|$!|opo~(YOZ>v-7E>YX|DS9!u#x2aKHy?^EgaI(u3*m zP&tIXDN^uQqNW`jc+-94U|wlEhjiP!VKLzYq5 zCAIRy5)G}}2N55nt=SX{@`(jw698q5XAd^X&FT(n=7Jci?Kq10rnQxGJ6UPF6f^4+h?w*9CC}B zKD>Y4$?@C|U4x^QG!ISuV$RDXUv+E?>`97vQ&h$7CUu%YMB)q@Ui9NU_!#KlPw>4C zp7449ngSsXIU#f70>Z0~x zK~#K5ML`+_L0SeJ92$|9P`XiK=o-2a0g;mKl5V6s6zPsZYLIS_Zus{2Jo>)xcm4k3 z;+k{L-fP`!t$W>j?{lWO;0_MZPhze=$|v^8g#8X~BA`z()=fl9KsD;fnZ2Iz<%`%7 zhZegcV`y`#tZZyG%O97LieE!OzhR0y{xO`S5W3C{Xm7-Ll!|C=QpNF`IGy4>^l^C) zONiGyFz8FR>Dup;`>!C8P(9CJko%u8_B;e*RNwhr^>>W4-UJ01$M@wu6w#Pvlkbm@pXqU``uCeK$hW+%ilb_X;CGXBXG7IASMfmlhG5ep&(yW5U z%YDn6fAjf6?Dz3yyoe`Lpqz3(h3n%2!hyaII$lU;SyU{Ev$<43i*zq$p}P~opjnR- z^B>Cux!DyRo2vDsY=6vfn})Ecz`HL|yUd~PHz6pbQV;<*a}@jjqE^1o}nxAT2I`=0S1q#7n^+3{uGhjvQ^-J4-M^L`!2 zUqlP0{LKERQWOH#Ho-iFOZ>;-FTi&(Y1JNXS+qkr;fh2Dl3)-ztMO%-nZ6Jg1A9~6 zuD^uHOZX<3Qg5o>pz@!H7>WP^pkjq9PU>^qj*Ea^zU(bGMkZ?4xRi~I@^ro#Htpr^ zhW(j}a5EBZVM>pi1b?a>KQ_qEMN3i!{6f4{e_=) zlTEt^n~HLD7^P(x=U>$62>~W>7zm^LJFq@17YLk@3exk$;NXksXtKcR2OIOqdvu;X z;}0-2>iH94XA=qC27A#ixm0SjWh3VvAdlFdZ`>x{{`wb#!p%Csahvz8#Q%l{=5Lx} zq*u7sza_xtC&Fj6PZKo$>{okY@bwosvUY$6!7lgr0)uxc<@xtQR$lIWmqAK;c#F1$ zQofyK*TVdp|2D*~A&@#dM&*C3OYij?R6!Y`gLL_L-=wKQIuy7DnqaQ-q37~X;Y>4c zd>@bfPd>cUqi%%p$8dxn!i43?-zB-s8K_sDBXX^NS>04oR+bZg6I9O$*T*v60Zh37 zbzJ0mg(|Jel-;GoH<_CL>ZeCciXi=S6Lec())dS2_76_xUeXNt>Ge03|M-E$3gnin zgm1h6hwB?}YaofRIy6V_jRtJItI>T#^h2qd<@bs|vl0G(l_3CnO>J%31fDVSr?3hs zzOB?2G$>wae-Wz#UC3?3GlauM8>Key2;lMMRn8fy10qR_Bku$2{=%LXc!Y~y!H(!p zB=4iKY+-C3y~x62Z;4fDp-D&TYl96iLqVfq{PpFMdFuEY#{Ji-WAq@n#d{6$|I7}E zNn7Y1p6gGLc?k!h`EOe98t%7V&Gq2Bwf)Pah zXCSfI)ml_1C;i(I>7itdj7j{?O_lrNQgU$1aNNdR1T5DTb4>TjD~Rl=LgQ{!x=18Frctjt)pL3#nyH(A3{wE8O~U;*284gG zk@3+BYE&U|wwIE^W@y-OxGw%{9p!C>OAQrv7|jn3m;Pw5n=zZa=Fm2y8uK(Kf09n< zY#jDl>HT0*kXQUPq51SFrEPWB!(vjcxFAa#g1@8vG>AqAubUm!pJyxG{ZXE)Gb-q= z;Wx4$v+aJAq2%!0;mE_RC3|-yV!NwA{Z@AXBb900PWIbokWiDD$ldl=wOJQw37B6G z>Tccs8?O*=bhGp#K=3aVqp>b$Hv2o<@a%0zm9u58F5PSQZ6+(lom~h2xowUGEzf$5 zpHS(kJyA}fcGIqF{h*Wj>Nta&o10v{yTRqYp>Q!*U7%4nnZe=XRe?V-NGQn;lI+6n zlI0(38DMz#3r;d~Ty2Z0S2@&C*c?BA9hB!zhpf%ElXTg%2W|H}bOYJzwX$*_`=L$z z_4TpMPm|kDI(Au01^W0KeX|GF#Kd%| z%P4WK>cI`iQ63qe)5*nM;oH9r2?-K*P0)-#s_aHJSj_F%NqRJj0a?{{^&U{Rxr*W&wm+WJ~Q}Z+(}9*tt*4=)7t|_xpOO%Nn-M~BWY3nGF+-D zUDBU5m5a^4>$?Ft#)U%J=g&&ar-$K%kQzi*?xzq<`? zs=f<=RN$gtIgp-{Bh1UoOV7a}?=GkIbMo!GCz3#))W2OlO*P)=?g+mdc6qTB#Ff=e z>px{gk=JjA{KZ4@$-Q5evoxU85LG|Cb{Sfa} z1gkqv?|*Tntrp8s(G{5l>gUL&H3rs@w{SVw+!<{V7JuZjh4}3@;Zvd?4X(unx=o77 zo|o?Pz5O=xH@n41C?hT@v;7G>tU-bxr4p`9NyZX9)+^-y)$A4rD^rmZbp9B|+5JEC z8xjYqjYCTvOD%4`i?A;cb9xqLhaAyEs$}@}6-Q=aR5hl{BwIe>8v$PjlJx;U)?Hb^ zX9wS#%s608Csi0J76t zKn@uESPCa%o5LTOEwB-^=AUjPd;t4B(Fa)1&1{M^n?&(bUdb%6 z?$OcR2K>pV+i}G^>K;i~n1Apax{{zEND`XIln8m(ZMnRv7ff+mE+rDaj)6`80l?~A z^H72N?J2jth}Swg4`+_sYz}>!JASj|W*S1RK*cM^6x4U1=i=}Zc1WTVJ(sPu9og?V zu6^{&i+Q}tbdk7br;S4dsD+Y*AlqPhXR4pwMW1(MdHOWUc2KPS2MH$Kzx||-R}m*4 z=*Ya6ixIfag4o*c zKgLyZ8_oL7tk@%b#PP%P@*oMH^kUJOaYGc)C&4d98M$aJllO26CId>fk%=BDG1}BP zSnqhGCno108V`glKLkIKYWEVN^cSf zH7fXxQqY)w!y( zW^mpw?x;1{_?x3NtVYrny@a#w0NHBo=qX6&R6LbyQ?2%Z8r*b_=7sig@<*~ zRz*WN4xdnxA9%2pYYG4Vs4W77YQMHVUNqKOUf{#r#MzAQmod=YegT1RyBaqt9j>$S ztsN?$Xz1wvjS@Sc(RUYk3D1F1F(h+3mXHFPmvAF-7G3OCyuJD&@dQD0pGC~b#h{PI ztZwpA+M5njaGLZ78T4lN5A0zZ^q2s5z`)Kx!-P2p(Oxl8npf+$MQT7y zB1j%?VSz$Uvjy%o9};mzO`9>fUoiw`dSS2BHiJS#@=HmCVL$g6)irf5WLvLY+ zIXk81C(A>{y165uFDjHz=H?G^Ok={P_eV2*p$|^3gUlvMhJ4Z=aSTT~yv_VO~`qMfIUbh?iv4)xW$!u6ZJaX@;@) zm5_SJB^W~^Q_PtSAA=xNza@#@@@xO%Wg4v!Y6#QpfT0rg$MXFM0nUm zfR*PZLyxi0%}4k9|KC&}Vg|+(gbfWnCj}~1p!j!%jpv|{)a^&$-Ne*J>H!}3TA<{) z5hZ6IyV?UrG%)^R&g40$RWM3jMCvTNCuL_^4kPS*$g;FC|%Cn3*lvPscc$VF>Y(x+3C?7(rGcTL*jxWOR7 zfu3Nr0SzcHy2uQ)I##R+G0K)UDlLLb^~WqB@HheV{Y$;T+=;QmXfp%=WXlQeQ1+lN zjw9wgMJHGq8?5KuWGkwT*>Y60V4W%i#>N-|u9*8V1d{nRZ**EnC<;r{9e)9gnee$& zZ3rFP8t=X3(8iR+!CdFr`cX`+9A)@gEjESNJ)MZ~Lo~4HVFgc&l)gR!jyR=#4@8+Y z@B5JT4>p4+zrEjRqX`Cf$$IrN@`3V+ zoWGK)Y6s9%hKtkpu`wC`m*mjXN4zf@09v)Ub%t15wC?O}hmM@BJD)wrf!+uu|J?Cl z=p%Z_zCL}whs*@(I;CTelX|0V1VH&G<@_p1Wo1~!GexrdmX=Xq?3E&hz0olTYvz@O zy^jjlQ+1!k&W@ru1Zm@35 z45318a4*YwU`0m_)5xsv9pS%u?GG3;IDkX;gYg8q6@WuX$)44sTRIvHtan`SGv&xG zzhJ)KIRQKR8j?HC3H&Ai-b0BVMFu&z(k>ADqEj6Fcl?2JTjXo-2h;cdUbJm9?qg^p zDti~h(M-!|Q-xH~H8qGzJxRqqgNyJ9sA))6roP{`OaM%#j4?Wh-W>#XmX-O6x*ysZ z1I>dLXxyRk<3dmP1a4J5D>Ia@N?ZQh2F*9YWfp`6ezCUbrxIXLcA%H)$BAFHp%IV1 z&WqvKiayR_gQIFU^`-S4;eW4VKwo#)*e~wSXv@&cPf+nF&OhRz^>Px2bOiID&A}-A z+P`(c97Hja!P_X72@S>9=TrRT=q#kKL`noKj$wvHTwnLO+ZTxYL1g6(GJ!uH^pL3( zN#F5Kuyj$&%V$|I)8&JT3H+@5H@wZkNIMz&E;fMMkRh+&J-5-fRjB92M;kvKyI`g| zUB>flpFJ8R{){I=x_NnB5L13TWFr=`aGKq5>f{}TO{*I0V1()LM$2#3^*4!vBD#fzo!bSH6SlKw-9vMLy#4;w+^Ck4o-j$*bBy+h8e@s= zfsu)$vjIrfNb*@}Z2H*dXg0i3cZqcKsS-t$i&+h59BuO;M(~~j*D#D z`01&UiMe^mvW59L@>Be!ZA(mO_^z$A%@145C&t*q&4*~92;I2$2@8x~%BzR%|43yn z4}Z0CZEqZH{-=|s0g+=V7;32Nx~cEH-n%%2+=7x(zE)&1bpM!{k)Z&JtC;N^f}^fH zJSK*2@qXq|mDa`Tn2gH-b7}VgDY|H2VA}yU8Et~$-HOiA{Q6sZTxi4LJp1MgNFUg9 zbjN9Bw#s1VbHBkrYNIVuoh#U51r*(XgM@~V8vJ@^R+5Eq1vGxFd)G1lH?IIcTJdWx zH6&j|x#~u7>f=Ysu*c!i{Ry$V=sbm?U~(6e7R)>DE>QBCPwgicD3w#2Sjf4>nR8&=Q3J&tO9@Soa14K4XW-ExeD7HbuazwP=diik8U8$l@0cCv_vI>y8{IhcKcRcjxov0(aQ8&_Q$! zGfq<2>KYV?=nM`5o2Tb(<&u>ofq;wRh&j%N$I1Oc#uk%s9Lt7UB`!4AJ zoK*y8l*TM#>;;aj++9O(A1EYCiGD67lr#gzHKC;9jbXw{cG(qhUN2nKhEg)I_QW9i z1zv)eq)2Ar`g;6UWdQT4=ie3`e^n*He0C7Mqi>dxm&Y1XI9Z&lJH21Bp+YK<=8r00 z%N7zCKDPCCarON-%YZ?wV{_Wmv#E^SuxXe5G{5{(QY@zWUkD1*u-u+8A-vA*$;FkV0gY3}enW)Ka&55CPr{q=M}FQ4uZ{@W%LxZpJz zl{9&f`#WQ%jhA^Bs6&i;xfWjji#TC=%xS}ZFzx`d8Go;*U}DH>oBLR`gvRDm`K55( zm7e5BX3=I>#AbaIzBjCEa1Aa zA!^V!6)^bp>-g_f3*7pGUeBQ4QenId_K?@?aL9^MzHt1*$TJMgL3BrzJno@-?6#)O zi;wLl@-vrlCh7)`s-&f5k=Aiky1_S7 ziSgF!kn&i5a68DCfUhf%#@xVMDZF9)hP@>*INVVFt?wtX+gv#EV-;AQS9R^JaodsL z({wWG&z}3;WAjeN!r=^zW>}sK5UyO=T(@G2n7HGU(@VVEdA2_s7!>^MU_DB=!B{0x zGrQ&`Js88=krf2!z=<1VZ$*z!_$PRreBkD(>I(I+`>2HXxF7ij!XAM&pc#?+nI8{< zq%YAMoH*L1ptV8L3zH`zXLq`?WZ8CGiS{x-e-79+>;9zP0`4FyhUZ*?{JR@? zK1f!9zA_wd^WjO~?Lu7gS|4%cGNxGHfa!ss;r3?a3nwI~NOcMMu)zvt(1UpUMpx5o z-cGF=CsS{`FONB%RkdRvs(FTOj+%OiGxBY~ex0YYW|@NJdVXL=Dh&ZxA;V6s+DX8U zEn`r-`QB`1=2A66w8`=_lU(O(Oe(`3kJ@^5Q?oNkDXHY@X&n>PdNiAKk9ZL4#hkxN zG=B1%xQB#K-W*+Qas=ExwO0(bxriX2H9KRlYpXE?;QzUcFZs}{s64t=vvD~$uacq7c-|pq%xY9)_WDB~77daPgh<%@P(Xz_~eMRp3*!Dv@$ z|9eIS)-xZD=T=rS`o>>(?{ z7pJ%6NrnZYceZ9O=N5Sk5Qytp1y~p4K2X$#2}c>WK^dyC#=6EO;qy1_55sYcnw3vG z632-$3J3@`KPP39BdaxalZnZ||AdfVd>?9ar#%tx8#K|{L=k!%I+Hpb zBha0t7m!e}IKCx0YOFmj>{kGVi(Y*a zN%(+0V3bAJ;n3i|Hh#2F9+BPUx?LQNp}aVR+KN8)Gm3Lr>3Dhj)xkPP+>HwhbxagJ+k%+Z4^j5^ zo27;_f&0aF3=LLOPwWA3T1(p#H(L_%pgI+_`6)E3O%ch}TP_6d>gej21e+`#N?XD$cF&;UH$ilNeeQp6fp278=plQ| zm{U%=ti}cJK%=>a=S{Xnydeg2JNnyLhYh}So&y1>Edt8I>302fqnIFyafz<(y6!~# zZpM^jE_gmcMuEs(!CDhnoPDT;sA&7^m)9DCDXwvk_2+z>kC08N`)brzq}!zGux+Az zV9W`p>(AQ|xZV(KWzGq&ngws7;rhiU0wPBi$tuPPEFP_8q2EI-11}tU4 zKECYITmy<7$m2L6V+E|daGY9k_F$EFYqF}UY zH$CIR$O6@xvWe8q6@{zxf_n`tv~2~{WOEf(yCCnVmuBb~_D4%g1t{`U6|bB+YF3ta z(fUU^a$3xvab{J#d^mv2lGTXG6Dh#eh$#}yErTQQ^r5O3@~P(-<7IL8luu2ggsq7Q zTqXs?${jq}`5Y^md@5yc60pBoe3#hPH>hED&~yvGHL~JVy{By*OabuSQt4|APbKhs zr&ESY4TJNF%+rR{E{Khj%ga|lPzE1ZyrB)ySTa&ROaaqiY>O=ei?tSAYX#~SmG_C4 z$TIQ%`A2dFAdT0iT%^vyBH~Tgny8f;#9Yn9O)$4STp6p}Yg75A#T$|2@(Sl*RyWUp z>p(O8hubGWlE&%F2h`g>@x&*(iK%AO784^w&b57Ow3?tCxF-3dCRk8GP<~+Hsg35u z%`TJaTBF=zE1s^R`y|Vx1QLOPluKT=(H0=LfAJ?nKnq}X#fjcfqk|Mo!;EK2OXkUP zHuE%yXc*W;hRw}gNoHj3>gxZd?=f$}DBHr8T8!^vmHg6x31isl5SO3uk10FcWvb$v&%~ zefUjmSzb@UKD*(qpVuI*ER_V*s*?#`MT2G8HQH`#@L;gTc`RjAKJ$9N=VJ@KZCLnb zx`b7)*n`5S?Ez&pgdx{lx~EF`z+}&Hg%Q1Fb1$*q-xapfPaujd6NoLVy-b<`JG{yS zZEB`pk2k5Bx0bD#wz34i>r{CC{O4Y8-J_XR?vJZx;50y4?H22jx%Af-*@&0FE$rtX ziezwpYg<=)m9El4S>adVIHv-G_eb_8==-@`;8Ghq4a0kr~DJ>xVwA7Ty& zs8pW|6AjEQ+C2*jzR3xXBXXc4v;;oe5+WMVsB?!ruzCoLACM}Y5ceFQh??oY8-guW z2Za?i-muAF*m`ki1o!~xWDKnP?U!{d(fR`SmFj;mF)(L|17R@1^m+_KyjYg;mo#?E zE6oYaD{P>V?ssjACIg{pT8$Xnr}09?hhAUT+$(rSggF>nR$xWfPXbEfQUNx#Y_ewP( zV5L16lSF!7j4l63typ?yLyYc?uA_fxkDpreO!U+9G9S08RjW_N$_4?lSX(S7Lh%vN#rCYt=)1Q%1tsovsb?>0Up<1s$nRs=& z?%9UIv}LFhzYY^~mplu_2UWCUMGrP^7r=fR7sBKQlQZpSzmt%3Pt`a5il zn(dGo(YHBKApw^9f+<`#TC1%;O3?I!)(Q`BfwFOIi&d$^h+IrVRDJIcw=;0W$i zHMvS&?i`UA^v1ighH~8}Vb`qGfm%*6F(yCzUVX7KE)=!9d)Ik?aQ*dQQuPdCzKycf zdNzAElY{cU@}xvxt%h7IB1da)crR$(vSv}LWPw zI&YU)ENT*Bv}!tm=N7PXeTNP*rd0(nygXY4<@G5wWqy3VX9#Mq_{vv1B6eG3w|_%w zlKtfLs`Gp-W@{|h%5Cp`UxnJPYd7U^5{LwW=doq98-yHt5uJHX7UQKdar&wszs-IU z#V2JZ5IWzpv@(SwRB+C5I2t(ibkBTRvMNS1offlL>)Ou?o;VuOR1U^3wJdE=I`XFn zA=_VEz56wa6B@;{#1XY_d0v&s@0bU%;2=s8<96O%d|dzu*{+^<1)^Mk!rxRI&# z6?eCpheNWK+n`O7wpycGdZKODLDE%&u3L(;X6t;!+FIl8`?qP6ID+74OD>lOjUq#E z_@vd91n^oK_R6D5|Y)ane zqO4fIJkt%%K?rc-o}=!P$_UEnRj!v8T_iqf3{Gt!>6=bAJr_MW zIKsxBkG;!d$xh)^yxeb>36_h~){PV3IEFXsNL(B>2}Qgy#Ur(($Rcv1Tm~vGCAv$$h<4 z6IWmP>T_e6rQ?t78!`OH3CwSPxklN$RNeKFiV*MU%$_!8eSo=Cpu;+~pC5>pce_t? zPa5{wnUok%9N-P8pM1;~Dm9zZA_{_PT1FdT4ar!EIc)BC`3LeE9Q;$f zQFPR`Odd(N{1KNtE+6s>u|SgvUH}%)Xt)TQv(9QlhY4L=S)Id1^x0OOh5$u=e#tR~4*o zX*@F7ZP?r8DfLWy*uLv}W(07e`US4BdtQYMVnu4%?j%PN*T++6=nC4l-+k4wCqH8l z`51gtbv?84P2YD2Kon=wS5P8$%3Y%Y#032~hCKuowif^oIl!`L1RdLub=ALs} zjDnLAB+k17wT403HSPsX!#?y3Sv6fK^={c;2geen!qG2ipZsm_mw)=^0aSkt%_cvqceAk+Y+|@YY*W(yf zwcSIyGUC`{v>o!RwOkZK+&|w@+wVy@O4D*#)x|{|=4Q{JIB@8WU0asSOPKQ7shxW1 z?RL_dNZhtEXKKZk8ZOf)IQ0v_M<8cSi2|jxp`oP{mBj2x&X9%XOL57i{;L;_pGz&} z`Rx4?ZQJl(y9@g!TF)sRjM&x&k@K}aV=ONaX-;fd>naP*PVjtHyt)38-aUx&j4fTD zL0!!{7-ju*;khn3o`BWt*G0cqjke#Hne(0F!fvFS)vwuLT~fNp{&a1NRk~teK~#SJ z95dJyGpacMQ42V9GYqUxt}5G-Lu{^_PDjWgDeh}97^ut0M@ zYE0LzJDb|^vA~-1`H87~%WXvp+a4`{CFN!5fU9<`=L9So`FxSa4Z#L|H&KV!mvPh@ zqJrhY?6p_LBzQi`)B+cBgaz^#czAtN8**dso^t8+-8?0c67r#L&3aw;Fs`ia*~=%m zRK>{oOzNVrTtx};Db<1rR!W_eDf_dd+Vjh_rsA3E+x6N+1E&LrUpfEr_*F3ZPq03} zkQyuTyi`ObBv_bt#R6K4j+WCi?<&~-)F45_DYb%;L3+HpZk)FNYUTDx|JA~SsP`G6 zyv3lVsCW_E+VC*lqDwpBfy{qRE)bnk4uRKi+=9l@D9ab^Zd)^WEH!F@Pf!%;ap`Pa#Vkdo$ z^3YOUj{08&(LLi$dl z4~Tn-IBW{7rybK;oOuSbUcrlX9ompwDzIeKQU}@tmZuX}i8Hba>EnlvXyv&~o`fs6 z26-Kiwns8CIUAG}3LB$*5`OsoQSoa$KRBx!3xmLVrKiF5eNAVrAASz zhEy(@&Y}Gs@k!4{Q^vWBKQv8=Jj7?g5ogoUZ^vCd$0(K^oUobUUK=sqdkyb$P(=!l z72+H<`~*T!o1wfRUM-7&b<2$=)#6{FoI06x>qW~8O9|ARYtfB+eg7Pk+XU_$Bv0Uf zh-Z(pR@l_5Ii3@erao}-W0$ecbLmB`?~obdIc!_1%vXyQDHLy3Y*@rJoiExrujT4K zn1!AHVlnKSlG;ts)qRVdnr+2xT4Jw?{JGV1l~ZOeY_0CI1@W}&^a1-Hn{0iU zUp?6#CHQ9a!}NM>TAF&Y+quir%l?H#gvb3TSboX|m2HQi?Qz(AQ0Yx-&w3rp`W+$D z`63y^g^sm8lLtRDxv~!4$;X5b6gTkic2r!J-dqc?4Pb`OD60ENem`=Zc)Zx)TeYFu zud-KjIN`dW+En}Fhw$>O1S)d9_^gz<{nsn_InfU3^ZL6YQBW>l;k~fFD292^%fHL`7lK4AB=WT5m%$ko=B?3u`@$)ymOK)nZ_QTGw z=MQ=wt(}9_X$*mFCImFG==UF^I`FYqo>Jiefw zVxp5!${&(}lOdQDR8|8RNjmJuP?I%QULh?6o_1MU`=k1c4$3UgKGje>`BXRT2!Rvr z5cz;zN>S)Zvae5Cn}zT72@a`^-RL5#-#;(rm6^J6cq0J5v;lg*Acz+@2rI=X`xF_G z03GYxta2X%M{Wk77tj|!SHSTtg-yJRII7-$Pr<5jQLlr-12r&YZ&*Hw=la<3!p^Np z!-MQg-#P3G$;2F;B!0WvJS){Z&Mj4lI(b2t8M?rkEd`4cl3@L|#jf1th3-#p0yLEpCkbDYSDwb4Z9%bcE_71A4B)l&SWXyzSYrz% zPxydkWt;ZhuJ^Q1e8y$M{H3RSQy=vY3bVtFfZe{&%1Pi@hfNztkgCl7ogYCjwhbuG z4}Qu*>^7Ae0%B2EVhOF;k9~NYM4wn(uJv-+={8;TMg+;qyD+N~61MwOU)Go_JazgO zB{V>uasI2T4i}$J0zYyo+5sjNrS;^DH&{^qsG-c$w7x}b`?}4L(aKJ{u71$0hcevZ zw0y$-%b0iov)z2F5HYUF$!wpi^TT@#Ts8UWHKJjm_(&)-Aj2>LWOFiv+}ME1yDzl$a{k z9u#mN2JP({mP1U5!bHdmk!ymFWURie>c}r`+@f|f;tv{j$yjf_X@yOkx7jkGr50NZ zh1O&tL`!~_-Vlfb8MF5zEWvUjQ=d|5x#!7-gXoh6SU&GNp0|_oGd@uI(Ph%bv=L3= zS_cmk6Pq!-mPTU^wHdJYcZZS3z3&BP?to@pfz|arT02?WQzotj$EJ(;FARedcj}k; zbP9d8mDb<5w}LZF>m@%^PF(btG_4wX)Etk%q1>d(8*Q1r>J1`}zXr8C`7SQDr0?6A z)}MOF3te&TAjDGY7@JR#r#;PycyD6<*_o&qW(-9whZBs5)1MCDe4m%Il@9KT@9pKH z*1A|*)QA!}%galGmuKQm?gvKO*G=nX=P45jV}KD^4GW-g~XDyhCN z{=669m-EE&Nb#(gtMPT^gbV>n@5*nZ890uGjdD14ufmu$9@woEuhUIjT27*9+?5?H ze+~Bi)g$^AMV)HY=B(d5AAW45_s_1Z~Mni zjqRcDiD_B)$^<9Tw-+XbjgI{L$esrelZF+A_WQTBrRDQRjObKComMrf&$4|S4l)ob z4-Q*LrKd8191SPT0Fo4#&SJ4*vM@pYT$uL7{B@!Ct4nJ*BJj z&}B7a76=ffA?em|y*|HBQk71tb1NJ|%i%G}yASL)%Q;;?yNKETq~Tnf7IU@B(J0r1 z2Jl~1&urN9iY+DPtQ49k^~Kg@ZDdQFzd_u96H6-aGOSFm6F;eMh&wQIoZ%F zm>EpvylGhFq|7$1zqHhSJDV>wxJ&mbvac-o%OqN9Ld%I+1Bs)>t}F3hsxB&ff1JxS-F03% z$-`~2z7nSo3t3`F*{~$6*ol#}>1^Dq01FIJ@>H(PnGUc+vV`~A98;qo?MC$2yhDISb(A1l@k$)>#I(`r!OeU#l58(a{0+G6sJJtZw= zF|SAAXE5>fQs1VI^M+s*t8=la#Z(;KOiiiqXiBgZ6Ky%NFXe6<6$j9w|8qqpsK0;}y`;MZJjTN<9a7$R@W!PYUepB)wJ5GghfPQ?DQ;RNFL z3L8;NA69s7Re{we|L_Aou)d|Xgx;#r3r-xTXk8SlDDTNypq>iKH}3Yjt$GTF6r8rQ z6gSNgUvw?tMon`eqCMMN{j_zQ*WQHIU&QCxWaD2U-&~4nmWE)4=`VrPwQ#X`jlxdCzH_fnFHEnU0A68Y7e6J|SSTfJ*H9t)V0aLUK`o~?G*xO)@ZGF-}Eb2^{ zMgUFU=ii};VccA%*;kYeqV7v9-=TqjqDzR-sL|l_(5@VN8K15R*a>UW&Kh^nL^hRe zH~H1xgE|qC`wJb-@f53>4$-LEPL_j%heZx4kvY3J%j8w;x0SNYle@y*Pw&Lk?-sPH zebR9jO&iG@y8ZuhwoBb{68_2hRRy_KZlZIeVo2|(#dRvZ`)0Pvw;bxunbB*AdYTQxVI(0Y%p~1cJuLS_-%$zSi*C}p{`?|DyuF+ zX0%z0&P-(tyj3kxV38u*#bSuXvnf-ScjTjWY#!Y4)cFR)t-MHfow|A5w0$L;T5-HG zSTL6=k#1Q#lH(R-A|s13aZz9LbmjMah;@=}r=h8T$ummU2lH6rM&>ftc1kT)NS(ra z$30P7;Z-xgItK3KWwh}8W6<&BN|QcqX(PvHcj2;5yL3T2^jW0VS}(W!>qq{(qX|r> z$NTg6&d=jY$OZTEs+4UPzFP4bo`&I%mmnFBuF|!UxyAj@x@dLJEYH`-QY+lFXb8bN z8`QzC{8J59xJe%f=qcyt{j`Jx=z#u+R?fnibeftPWd${7pArYoG(vQlPaUlKs60Q4 zZZ-BkqRy>#nCK8Vd!9}4Stl1)&~Cc!ggO7v+p{+4#^RJ>QeM5cBH3Dl?O2Ld+dG>V z7DeX^F?lGFM10~P8%!y#%12&K&#=5fh1V|%uDAL zotTl$UrfWwQS8Skk|J}3Ru$Ia+6jh2SFtwv&ZzDp)_V;i%MFgT2D!}sPu`XfO(YCx zFu<^e0d5B|In1qDuCovaG22v0ZEyg}3gOHzgACs!ced;goib&&nleVyCG_c9iAg zaLaQ}IU18TBv=5@^q)EOkqk6q>TS2DXZkkw^IV)FxQ^j_%(CnrkOb* zbfE~c;#UriE3#6S7qSUo^b%cSA#e^G>D;_xk|*$kr=Ff_n>u&1>5w zv;SEo%=u-t=KNYh|BdbUGT&JQ&VZS(M?LU>Uru>4S=t2|j1 zwj(m~%QQMy*3xs(vrT;NhFzt@{m|9>~l(jC`K_?*Qb{0xB@>9TSmdo zK1m$rL2d{gt9u6}lz85z6)>LelNB9ItCS-Wh0k0#BfhLz~uT`kywmjA0tnr$2|9-5m3)9HQAEfxmd zYqG6Iy*855a>eJH{g?4&q7n-o{T>k-2o;WdU9N{WO%JgbGACrew)h8%P)QEM7^%`N`eM_Gkgs06s1guQst>!h*yS6u)a|vV zrG6^n|K-C-g+*vwK5>|?%qIR&t$9nWy=yS5x`hKT#cImOwVh*JE_L`YKBdOP@83m= zst@|n+X4tV7`&5iql3MFQhWE1oQf2}JvPuXYdXyC{@$n$8Pcsx{;p zztFKa74HdM$cwQDu5zZ=odxa58tj6m6OMx5 z#f(vR+RVM8h@VU!Y2DB|N+K)Yi5EMxytPy6c)lrk3P>nP{RHjN)MycO_#SM%`^5Hr zm(!?34vf#nG}(M|E{gAJ1=2;lkbCRHiFEv4u=)bpgChy`Y%j;TZ7RsA^r^$%>?

=gZ6Ta+Dfz(OMvy%Bz!h*{~-e2n+KP2C;5 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 L)z4*}Q$iB}VD>`u literal 0 HcmV?d00001 diff --git a/docs/getting_started/best_practices.md b/docs/getting_started/best_practices.md new file mode 100644 index 0000000000..8eebd76b40 --- /dev/null +++ b/docs/getting_started/best_practices.md @@ -0,0 +1,93 @@ +# Best Practices for Using Sekoia SOC Platform (Defend plan) + +In the current cybersecurity landscape, organizations face significant challenges, including a scarcity of skilled professionals and the complexity of traditional security solutions. At Sekoia, we strive to ensure our customers get the most out of our product by following best practices. These practices help maximize the effectiveness of our solutions while maintaining optimal security and operational efficiency. Below, we outline the key best practices and configuration guidelines that we recommend for all our users. + +### Rules Configuration + +Our extensive catalog of over 900 rules, each [associated with a TTP from the MITRE ATT&CK framework](https://docs.sekoia.io/xdr/features/detect/built_in_detection_rules/), is categorized by four levels of effort. This enables targeted and effective defense against threats. The normalization of events via [intake formats](https://github.com/SEKOIA-IO/intake-formats/blob/main/doc/structured_event.md) and the use of [ECS taxonomy](https://www.elastic.co/guide/en/ecs/current/ecs-reference.html) allows for technology-agnostic integration, facilitating the production of detection rules based on the [SIGMA models](https://docs.sekoia.io/xdr/features/detect/sigma/), our specific [anomaly detection engine](https://docs.sekoia.io/xdr/features/detect/anomaly/) and even the [IOC Detection](https://docs.sekoia.io/xdr/features/detect/iocdetection/) & [Collections](https://docs.sekoia.io/xdr/features/detect/ioccollections/). + +**Recommendations:** + +- **Activate all [effort level](https://docs.sekoia.io/xdr/features/detect/rules_catalog/#effort-level) 1 and 2 rules** during the initial setup of your community. + +- **Configure the Rules Settings** to [enable new rules](https://docs.sekoia.io/xdr/features/detect/rules_catalog/#automatically) up to the Intermediate level. + +- **Fine-tune detection rules** after each false positive alert through the [available options](https://docs.sekoia.io/xdr/features/detect/rules_catalog/#limiting-the-scope-of-a-rule), primarily using alert filters. + +- **Activate a new wave of higher effort level rules** after the initial RUN period, representing: + + - 20% of level 3 / "Advanced" rules, + - 10% of level 4 / "Master" rules. + +- **Aim for continuous improvement**, reaching an average of: + + - X% tuning for level 3 rules with at least 1 alert-filter, + - Y% tuning for level 4 rules with at least Z alert filters. + +### Intakes Configuration + +To ensure comprehensive and effective coverage, it is crucial to configure your intakes correctly. Our recommendations are to activate and configure log collection for at least: + +- **1 company wide Endpoint Based Intake** (e.g., EDR, Windows, Sekoia.io for Endpoint). This allows for threat detection directly on workstations and servers, covering a wide range of threats such as malware and suspicious user behaviors. This means we recommend to install the Sekoia.io for Endpoint agent only when no active or passive agent is already installed on the host to avoid side effects on log collection and alerting. +- **1 company wide Security Network Based Intake** (e.g., Firewall, NDR, WAF) **with security options enabled**. These intakes are essential for monitoring network attacks, intrusion attempts, and malicious activities from outside. +- **2 company wide Network Based Intake** (e.g., Loadbalancer/Reverse-Proxy, Proxy, DNS). They help monitor internal network traffic and detect anomalies such as lateral movements by attackers and suspicious communications. +- **1 company wide Email Security Based Intake** (e.g., Office, ProofPoint, Vade) **with security options enabled**. This helps identify phishing attacks, malware transmitted via email, and other email-related threats. +- **1 Identity and Access Management Based Intake** for **on-premise** environments (e.g., Active Directory, Okta, Wallix) **and 1 for cloud** environments if applicable (e.g., Azure Entra ID, Cloudflare Access Requests, Google Workspace). This helps detect suspicious activities related to user access, such as unauthorized login attempts and privilege changes, and ensures security oversight across both on-premise and cloud environments. +- **Activity Logs**: Ensure that [Sekoia.io activity logs](https://docs.sekoia.io/xdr/features/collect/integrations/application/sekoiaio_activity_logs/) are activated. This allows monitoring actions and changes within the Sekoia.io platform itself, ensuring complete transparency and traceability. +- **No intake should have zero events received** in the past 7 days. An intake without events can indicate a configuration or data collection issue, compromising threat detection capability, ensure to have properly configured the [notification in case of event drop on an intake](https://docs.sekoia.io/getting_started/notifications-Examples/#intakes). + +- **Use the [Sekoia.io Forwarder](https://docs.sekoia.io/xdr/features/collect/ingestion_methods/syslog/sekoiaio_forwarder/)** each time you need to forward On Premise events via syslog protocol to Sekoia.io SOC Platform to ease discriminate logs before adding them the relevant Intake Key. It also is the only log forwarder that our Support team will be able to provide you with assistance. + + +### Events Quality + +The quality of events is crucial for accurate and effective detection. Here are the best practices to follow: + +- **Ensure less than 3% of events per intake are warnings**. Warnings can indicate potential issues with data collection or interpretation, and a high percentage can lead to miss detections. +- **Ensure less than 1% of events per intake are invalid**. Invalid events cannot be used for detection and may indicate formatting or data integrity issues. + +### Alerts + +Our product is designed to focus on high-priority threats, enabling expert resources to conduct a manageable number of quality investigations each day. By creating alert filters, you can ensure that alerts are raised for the right reasons, enhancing the efficiency and effectiveness of your security operations. + +- **Monitor the average number of Alerts per Intake** to identify intakes generating too many or too few alerts. +- **Limit the number of Daily New Alerts** at a manageable level for your team (by experience, around 6 to 8 per day per analyst) and prioritise the [tuning of a rule](https://docs.sekoia.io/xdr/features/investigate/alerts/#create-an-alert-filter) over automating its status change if no defensive action is to be taken. +- **Track the Weekly and Monthly volume of New Alerts** to evaluate the evolution of threats and the performance of detection rules. +- **Assess the number of Daily New Cases** to understand workload and the effectiveness of response processes. +- **Ensure no sleeping alert is older than 1 week** with status "Closed" or "Rejected". + +![alert_workflow](/assets/operation_center/alerts/alert_workflow.png){: style="max-width:100%"} + +### Playbooks + +Playbooks complement operational optimization by automating various types of manual tasks mastered by the analyst team. They allow, for example, to automate certain steps in the alert analysis workflow, enrich certain types of alerts with specific external sources (like VirusTotal), or retrieve additional contextual information on an endpoint when an active agent is installed before deciding to quarantine it or take other actions. + +**Recommendations:** + +- **Keep the number of playbook executions per day low**: Aim for less than X executions per playbook per day, aligning with the number of raised alerts. Each playbook should have a specific objective to meet a particular need. +- **Design playbooks with simplicity in mind**: On average, each playbook should be composed of less than X modules, including: + - **1 [Trigger](https://docs.sekoia.io/xdr/features/automate/triggers/)** such as the “Manual trigger” or “Alert created” trigger **with a filter condition** to start the playbook only for relevant cases. + - **Some [Operator](https://docs.sekoia.io/xdr/features/automate/operators/) modules** like "[Condition](https://docs.sekoia.io/xdr/features/automate/operators/#condition)" and "[Foreach](https://docs.sekoia.io/xdr/features/automate/operators/#foreach)" to halt the playbook execution if new information gathered during the process indicates that the playbook is unnecessary in the current context. + - **A majority of [Action](https://docs.sekoia.io/xdr/features/automate/actions/) modules** making it easily understandable for new team members and maintainable over time. To give you more details on the top 10 most used playbook Actions, here is a list: + + 1. [Read JSON File](https://docs.sekoia.io/xdr/features/automate/library/fileutils/#read-json-file) + 2. [Comment Alert](https://docs.sekoia.io/xdr/features/automate/library/sekoia-io/#comment-alert) + 3. [Get Alert](https://docs.sekoia.io/xdr/features/automate/library/sekoia-io/#get-alert) + 4. [Request URL](https://docs.sekoia.io/xdr/features/automate/library/http/#request-url) + 5. [Update Alert Status](https://docs.sekoia.io/xdr/features/automate/library/sekoia-io/#update-alert-status) + 6. [Get Events](https://docs.sekoia.io/xdr/features/automate/library/sekoia-io/#get-events) + 7. [VirusTotal Scan URL](https://docs.sekoia.io/xdr/features/automate/library/virustotal/#scan-url) + 8. [Get Event Field Common Values](https://docs.sekoia.io/xdr/features/automate/library/sekoia-io/#get-event-field-common-values) + 9. [Edit Alert](https://docs.sekoia.io/xdr/features/automate/library/sekoia-io/#edit-alert) + 10. [VirusTotal Scan Hash](https://docs.sekoia.io/xdr/features/automate/library/virustotal/#scan-hash) + +For instance, the following [playbook template](https://docs.sekoia.io/xdr/features/automate/build-playbooks/#templates) composed of 9 modules (1 Trigger, 1 Operator, 7 Actions) answers the need of adding a domain in a blocklist (IOC Collection). + +![playbook_example](/assets/getting_started/playbook_example.png){: style="max-width:100%"} + +- **Ensure the duration of each Action** within playbooks is less than X seconds to reduce the chance of a timeout with most third-party tools you interact with. +- **Track the overall [duration of playbook executions](https://docs.sekoia.io/xdr/features/automate/navigate-playbooks/#playbook-runs)** for each playbook to complete its execution in less than 1 minute. +- **Ensure no playbook is having an issue** that is visible with the status "Trigger crashed" and "Configuration issues". +- **Keep a low number of "Ready to start" playbooks**, for instance less than 2, to avoid activation issue after a long period of configuration due to confict with recent evolutions of your community. + +By adhering to these best practices, you can maximize the efficiency of Sekoia’s solutions, ensuring optimal security and operational performance for your organization. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 6f15374afc..f70545c772 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -56,7 +56,8 @@ nav: - Notification examples: getting_started/notifications-Examples.md - 6. Manage API Keys: getting_started/manage_api_keys.md - 7. Sekoia regions: getting_started/regions.md - - 8. Troubleshooting Tips: getting_started/get_troubleshooting_tips.md + - 8. Best practices: getting_started/best_practices.md + - 9. Troubleshooting Tips: getting_started/get_troubleshooting_tips.md - Sekoia.io XDR: - Introduction: xdr/index.md - Quick start guide: xdr/xdr_quick_start.md From 824789bf591957f7650affddd113e9e34b815016 Mon Sep 17 00:00:00 2001 From: Charles LE REUN <77982369+CharlesLR-sekoia@users.noreply.github.com> Date: Tue, 25 Jun 2024 18:59:49 +0200 Subject: [PATCH 2/4] Update docs/getting_started/best_practices.md Co-authored-by: rombernier <136727505+rombernier@users.noreply.github.com> --- docs/getting_started/best_practices.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting_started/best_practices.md b/docs/getting_started/best_practices.md index 8eebd76b40..156ee8c1c3 100644 --- a/docs/getting_started/best_practices.md +++ b/docs/getting_started/best_practices.md @@ -54,7 +54,7 @@ Our product is designed to focus on high-priority threats, enabling expert resou - **Limit the number of Daily New Alerts** at a manageable level for your team (by experience, around 6 to 8 per day per analyst) and prioritise the [tuning of a rule](https://docs.sekoia.io/xdr/features/investigate/alerts/#create-an-alert-filter) over automating its status change if no defensive action is to be taken. - **Track the Weekly and Monthly volume of New Alerts** to evaluate the evolution of threats and the performance of detection rules. - **Assess the number of Daily New Cases** to understand workload and the effectiveness of response processes. -- **Ensure no sleeping alert is older than 1 week** with status "Closed" or "Rejected". +- **Ensure no sleeping alert is older than 1 week** without status "Closed" or "Rejected". ![alert_workflow](/assets/operation_center/alerts/alert_workflow.png){: style="max-width:100%"} From 84d8eb5bf505a051e8f63875303b4b89af7ee5f7 Mon Sep 17 00:00:00 2001 From: Khaoula Ettaleb <49680698+ka0ula@users.noreply.github.com> Date: Wed, 26 Jun 2024 09:47:31 +0200 Subject: [PATCH 3/4] small fix --- docs/getting_started/best_practices.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/getting_started/best_practices.md b/docs/getting_started/best_practices.md index 156ee8c1c3..8f88c92cde 100644 --- a/docs/getting_started/best_practices.md +++ b/docs/getting_started/best_practices.md @@ -34,7 +34,7 @@ To ensure comprehensive and effective coverage, it is crucial to configure your - **1 company wide Email Security Based Intake** (e.g., Office, ProofPoint, Vade) **with security options enabled**. This helps identify phishing attacks, malware transmitted via email, and other email-related threats. - **1 Identity and Access Management Based Intake** for **on-premise** environments (e.g., Active Directory, Okta, Wallix) **and 1 for cloud** environments if applicable (e.g., Azure Entra ID, Cloudflare Access Requests, Google Workspace). This helps detect suspicious activities related to user access, such as unauthorized login attempts and privilege changes, and ensures security oversight across both on-premise and cloud environments. - **Activity Logs**: Ensure that [Sekoia.io activity logs](https://docs.sekoia.io/xdr/features/collect/integrations/application/sekoiaio_activity_logs/) are activated. This allows monitoring actions and changes within the Sekoia.io platform itself, ensuring complete transparency and traceability. -- **No intake should have zero events received** in the past 7 days. An intake without events can indicate a configuration or data collection issue, compromising threat detection capability, ensure to have properly configured the [notification in case of event drop on an intake](https://docs.sekoia.io/getting_started/notifications-Examples/#intakes). +- **No intake should have zero events received** in the past 7 days. An intake without events can indicate a configuration or data collection issue, compromising threat detection capability. Ensure that notifications are configured to alert in the case of [an event drop for an intake](https://docs.sekoia.io/getting_started/notifications-Examples/#intakes). - **Use the [Sekoia.io Forwarder](https://docs.sekoia.io/xdr/features/collect/ingestion_methods/syslog/sekoiaio_forwarder/)** each time you need to forward On Premise events via syslog protocol to Sekoia.io SOC Platform to ease discriminate logs before adding them the relevant Intake Key. It also is the only log forwarder that our Support team will be able to provide you with assistance. @@ -90,4 +90,4 @@ For instance, the following [playbook template](https://docs.sekoia.io/xdr/featu - **Ensure no playbook is having an issue** that is visible with the status "Trigger crashed" and "Configuration issues". - **Keep a low number of "Ready to start" playbooks**, for instance less than 2, to avoid activation issue after a long period of configuration due to confict with recent evolutions of your community. -By adhering to these best practices, you can maximize the efficiency of Sekoia’s solutions, ensuring optimal security and operational performance for your organization. \ No newline at end of file +By adhering to these best practices, you can maximize the efficiency of Sekoia’s solutions, ensuring optimal security and operational performance for your organization. From 24e0d7bc256ff0e4c7c9f1a36d36879849d4bc1d Mon Sep 17 00:00:00 2001 From: CharlesLR-sekoia Date: Tue, 2 Jul 2024 09:24:37 +0200 Subject: [PATCH 4/4] add_missing_kpi --- docs/getting_started/best_practices.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/getting_started/best_practices.md b/docs/getting_started/best_practices.md index 8f88c92cde..063824db57 100644 --- a/docs/getting_started/best_practices.md +++ b/docs/getting_started/best_practices.md @@ -21,8 +21,8 @@ Our extensive catalog of over 900 rules, each [associated with a TTP from the MI - **Aim for continuous improvement**, reaching an average of: - - X% tuning for level 3 rules with at least 1 alert-filter, - - Y% tuning for level 4 rules with at least Z alert filters. + - 10% tuning for level 3 rules with at least 1 alert-filter, + - 20% tuning for level 4 rules with at least Z alert filters. ### Intakes Configuration @@ -51,9 +51,9 @@ The quality of events is crucial for accurate and effective detection. Here are Our product is designed to focus on high-priority threats, enabling expert resources to conduct a manageable number of quality investigations each day. By creating alert filters, you can ensure that alerts are raised for the right reasons, enhancing the efficiency and effectiveness of your security operations. - **Monitor the average number of Alerts per Intake** to identify intakes generating too many or too few alerts. -- **Limit the number of Daily New Alerts** at a manageable level for your team (by experience, around 6 to 8 per day per analyst) and prioritise the [tuning of a rule](https://docs.sekoia.io/xdr/features/investigate/alerts/#create-an-alert-filter) over automating its status change if no defensive action is to be taken. +- **Limit the number of Daily New Alerts** at a manageable level for your team (by experience, around 6 to 8 per day per analyst, or 60 per day) and prioritise the [tuning of a rule](https://docs.sekoia.io/xdr/features/investigate/alerts/#create-an-alert-filter) over automating its status change if no defensive action is to be taken. - **Track the Weekly and Monthly volume of New Alerts** to evaluate the evolution of threats and the performance of detection rules. -- **Assess the number of Daily New Cases** to understand workload and the effectiveness of response processes. +- **Assess the number of Daily New Cases** to understand workload and the effectiveness of response processes. In general, the number of case(s) per day does not exceed 1, as it is cconsidered as a very important incident. - **Ensure no sleeping alert is older than 1 week** without status "Closed" or "Rejected". ![alert_workflow](/assets/operation_center/alerts/alert_workflow.png){: style="max-width:100%"} @@ -64,8 +64,8 @@ Playbooks complement operational optimization by automating various types of man **Recommendations:** -- **Keep the number of playbook executions per day low**: Aim for less than X executions per playbook per day, aligning with the number of raised alerts. Each playbook should have a specific objective to meet a particular need. -- **Design playbooks with simplicity in mind**: On average, each playbook should be composed of less than X modules, including: +- **Keep the number of playbook executions per day low**: Aim for less than 60 executions per playbook per day, aligning with the number of raised alerts. Each playbook should have a specific objective to meet a particular need. +- **Design playbooks with simplicity in mind**: On average, each playbook should be composed of less than 15 modules, including: - **1 [Trigger](https://docs.sekoia.io/xdr/features/automate/triggers/)** such as the “Manual trigger” or “Alert created” trigger **with a filter condition** to start the playbook only for relevant cases. - **Some [Operator](https://docs.sekoia.io/xdr/features/automate/operators/) modules** like "[Condition](https://docs.sekoia.io/xdr/features/automate/operators/#condition)" and "[Foreach](https://docs.sekoia.io/xdr/features/automate/operators/#foreach)" to halt the playbook execution if new information gathered during the process indicates that the playbook is unnecessary in the current context. - **A majority of [Action](https://docs.sekoia.io/xdr/features/automate/actions/) modules** making it easily understandable for new team members and maintainable over time. To give you more details on the top 10 most used playbook Actions, here is a list: @@ -85,7 +85,7 @@ For instance, the following [playbook template](https://docs.sekoia.io/xdr/featu ![playbook_example](/assets/getting_started/playbook_example.png){: style="max-width:100%"} -- **Ensure the duration of each Action** within playbooks is less than X seconds to reduce the chance of a timeout with most third-party tools you interact with. +- **Ensure the duration of each Action** within playbooks is less than 10 seconds to reduce the chance of a timeout with most third-party tools you interact with. - **Track the overall [duration of playbook executions](https://docs.sekoia.io/xdr/features/automate/navigate-playbooks/#playbook-runs)** for each playbook to complete its execution in less than 1 minute. - **Ensure no playbook is having an issue** that is visible with the status "Trigger crashed" and "Configuration issues". - **Keep a low number of "Ready to start" playbooks**, for instance less than 2, to avoid activation issue after a long period of configuration due to confict with recent evolutions of your community.