microsoft/PSRule.Monitor

GitHub: microsoft/PSRule.Monitor

PSRule.Monitor 是一个PowerShell模块,用于将PSRule分析结果自动记录到Azure Monitor,便于集中监控和查询安全合规数据。

Stars: 16 | Forks: 8

# 用于Azure Monitor的PSRule 将 PSRule 分析结果记录到 Azure Monitor。 ## 获取模块 本项目需要 `PSRule` PowerShell 模块。 有关安装和依赖项的详细信息,请参阅 [安装说明]。 您可以从 PowerShell Gallery 下载并安装这些模块。 模块 | 描述 | 下载 / 说明 ------ | ----------- | ------------------------ PSRule.Monitor | 将 PSRule 分析结果记录到 Azure Monitor。 | [最新版本][module] / [安装说明][install] ## 快速入门 ### 使用 PSRule 约定上传结果 可以使用一个约定将 PSRule 分析的结果上传到 Azure Monitor。 要使用此约定: - 从 PowerShell Gallery 安装 `PSRule.Monitor` 模块。 - 包含 `PSRule.Monitor` 模块。 可以在 PSRule 选项中设置,或在运行时作为参数指定。 - 引用 `Monitor.LogAnalytics.Import` 约定。 可以在 PSRule 选项中设置,或在运行时作为参数指定。 例如: ``` include: module: - 'PSRule.Monitor' convention: include: - 'Monitor.LogAnalytics.Import ``` 使用此约定时,必须指定一个 Log Analytics 工作区。 这可以通过设置以下环境变量来完成: - `PSRULE_CONFIGURATION_MONITOR_WORKSPACE_ID` - 包含 Log Analytics 工作区 ID。 - `PSRULE_CONFIGURATION_MONITOR_WORKSPACE_KEY` - 包含工作区的主密钥或辅助密钥。 此值是敏感信息,应安全存储。 为保护此值,请避免将其存储在源代码管理中。 例如: ``` # PowerShell:设置环境变量 $Env:PSRULE_CONFIGURATION_MONITOR_WORKSPACE_ID = '00000000-0000-0000-0000-000000000000' $Env:PSRULE_CONFIGURATION_MONITOR_WORKSPACE_KEY = Get-Secret -Name 'WORKSPACE_KEY' -AsPlainText ``` ``` # GitHub Actions:使用 microsoft/ps-rule 操作设置环境变量 - name: Run PSRule analysis uses: microsoft/ps-rule@main env: PSRULE_CONFIGURATION_MONITOR_WORKSPACE_ID: 00000000-0000-0000-0000-000000000000 PSRULE_CONFIGURATION_MONITOR_WORKSPACE_KEY: ${{ secrets.WORKSPACE_KEY }} ``` ``` # Azure Pipelines:使用 ps-rule-assert 任务设置环境变量 - task: ps-rule-assert@0 displayName: Run PSRule analysis inputs: inputType: repository env: PSRULE_CONFIGURATION_MONITOR_WORKSPACE_ID: 00000000-0000-0000-0000-000000000000 PSRULE_CONFIGURATION_MONITOR_WORKSPACE_KEY: $(WORKSPACE_KEY) ``` ### 使用 PowerShell 上传结果 要将 PSRule 的结果上传到 Azure Monitor,请使用 `Send-PSRuleMonitorRecord` cmdlet。 结果可以直接通过管道从 `Invoke-PSRule` 传递,或先存储再从变量通过管道传递。 `Send-PSRuleMonitorRecord` cmdlet 需要一个 Log Analytics 工作区来发送数据。 可以使用 `-WorkspaceId` 和 `-SharedKey` 参数来指定工作区。 例如: ``` $data | Invoke-PSRule | Send-PSRuleMonitorRecord -WorkspaceId -SharedKey ; ``` 以下示例展示了使用来自预构建模块的分析结果: ``` $results = Invoke-PSRule -InputPath .\*.json -Module 'PSRule.Rules.Azure'; $results | Send-PSRuleMonitorRecord -WorkspaceId -SharedKey ; ``` ### 从 Azure Monitor 查询日志 默认情况下,PSRule 结果存储在 `PSRule_CL` 表中。 可以使用 Kusto 从 Log Analytics 工作区查询这些结果。 以下查询返回最近一小时内所有失败规则的记录: ``` PSRule_CL | where Outcome_s == "Fail" and TimeGenerated > ago(1h) ``` 要从 PowerShell 查询这些结果,请使用: ``` Invoke-AzOperationalInsightsQuery -WorkspaceId -Query 'PSRule_CL | where Outcome_s == "Fail" and TimeGenerated > ago(1h)' ``` ## 语言参考 ### 命令 `PSRule.Monitor` 模块中存在以下命令: - [Send-PSRuleMonitorRecord](docs/commands/PSRule.Monitor/en-US/Send-PSRuleMonitorRecord.md) - 将 PSRule 的分析结果发送到 Azure Monitor。 ## 维护者 - [Bernie White](https://github.com/BernieWhite) ## 许可证 本项目根据 [MIT 许可证](LICENSE) 授权。
标签:AI合规, Azure Monitor, ETW劫持, GitHub Actions, IPv6, Log Analytics, PowerShell, PSRule, 云监控, 云计算, 安全配置, 数据集成, 日志记录, 模块开发, 环境变量管理, 监控分析, 网络调试, 自动化, 自动笔记, 规则分析, 规则引擎