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, 云监控, 云计算, 安全配置, 数据集成, 日志记录, 模块开发, 环境变量管理, 监控分析, 网络调试, 自动化, 自动笔记, 规则分析, 规则引擎