跳至主内容

为实时搜索配置AWS并执行runLiveSearchQuery

若要将实时搜索结果上传至S3存储桶,需预先配置AWS(亚马逊云服务平台),包括创建IAM角色、配置目标存储桶及定义必要访问策略。

该流程依赖跨账户访问机制,Bitdefender将代入用户在AWS中提供的角色,安全地将结果上传至指定S3(简单存储服务)存储桶。配置AWS步骤如下:

  1. 登录AWS云平台。

  2. 创建S3存储桶。前往 亚马逊S3 > 存储桶 > 创建存储桶 并创建S3存储桶。

    注意

    有关此流程的更多信息,请参阅 此知识库文章 .

    存储桶中保存的信息将存储在以下路径中: <companyId>/<endpointProtectedEntityId>/osquery_<endpointProtectedEntityId>_<date>.json .

    变量

    描述

    companyId

    GravityZone 公司的ID。

    endpointProtectedEntityId

    表示端点的受保护实体的ID。

    date

    创建实时搜索任务的日期。

  3. 创建一个AWS角色以授予 GravityZone 上传文件到存储桶所需的权限。前往 IAM > 角色 > 创建角色 .

    注意

    有关创建角色的更多信息,请参阅 此亚马逊知识库文章 .

    在创建表单中选择 自定义信任策略 并添加具有以下格式的信任策略:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "Statement1",
                "Effect": "Allow",
                "Principal": {
                    "AWS": arn:aws:iam::789423628920:root
                },
                "Action": "sts:AssumeRole",
                "Condition": {
                    "StringEquals": {
                        "sts:ExternalId": <externalId>
                    }
                }
            }
        ]
    }

    该信任策略授予Bitdefender用户担任角色的权限。其中, Principal.AWS 字段指定了 亚马逊资源名称(ARN) ,即 Bitdefender 用户的ARN,用于定义允许担任该角色的主体。

    为增强安全性,还应配置 ExternalId 。这是一个自定义字符串,有助于防止未经授权的访问。该值可以是任何唯一标识符,在通过API调用 runLiveSearchQuery 方法时将作为参数传递。

  4. 添加存储桶策略。返回存储桶并进入 权限 ,添加以下存储桶策略:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "Statement1",
                "Effect": "Allow",
                "Principal": {
                    "AWS": <roleArn>
                },
                "Action": "s3:PutObject",
                "Resource": <bucketArn>
            }
        ]
    }

    参数

    描述

    Principal.AWS

    将访问存储桶的IAM角色的亚马逊资源名称(ARN)。

    例如: "arn:aws:iam::205620608461:role/osquery-role" .

    Resource

    S3存储桶及其对象的ARN,定义策略适用的范围。

    例如: "arn:aws:s3:::osquery-bucket-test/*" .

    注意

    有关存储桶策略的更多信息,请参阅 这篇亚马逊知识库文章 .

    该策略允许角色将对象放入S3存储桶。

  5. 为角色创建策略。前往 IAM > 策略 > 创建策略 .

    创建以下策略:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": "s3:PutObject",
                "Resource": <bucketArn>
            }
        ]
    }

    该策略授予角色对指定S3存储桶执行 PutObject 操作的权限。

    其中 Resource 字段定义了目标存储桶的ARN,指定角色允许上传对象的位置。例如: "arn:aws:s3:::osquery-bucket-test/*" .

  6. 使用 runLiveSearchQuery :

    {
        "params": {
            "companyId": <companyId>,
            "query": "select * from time;",
            "s3UploadConfig": {    
                "bucket": <bucketName>,
                "region": <bucketRegion>,
                "roleArn" : <roleArn>,
                "externalId" : <externalId>
            }
        },
        "jsonrpc": "2.0",
        "method": "runLiveSearchQuery",
        "id": "301f7b05-ec02-481b-9ed6-c07b97de2b7b"
    }

    示例

    {
        "params": {
            "companyId": <companyId>,
            "query": "select * from time;", // 或其他实时搜索查询
            "s3UploadConfig": {    
                "bucket": "osquery-bucket-test",
                "region": "eu-north-1",
                "roleArn": "arn:aws:iam::205620608461:role/osquery-role",
                "externalId": "12345678910"
            }
        },
        "jsonrpc": "2.0",
        "method": "runLiveSearchQuery",
        "id": "301f7b05-ec02-481b-9ed6-c07b97de2b7b"
    }

    注意

    有关此方法的更多信息,请参阅 runLiveSearchQuery 文档。

  7. 若您的终端通过中继服务器与GravityZone通信且无法访问S3存储桶,需在中继策略设置中将存储桶域名加入白名单。操作步骤如下:

    1. 前往 网络 > 策略 页面(位于GravityZone控制台),打开相关终端应用的策略。

    2. 进入 策略 > 常规 > 中继 > 通信 .

    3. API数据白名单域名 部分,将S3存储桶域名(例如 s3<区域>amazonaws.com )填入域名字段。

    4. 点击 加号 按钮添加域名。

    5. 选择 保存 .

    此举将允许存储桶的流量通行。