描述
用途 - 配置选项和附加功能
限制 - 操作系统兼容性等。
api
与local
安装方法
开发 - 模块贡献指南
执照
falcon
模块跨多个操作系统和发行版安装、配置和管理falcon
服务。
注意:
puppet-falcon
是一个开源项目,而不是 CrowdStrike 产品。因此,它没有任何明示或暗示的正式支持。
falcon 模块的所有参数都包含在主falcon
类中。有许多选项可以修改模块的功能。请参阅 REFERENCE.md 了解更多详细信息。
以下是一些常见用例。
注意:
falcon
软件包不是公开的,因此该模块有两个用于安装 falcon 传感器的选项。使用install_method
参数,您可以选择api
或local
。api
是默认的。 API 与本地安装方法中概述了更多信息。
# 使用 `api` 方法类 {'falcon': client_id => Sensitive('12346'), client_secret => Sensitive('12345'), cid => 'AJKQUI123JFKSDFJK`}
# 使用 `local` 方法$package_options = { 'ensure' => 'present', 'source' => '/tmp/sensor.rpm' # 对包资源有效的任何其他属性}class {'falcon' : install_method => '本地', package_options => $package_options, cid => 'AJKQUI123JFKSDFJK`}
api
安装方法api
安装方法使用 API 下载传感器包。下载的包的版本由传递给模块的参数决定。
有三个参数可以改变api
install 方法的行为。一次只能使用这些参数之一,并且它们按照下面列出的顺序进行评估。
version
- 将下载与您指定的版本匹配的传感器包。
update_policy
- 将下载更新策略指定的版本。
version_decrement
- 将下载当前版本之前的第n
个版本。
API 与本地安装方法中概述了使用api
安装方法的缺点。
每个示例如下。使用version
参数
这优先于update_policy
和version_decrement
。
类 { 'falcon': client_id => Sensitive('12346'), client_secret => Sensitive('12345'), version => '1.0.0', cid => 'AJKQUI123JFKSDFJK`}
使用update_policy
参数
这优先于version_decrement
参数。
类 { 'falcon': client_id => Sensitive('12346'), client_secret => Sensitive('12345'), update_policy => 'platform_default', cid => 'AJKQUI123JFKSDFJK`}
使用version_decrement
参数
使用version_decrement
下载nx
版本。
值为0
将下载最新版本,值为2
将下载n-2
版本(最新版本之后的2
版本)。
类 { 'falcon': client_id => Sensitive('12346'), client_secret => Sensitive('12345'), version_decrement => 2, cid => 'AJKQUI123JFKSDFJK`}
local
安装方法local
安装方法使您可以完全控制传感器的安装方式。
您可能使用此方法的一些原因是:
您想要从本地文件安装传感器
你有自己的包管理系统
您可以在 API 与本地安装方法中了解local
安装方法的更多信息。
当您使用local
安装方法时, package_options
是必需的。 package_options
中的参数将传递给package
资源。您必须为package
资源提供除name
参数之外的所有必需参数。该模块将根据操作系统选择适当的名称。您仍然可以通过在package_options
哈希中指定name
属性来覆盖该名称。
# 使用本地文件文件 {'/tmp/sensor.rpm': Ensure => 'present', source => 'https://company-filer-server.com/sensor.rpm'}class {'falcon': install_method => 'local', package_options => { 'ensure' => 'present', 'source' => '/tmp/sensor.rpm' }, require => 文件['/tmp/sensor.rpm'] }
# 使用 http 源类 {'falcon': install_method => 'local', package_options => { 'ensure' => 'present', 'source' => 'http://example.com/sensor.rpm' } }
# 覆盖名称参数class {'falcon': install_method => 'local', package_options => { 'ensure' => 'present', 'source' => '/tmp/sensor.rpm', 'name' => '猎鹰传感器' } }
当install_method
为api
时,您可以使用cleanup_installer
参数在安装后删除安装程序文件。
类 { 'falcon': client_id => Sensitive('12346'), client_secret => Sensitive('12345'), cleanup_installer => true, cid => 'AJKQUI123JFKSDFJK`}
您可以使用package_options
参数覆盖传递到package
资源的任何参数。有效的封装参数
这在api
和local
安装方法中都是相同的。
$package_options = { 'provider' => 'rpm', 'install_options' => '--force', }class { 'falcon': package_options => $package_options}
class {'falcon': package_manage => false # ...其他必需参数}
注意Windows 代理只能在安装时配置。 Linux 代理附带了
falconctl
,允许 puppet 在安装后配置代理。例如:更新资源中的cid
属性将在下次运行时更新 Linux 代理上的cid
,但不会更新 Windows 上的 cid。
class {'falcon': config_manage => false # ...其他必需参数}
class {'falcon': service_manage => false # ...其他必需参数}
cid
class {'falcon': cid => 'AJKQUI123JFKSDFJK` # ...其他必需参数}
cid
如果您的公司需要配置令牌来注册代理,您可以使用provisioning_token
参数。
class {'falcon': cid => 'AJKQUI123JFKSDFJK`, Provisioning_token => '1234567890' # ...其他必需参数}
您可以使用proxy_host
、 proxy_port
和proxy_enabled
参数为代理配置代理设置。
注意Mac 安装没有特定于代理的代理设置。相反,它使用操作系统的代理设置。将值传递给这些参数不会为 Mac 配置任何代理设置。
类{'falcon':cid =>'AJKQUI123JFKSDFJK`,provisioning_token =>'1234567890,'proxy_host =>'neptune.example.com',proxy_port =>'8080',proxy_enabled => true
}
如果您想使用api
install 方法将代理版本固定到特定版本,则可以将version_manage
设置为 true。
在下面的示例中,我们使用version_decrement
,但它对所有人来说都是相同的。 Puppet 将查阅 API 以确定version_decrement => 2
解析为哪个版本。然后它将下载该版本并确保其已安装。
随后的每次运行都会检查 api 以查看返回的版本是否是已安装的版本。例如,如果发布了新版本,则会导致检查返回的版本发生更改,从而导致代理升级到新的n-2
版本。
warning :这会导致模块每次运行时都会查阅 API,以确保 API 返回的版本是已安装的版本。这可能会导致大型部署出现速率限制问题。如果您想要自动升级/降级并使用
api
安装方法,通常建议将version_manage
设置为false
并允许 CrowdStrike 更新策略而不是 Puppet 进行升级/降级。
class {'falcon': version_manage => true client_id => Sensitive('12346'), client_secret => Sensitive('12345'), update_policy => 'platform_default' cid => 'AJKQUI123JFKSDFJK` # ...其他必需参数}
使用local
的install_method
类 {'falcon': install_method => 'local', package_options => { 'ensure' => '32.4.3', 'source' => '/tmp/sensor-32.4.3.rpm' } }
api
与local
安装方法一般来说,如果version_manage
设置为false
则api
方法适用于大多数用例。如果version_manage
设置为true
您可能会遇到 api 速率限制。
如果您想要完全控制并且不想利用 API,则可以使用local
安装方法。
通常,管理包的 Puppet 模块控制该包从安装到删除的整个生命周期。事实上 CrowdStrike 代理包不公开,这使得这变得困难。
我们仍然想提供一种快速安装软件包的方法,因此我们创建了api
install 方法。此方法将要求您提供 api 凭据,然后我们将从 CrowdStrike API 下载正确的包版本。有一些参数可以让您控制行为,例如设置update_policy
。这将导致模块根据更新策略的建议下载正确的版本。这里分别举例。
但是,此方法可能并不适合所有人,因此创建了local
安装方法,使您可以完全控制传感器的安装方式。
api
安装方法如何工作api install 方法将使用 falcon api 下载正确的软件包版本。正确的包版本取决于您提供的参数。您可以在此处查看每个示例。
第一次运行将导致 Puppet 调用适当的 CrowdStrike api 来获取下载传感器包所需的信息。然后它将下载传感器包。之后,普通的傀儡资源就会接管。
如果将version_manage
设置为true
则每次运行都会导致模块查阅 CrowdStrike API 以获取适当的包版本。然后它会判断安装的版本是否与返回的版本相同。如果它们不相同,那么它将下载正确的软件包版本并执行适当的安装/更新/降级操作。
如果将version_manage
设置为false
,则仅在未安装 CrowdStrike 传感器时才会发生 api 调用。
api
安装方法的主要限制是 api 速率限制。我们自己还没有遇到这些问题,但是当使用api
install 方法并将version_manage
设置为true
时,大型安装可能会达到速率限制。
每次 Puppet 为节点编译目录时,它都会使用 API 来确定应安装哪个版本的代理。如果代理已经使用正确的版本,则不会进行进一步的 api 调用。
将version_manage
设置为false
将阻止任何 api 调用,除非未安装代理。
减少 API 调用的最佳方法是将version_manage
设置为false
。这将确保仅在未安装代理时调用 API。这应该可以防止 API 速率限制问题。
Apple 平台需要移动设备管理 (MDM) 配置文件才能在没有用户提示的情况下安装内核扩展。由于此限制,该模块将仅下载并安装 Falcon Sensor。 CrowdStrike 文档中的 Mac 部署指南概述了配置 Mac 传感器以开始向CID
报告所需的步骤。
如果您想开发新内容或改进此集合,请提出问题或创建拉取请求。欢迎所有贡献!
请参阅许可证了解更多信息。