AWS传感器(单账户环境配置)
AWS传感器负责收集并处理用户、角色或AWS服务执行的配置变更及操作信息。
AWS传感器的完整配置流程包含两个阶段:
-
满足先决条件
此部分流程在您的AWS控制台中完成,您需要配置AWS CloudTrail和AWS Config服务,并创建一个SQS队列和一个S3存储桶供 GravityZone 访问。
-
配置传感器
此部分流程在 GravityZone 控制中心 完成。您需要提供AWS相关信息,以便 GravityZone 访问SQS队列和S3存储桶。
满足先决条件
此部分流程在您的AWS控制台中完成,您需要配置AWS CloudTrail和AWS Config服务,并创建一个SQS队列和一个S3存储桶供 GravityZone 访问。
在AWS控制台中配置AWS服务
注意
以下配置流程使用AWS根账户执行。如需使用其他账户类型操作,请参阅 配置AWS权限 文章了解如何为您的账户设置必要权限。
为确保AWS传感器正常工作,您需先在AWS控制台中配置若干AWS服务。需要配置一个S3存储桶用于收集AWS CloudTrail和AWS Config服务的日志。AWS Config服务还会将配置变更信息发送至AWS SNS主题。一个SQS队列订阅了该主题,因此也能接收配置信息。当存储桶中创建新对象时,S3存储桶还会向SQS队列发送通知。
GravityZone 需要访问S3存储桶和SQS队列。这是通过AWS IAM服务账户实现的,您需要为该账户配置包含下列权限的策略:
-
S3存储桶权限:
GetObject,PutObject和ListBucket -
SQS队列权限:
DeleteMessage,PurgeQueue,ReceiveMessage,以及ChangeMessageVisibility
若需将传感器集成用于事件响应操作,还需为整个IAM主体设置附加策略。以下是响应操作所需权限:
CreatePolicy
,
AttachUserPolicy
,
ListPolicies
,
ListAccessKeys
,和
DeleteAccessKey
.
最后,可在S3存储桶上配置生命周期规则,用于清理已被 GravityZone 提取的日志。此步骤旨在管理S3存储成本,属于可选操作,传感器集成无需此配置。
请注意,本节所述步骤可能因AWS环境、策略及需求差异而有所调整。更多详细信息请参阅 AWS官方文档 .
AWS传感器先决条件
在 AWS 中设置 GravityZone 传感器前,请完成以下步骤:
-
启用并配置必要的AWS服务 - 必须启用并配置AWS Config、AWS CloudTrail、Amazon SQS和Amazon SNS服务。
-
(可选) 在S3存储桶上 配置生命周期规则
重要提示
启用以下每项服务可能会产生额外费用: AWS CloudTrail , AWS Config , Amazon SQS , AWS S3 以及 Amazon SNS 。成功集成需要所有这些服务。
配置必要的AWS服务
-
配置多区域CloudTrail跟踪。
-
登录您的AWS控制台。
-
使用搜索栏查找"CloudTrail"。
-
在 CloudTrail 页面中,点击 创建跟踪 按钮。
-
为跟踪命名。
-
在 存储位置 部分,选择 创建新的S3存储桶 .
-
在 跟踪日志存储桶和文件夹 字段中输入唯一的存储桶名称。
-
在 日志文件SSE-KMS加密 部分,取消勾选 启用 复选框。
-
其余字段保持默认设置,然后点击 下一步 .
-
在 事件 部分,勾选以下三个类别: 管理事件 , 数据事件 和 洞察事件 .
-
在 管理事件 部分, API活动 下方,勾选 读取 与 写入 复选框。
-
在 数据事件 部分,展开 数据事件:S3 部分。
-
对于 数据事件类型 字段,从下拉菜单中选择 S3 。
-
对于 日志选择器模板 字段,从下拉菜单中选择 记录所有事件 。
-
在 洞察事件 部分,同时勾选以下两个复选框: API调用率 和 API错误率 .
-
点击 下一步 .
-
在 审核并创建 页面,点击 创建跟踪 .
您将被重定向至 跟踪 网格页面。
-
-
为AWS Config服务配置S3权限。
-
在 跟踪 网格中,点击 S3 存储桶。
-
在 对象 页面,点击面包屑导航菜单中列出的存储桶名称。
-
在存储桶页面,点击 权限 选项卡。
-
向下滚动至 存储桶策略 部分,点击 编辑 按钮。
-
复制以下代码块:
{ "Sid": "AWSConfigBucketPermissionsCheck", "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "BUCKET_ARN", "Condition": { "StringEquals": { "AWS:SourceAccount": "ACCOUNT_ID" } } }, { "Sid": "AWSConfigBucketExistenceCheck", "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": "s3:ListBucket", "Resource": "BUCKET_ARN", "Condition": { "StringEquals": { "AWS:SourceAccount": "ACCOUNT_ID" } } }, { "Sid": "AWSConfigBucketDelivery", "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "BUCKET_ARN/AWSLogs/ACCOUNT_ID/Config/*", "Condition": { "StringEquals": { "AWS:SourceAccount": "ACCOUNT_ID", "s3:x-amz-acl": "bucket-owner-full-control" } } } -
在 策略 部分,于最后一条语句后添加逗号,并将代码块粘贴到新的一行(右方括号之前)。
-
更新代码中的两个占位符:
BUCKET_ARN与ACCOUNT_ID。将 存储桶ARN 的值填写到 策略 部分上方显示的对应位置。保存这些值以备后用。 -
要查找您的账户ID,请点击
页面右上角的用户图标。您的账户ID会显示在下拉菜单中,紧邻用户名下方。
-
点击 保存更改 .
-
-
配置AWS Config并启用AWS Config记录功能
-
在AWS控制台中使用搜索栏查找"Config"。
-
在左侧菜单中,点击 设置AWS Config 。不要使用 一键设置 选项。
注意
此步骤假设当前AWS账户区域从未配置过AWS Config服务。若已配置过AWS Config服务,请通过左侧菜单访问 设置 页面。点击 编辑 ,勾选 启用记录 复选框并确认选择。随后按照下文描述的相同步骤继续操作。
-
在 常规设置 部分的 记录策略 ,选择 记录本区域当前及未来支持的所有资源类型 .
-
勾选 包含全局记录的资源类型 复选框。
-
在 AWS Config角色 字段中,选择 使用现有的AWS Config服务关联角色 选项。
其余字段可保留默认值。
-
在 交付方法 部分, Amazon S3存储桶 处选择 从您的账户中选择存储桶 选项。
-
在 S3存储桶名称(必填) 字段中,选择步骤1中预先创建的S3存储桶。
-
在Amazon SNS主题部分,勾选 将配置变更和通知流式传输至Amazon SNS主题 复选框。
-
选择 创建主题 选项。
-
输入SNS主题名称。
-
点击 下一步 连续点击两次,然后确认您的选择。
注意
这些步骤将为当前用户账户所在的AWS区域启用AWS Config记录功能。如需接收其他区域的AWS Config通知,请参阅 配置AWS Config并为其他AWS区域启用记录功能 .
-
-
配置SQS队列并订阅至SNS主题。
-
在AWS控制台搜索栏中输入"Amazon SQS"进行查找。
-
在 Amazon SQS 页面中,打开左侧菜单并点击 队列 .
-
在 队列 列表中,点击 创建队列 .
-
在 详细信息 部分,为 类型 字段选择 标准 .
-
输入队列名称。
-
其余字段保持默认值,点击 创建队列 .
系统将跳转至该队列的专属页面。
-
复制队列URL和ARN值以备后续使用。
-
在SNS订阅标签页中,点击 订阅Amazon SNS主题 .
-
在下拉菜单中选择您在步骤3创建的SNS主题,然后点击 保存 .
您将被重定向到队列的专属页面。
-
点击 访问策略 标签页。
-
在 访问策略(权限) 部分,点击 编辑 .
-
复制以下代码块:
{ "Sid": "Stmt1678745203026", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "QUEUE_ARN", "Condition": { "StringLike": { "aws:SourceArn": "BUCKET_ARN" }, "StringEquals": { "aws:SourceAccount": "ACCOUNT_ID" } } } -
向下滚动至 访问策略 部分,在策略的最后一条语句后添加逗号,并将代码块粘贴到新的一行,位于最后一个闭合方括号之前。
-
更新代码中的三个占位符:
BUCKET_ARN,ACCOUNT_ID和QUEUE_ARN,替换为步骤2g、2h和4g中的值。 -
点击 保存 .
-
-
配置S3存储桶事件。
-
在AWS控制台中使用搜索栏查找“S3”并选择 S3 选项。
-
在左侧菜单中,点击 存储桶 .
-
在 存储桶 页面,点击您创建的S3存储桶。
-
点击 属性 选项卡。
-
向下滚动至 事件通知 部分并点击 创建事件通知 按钮。
-
在 通用配置 部分,为通知配置提供一个名称。
-
在 事件类型 部分, 对象创建 下,勾选 所有对象创建事件 复选框。
-
在 目标 部分,在 目标 下,选择 SQS队列 选项。
-
在 指定SQS队列 下,选择 从您的SQS队列中选择 选项,并选择您在步骤4中创建的SQS队列。
-
点击 保存更改 .
-
接下来,您需要配置一个具有适当权限的IAM服务账户。
配置AWS权限
此过程需要IAM管理权限。
要配置必要的AWS权限,请按照以下步骤操作:
-
创建包含所需权限的策略:
-
如果您希望使用AWS传感器集成生成安全事件,请按照 配置IAM策略以生成安全事件 .
-
如果您希望使用AWS传感器集成生成安全事件并从 GravityZone 采取事件响应操作,请按照 配置IAM策略以生成安全事件 和 配置事件响应操作的IAM策略 .
-
GravityZone 需要访问S3存储桶和SQS队列,并通过IAM服务账户实现这一目标。因此必须为该账户配置这两个服务的访问权限。
配置用于生成安全事件的IAM策略
要配置用于生成安全事件的IAM策略,请按以下步骤操作:
-
使用搜索栏查找"IAM",并点击 身份与访问管理(IAM) 选项。
-
在左侧菜单中点击 策略 .
-
在 策略 页面,点击表格上方的 创建策略 按钮。
-
在 指定权限 页面,点击 JSON 按钮。
-
在 策略编辑器 部分,将现有文本替换为以下内容:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessToS3Bucket", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "BUCKET_ARN/*", "BUCKET_ARN"] }, { "Sid": "AllowAccessToSQSQueue", "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:ChangeMessageVisibility", "sqs:PurgeQueue" ], "Resource": "QUEUE_ARN" }, { "Sid": "ListAttachedRolePolicies", "Effect": "Allow", "Action": [ "iam:ListAttachedRolePolicies", "iam:ListRoles" ], "Resource": [ "arn:aws:iam::ACCOUNT_ID:*" ] }, { "Sid": "LightSail", "Effect": "Allow", "Action": [ "lightsail:GetInstances", "lightsail:GetRelationalDatabases", "lightsail:GetBuckets" ], "Resource": [ "*" ] } ] } -
更新代码中的两个占位符:
BUCKET_ARN和QUEUE_ARN替换为你在步骤2g和4g中复制的值 配置所需的AWS服务 . -
点击 下一步 .
-
在 策略详情 部分,为您的策略提供名称和描述,然后点击 创建策略 .
您将被重定向至 策略 页面。
若需直接从 GravityZone 执行事件响应操作,请继续遵循以下说明。否则请跳转至 为IAM服务账户应用权限策略 .
配置事件响应操作的IAM策略
要为事件响应操作配置IAM策略,请按以下步骤操作:
-
在 策略 页面,点击表格上方的 创建策略 按钮。
-
在 指定权限 页面,点击 JSON 按钮。
-
在 策略编辑器 部分,将现有文本替换为以下内容:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "iam:ListPolicies", "iam:AttachUserPolicy", "iam:CreatePolicy", "iam:DeleteAccessKey", "iam:ListAccessKeys" ], "Resource": [ "arn:aws:iam::ACCOUNT_ID:*" ] } ] } -
将代码中的
ACCOUNT_ID占位符替换为您在步骤2g中复制的值(参见 配置必要的AWS服务 . -
点击 下一步 .
-
在 策略详情 部分,为策略命名并填写描述,然后点击 创建策略 .
您将被重定向至 策略 页面。
为IAM服务账户应用权限策略
创建策略后,您需要创建一个IAM服务账户。在账户创建过程中,您需要为其配置一个或多个权限策略。
请按以下步骤创建并配置IAM服务账户:
-
在 策略 页面左侧菜单中点击 用户 .
-
点击 添加用户 按钮。
-
在 用户详细信息 部分,输入用户名并点击 下一步 .
-
在 设置权限 页面,选择 直接附加策略 选项。
-
在 权限策略 部分,查找并选择您之前创建的策略。
-
如需使用传感器集成生成安全事件,请选择通过 配置IAM策略以生成安全事件 .
-
如需使用传感器集成生成安全事件并通过 GravityZone 执行事件响应操作,请同时选择两个策略。
注意
不要仅选择事件响应策略,否则会导致传感器配置错误。
-
-
点击 下一步 .
-
点击 创建用户 .
您将被重定向至 用户 页面。
-
在 用户 页面中,点击网格中的用户名。
-
在用户页面中,转至 安全凭证 选项卡。
-
向下滚动至 访问密钥 部分,并点击 创建访问密钥 .
-
在 使用场景 部分中,选择 第三方服务 选项。
-
勾选 确认 复选框并点击 下一步 .
-
点击 创建访问密钥 .
-
在 获取访问密钥 页面中,复制 访问密钥 和 秘密访问密钥 的值以备后用。
-
点击 完成 然后 继续 .
您将被重定向至用户详情页面。
-
在用户详情页面中,从 摘要 部分复制用户ARN值并保存该信息以备后用。
授予IAM服务账户访问S3存储桶的权限
要为IAM服务账户授予S3存储桶访问权限,请按以下步骤操作:
-
在AWS控制台搜索栏中输入"S3"并选择 S3 选项。
-
在左侧菜单中点击 存储桶 .
-
在 存储桶 页面,点击您在 配置必要AWS服务 .
-
在存储桶详情页面,点击 权限 标签页。
-
向下滚动至 存储桶策略 部分,点击 编辑 按钮。
-
复制以下代码块:
{ "Sid": "允许传感器用户访问", "Effect": "允许", "Principal": { "AWS": "IAM_传感器用户ARN" }, "Action": [ "s3:获取对象", "s3:放置对象", "s3:列出存储桶" ], "Resource": [ "存储桶ARN/*", "存储桶ARN"], "Condition": { "StringEquals": { "AWS:源账户": "账户ID" } } } -
在 策略 部分,在策略的最后一条语句后添加逗号,并将代码块粘贴到新的一行,位于最后一个闭合方括号之前。
-
更新代码中的三个占位符:
IAM_传感器用户ARN,账户ID和队列ARN,使用来自 配置必要的AWS服务 的步骤2g和2h,以及来自 为IAM服务账户应用权限策略 . -
点击 保存更改 .
您将被重定向到存储桶详细信息页面, 权限 选项卡已选中。
通过访问点策略配置对S3存储桶的有限公共访问
要通过访问点策略配置对S3存储桶的有限公共访问,请按照以下步骤操作:
-
在 权限 在S3存储桶详情页面的 阻止公共访问(存储桶设置) 部分。
-
点击 编辑 按钮。
-
在 编辑阻止公共访问(存储桶设置) 页面,取消勾选 阻止所有公共访问 复选框。
-
勾选以下两个选项: 阻止通过 新 访问控制列表(ACL) 授予的存储桶和对象的公共访问 以及 任何 访问控制列表(ACL) .
-
点击 保存更改 .
-
在弹出窗口中输入"confirm"并点击 确认 按钮。
您将被重定向回存储桶详情页面。
此配置仅允许前几步设置的IAM服务账户进行公共访问。
为IAM服务账户授予SQS队列访问权限
要为IAM服务账户授予SQS队列访问权限,请按以下步骤操作:
-
在AWS控制台中使用搜索栏查找"Amazon SQS"。
-
在 Amazon SQS 页面中,打开左侧菜单并点击 队列 .
-
在 队列 列表中,点击您之前在 配置必要的AWS服务 .
-
在队列详情页面,点击 访问策略 选项卡。
-
点击 编辑 按钮。
-
复制以下代码块:
{ "Sid": "允许传感器用户访问", "Effect": "允许", "Principal": { "AWS": "IAM_传感器用户_ARN" }, "Action": [ "sqs:接收消息", "sqs:删除消息", "sqs:更改消息可见性", "sqs:清空队列" ], "Resource": "队列_ARN", "Condition": { "StringEquals": { "AWS:源账户": "账户_ID" } } } -
向下滚动至 访问策略 部分,在策略的最后一条语句后添加逗号,并将代码块粘贴到新的一行,位于最后一个闭合方括号之前。
-
更新代码中的三个占位符:
IAM_传感器用户_ARN,账户_ID和队列_ARN,使用来自 配置必要的AWS服务 ,以及步骤16来自 将权限策略应用于IAM服务账户 . -
向下滚动并点击 保存 按钮。
配置生命周期规则
这是一个可选配置步骤,旨在管理S3存储成本,因为它会清除已被 GravityZone .
若不想执行此步骤,请跳至 设置AWS传感器 .
要配置生命周期规则,请按以下步骤操作:
-
在AWS控制台中使用搜索栏查找“S3”并选择 S3 选项。
-
在左侧菜单中点击 存储桶 .
-
在 存储桶 页面,点击您在 配置必要的AWS服务 .
-
在存储桶详情页面,点击 管理 标签页。
-
在 生命周期规则 部分,点击 创建生命周期规则 按钮。
-
在 创建生命周期规则 页面中,为规则命名。
-
在规则作用范围中,选择 应用于存储桶中的所有对象 选项。
-
勾选 我确认此规则将应用于存储桶中的所有对象 复选框。
-
在 生命周期规则操作 部分,勾选以下复选框:
-
使对象的当前版本过期
-
删除过期的对象删除标记或不完整的分段上传
-
-
在 使对象的当前版本过期 部分中,于 对象创建后的天数 字段输入
30. -
在 删除过期的对象删除标记或不完整的分段上传 部分中,于 天数 字段输入
30. -
点击 创建规则 .
设置AWS传感器
-
在 配置 > 传感器管理 页面,选择 新增 以集成新传感器。
-
选择 AWS 传感器并点击 集成 .
-
在 检查要求 页面,确认已完成前提步骤。
-
为集成命名并提供必要的AWS详细信息。
-
选择 测试连接 .
-
选择 添加传感器 .
新集成将出现在 传感器管理 网格中。