You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure下Ubuntu/RedHat的DSC v3部署及Bash脚本集成咨询

问题1:DSC v3与Azure Policy Guest Configuration的关系确认

DSC v3在Azure环境中针对Linux(Ubuntu/RedHat)节点的管理,确实主要通过Azure Policy Guest Configuration实现,这是官方推荐的集成方式:

  • DSC v3配置会被打包为Guest Configuration包,上传至存储账户后,通过Azure Policy分发到目标VM
  • Guest Configuration扩展会在VM上执行DSC配置,完成合规性审计或自动修正操作
  • 虽然DSC v3支持本地部署,但在Azure生态中,Guest Configuration是大规模管理VM配置合规性的唯一官方集成通道
问题2:将自定义Bash脚本集成到DSC并发布到Azure

要把Falcon Sensor Agent ID检查脚本集成到DSC,可通过nxScript资源(属于nx模块,nxtools通常包含该资源)实现,具体步骤如下:

步骤1:修改DSC配置,嵌入Bash脚本逻辑

替换原有的nxService配置,或添加nxScript资源来执行自定义脚本逻辑。示例配置如下:

Configuration falconSensorWithAgentIdCheck {
    Import-DscResource -ModuleName 'nx'

    node localhost {
        # 自定义脚本:检查并修正Falcon Sensor Agent ID
        nxScript EnsureFalconSensorValidAgentId {
            # GetScript:返回当前状态(用于审计报告)
            GetScript = @'
#!/bin/bash
# 获取当前Agent ID
CURRENT_AGENT_ID=$(falcon-sensor -g --agent-id 2>/dev/null || echo "unknown")
# 返回JSON格式结果,供Guest Configuration审计使用
echo '{"CurrentAgentId": "'$CURRENT_AGENT_ID'"}'
'@

            # TestScript:检查是否合规(0=合规,非0=不合规)
            TestScript = @'
#!/bin/bash
# 替换为你的预期Agent ID或动态获取逻辑
EXPECTED_AGENT_ID="your-unique-agent-id"
CURRENT_AGENT_ID=$(falcon-sensor -g --agent-id 2>/dev/null || echo "unknown")

if [ "$CURRENT_AGENT_ID" == "$EXPECTED_AGENT_ID" ]; then
    exit 0 # 合规
else
    exit 1 # 不合规
fi
'@

            # SetScript:修正不合规状态(仅在Apply模式下执行)
            SetScript = @'
#!/bin/bash
EXPECTED_AGENT_ID="your-unique-agent-id"
# 设置Agent ID(替换为实际的设置命令)
falcon-sensor -s --agent-id "$EXPECTED_AGENT_ID"
# 重启服务生效
systemctl restart falcon-sensor.service
'@
        }

        # 确保Falcon Sensor服务运行(依赖脚本执行完成)
        nxService ensureFalconSensorRunning {
            Name      = 'falcon-sensor.service'
            State     = 'running'
            Enabled   = $true
            DependsOn = '[nxScript]EnsureFalconSensorValidAgentId'
        }
    }
}

# 生成MOF文件
falconSensorWithAgentIdCheck

步骤2:打包配置为Guest Configuration包

使用New-GuestConfigurationPackage打包生成的MOF文件,根据需求选择Type:

$params = @{
    Name          = 'falconSensorAgentIdCheck'
    Configuration = './falconSensorWithAgentIdCheck/localhost.mof'
    Type          = 'Apply' # 审计场景用'Audit',自动修正场景用'Apply'
    Force         = $true
}
New-GuestConfigurationPackage @params

步骤3:上传包到Azure存储账户

将生成的.zip包上传到Azure存储Blob(确保Blob可被Guest Configuration扩展访问,可设置为公开可读或使用SAS URL),获取包的URI。

步骤4:生成并发布Azure Policy

参考你原有的脚本,调整参数生成Policy定义并发布:

$uri = 'your-storage-blob-uri' # 替换为实际的包URI
$guid = [guid]::NewGuid().ToString() 

$PolicyConfig = @{
    PolicyId      = $guid
    ContentUri    = $uri
    DisplayName   = 'Ensure Falcon Sensor has valid Agent ID'
    Description   = 'Audit or enforce Falcon Sensor runs with the correct unique Agent ID on Linux VMs'
    Path          = './'
    Platform      = 'Linux'
    Mode          = 'ApplyAndAutoCorrect' # 审计用'Audit',自动修正用'ApplyAndAutoCorrect'
    PolicyVersion = '1.0.0'
}

# 生成本地Policy JSON文件
New-GuestConfigurationPolicy @PolicyConfig -Verbose

# 发布到Azure
$JsonPath = './falconSensorAgentIdCheck_ApplyAndAutoCorrect.json'
$PolicyJson = Get-Content -Path $JsonPath -Raw
New-AzPolicyDefinition -Name 'falcon-sensor-agent-id-compliance' -Policy $PolicyJson -Verbose

关键注意事项

  • nxScript的三个脚本块(Get/Test/Set)必须是可执行的Bash脚本,TestScript需返回0表示合规,非0表示不合规
  • 若选择Apply类型和ApplyAndAutoCorrect模式,需确保VM有足够权限执行SetScript中的命令(如修改Falcon配置、重启服务)
  • 存储Blob的URI必须能被Guest Configuration扩展访问,建议使用SAS URL或设置容器为公开读取

内容的提问来源于stack exchange,提问作者Thanos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:52:03