""" Checks SQL Server user data for compliance with Windows policies. """ # Import packages import pandas as pd # Report column labels (defined once to avoid duplicated string literals). TYPE_CHECK = "Type Check" POLICY_CHECK = "Policy Check" EXPIRATION_CHECK = "Expiration Check" # Load the data into a pandas DataFrame df_input = pd.read_csv("./data.csv") # Function to apply rules and generate report def apply_rules_and_report(df): """ Apply defined rules against the input data. Parameters: df (pandas.DataFrame): SQL login data Returns: report (list): List of dictionaries containing test results """ report = [] for _, row in df.iterrows(): result = { "Name": row["name"], TYPE_CHECK: "", POLICY_CHECK: "", EXPIRATION_CHECK: "", "Reason": "", } # Check the type_desc if row["type_desc"] == "SQL_LOGIN": result[TYPE_CHECK] = "SQL_LOGIN" elif row["type_desc"] == "WINDOWS_LOGIN": result[TYPE_CHECK] = "N/A" result["Reason"] = "Refer to Windows password policy." else: result[TYPE_CHECK] = "Manual Review" result["Reason"] = "Reviewer to manually review." # Check if password policy is enforced if row["is_policy_checked"] == 1: result[POLICY_CHECK] = "PASS" result["Reason"] += """Password policy is enforced. Reviewer to check the assigned policy.""" else: result[POLICY_CHECK] = "FAIL" result["Reason"] += "Password policy is not enforced." # Check if password expiration is enforced if row["is_expiration_checked"] == 1: result[EXPIRATION_CHECK] = "PASS" result["Reason"] += """Password expiration is enforced. Reviewer to check the expiration policy.""" else: result[EXPIRATION_CHECK] = "FAIL" result["Reason"] += "Password expiration is not enforced." report.append(result) return report # Main function to run the script def main(): """ Apply defined rules against the input data and print the results. """ # Apply rules and generate report report = apply_rules_and_report(df_input) report_df = pd.DataFrame(report) # Do not truncate output pd.set_option("display.expand_frame_repr", True) pd.set_option("display.width", 1000) pd.set_option("display.max_colwidth", 1000) # Print the report print(report_df) if __name__ == "__main__": main()