pub struct ItControlsGenerator { /* private fields */ }Expand description
Generates AccessLog and ChangeManagementRecord entries for ITGC testing.
Implementations§
Source§impl ItControlsGenerator
impl ItControlsGenerator
Sourcepub fn generate_access_logs(
&mut self,
employee_ids: &[(String, String)],
systems: &[String],
start_date: NaiveDate,
period_months: u32,
) -> Vec<AccessLog>
pub fn generate_access_logs( &mut self, employee_ids: &[(String, String)], systems: &[String], start_date: NaiveDate, period_months: u32, ) -> Vec<AccessLog>
Generate IT access logs for the given employees and systems.
Produces 10-30 log entries per employee per month with realistic distributions:
- Actions: login (60%), logout (25%), failed_login (5%), privilege_change (5%), data_export (5%)
- 80% of events during business hours (8am-6pm)
- Failed logins clustered in brute-force patterns (3-5 consecutive)
- IP addresses from internal 10.0.0.0/8 range
Sourcepub fn generate_change_records(
&mut self,
employee_ids: &[(String, String)],
systems: &[String],
start_date: NaiveDate,
period_months: u32,
) -> Vec<ChangeManagementRecord>
pub fn generate_change_records( &mut self, employee_ids: &[(String, String)], systems: &[String], start_date: NaiveDate, period_months: u32, ) -> Vec<ChangeManagementRecord>
Generate change management records for the given systems and period.
Produces 5-15 changes per month with realistic distributions:
- Types: config_change (30%), code_deployment (25%), patch (20%), access_change (15%), emergency_fix (10%)
- 90% have approval (10% gap = ITGC finding)
- 85% tested before deployment
- 95% have rollback plans
- Emergency fixes: lower approval/testing rates (realistic weakness)
Auto Trait Implementations§
impl !Freeze for ItControlsGenerator
impl RefUnwindSafe for ItControlsGenerator
impl Send for ItControlsGenerator
impl Sync for ItControlsGenerator
impl Unpin for ItControlsGenerator
impl UnsafeUnpin for ItControlsGenerator
impl UnwindSafe for ItControlsGenerator
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.