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区域启用AWS Config记录 .
-
-
配置SQS队列并将其订阅到SNS主题。
-
在AWS控制台中使用搜索栏查找"Amazon SQS"。
-
在 Amazon SQS 页面中,打开左侧菜单并点击 队列 .
-
在 队列 列表中,点击 创建队列 .
-
在 详细信息 部分,对于 类型 字段,选择 标准 .
-
为队列输入一个名称。
-
其余字段保留默认值并点击 创建队列 .
您将被重定向到队列的专属页面。
-
复制队列URL和ARN值以备后用。
-
在SNS订阅标签页中,点击 订阅Amazon SNS主题 .
-
在下拉菜单中选择您在步骤3中创建的SNS主题,然后点击 保存 .
您将被重定向到队列的专属页面。
-
点击 访问策略 选项卡。
-
在 访问策略(权限) 部分,点击 编辑 .
-
复制以下代码块:
{ "Sid": "Stmt1678745203026", "Effect": "允许", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sqs:发送消息", "Resource": "队列ARN", "Condition": { "StringLike": { "aws:来源ARN": "存储桶ARN" }, "StringEquals": { "aws:来源账户": "账户ID" } } } -
向下滚动至 访问策略 部分,在策略的最后一条语句后添加逗号,并将代码块粘贴在最后一个闭合方括号前的新行上。
-
更新代码中的三个占位符:
存储桶ARN,账户ID和队列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 需要通过IAM服务账户访问S3存储桶和SQS队列,因此必须为该账户配置访问这两项服务的权限。
配置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替换为您在 配置必要的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 选项。
-
在左侧菜单中点击 存储桶 .
-
在 存储桶 页面,点击您在第1步 配置必要AWS服务 .
-
在存储桶详情页面,点击 权限 标签页。
-
向下滚动至 存储桶策略 部分并点击 编辑 按钮。
-
复制以下代码块:
{ "Sid": "允许传感器用户访问", "Effect": "允许", "Principal": { "AWS": "IAM_SENSOR_USER_ARN" }, "Action": [ "s3:获取对象", "s3:放置对象", "s3:列出存储桶" ], "Resource": [ "BUCKET_ARN/*", "BUCKET_ARN"], "Condition": { "StringEquals": { "AWS:源账户": "ACCOUNT_ID" } } } -
在 策略 部分,在策略的最后一条语句后添加逗号,并将代码块粘贴到新的一行,位于最后一个闭合方括号之前。
-
更新代码中的三个占位符:
IAM_SENSOR_USER_ARN,ACCOUNT_ID和QUEUE_ARN,使用来自 配置必要的AWS服务 的步骤2g和2h,以及来自 为IAM服务账户应用权限策略 . -
点击 保存更改 .
您将被重定向到存储桶详细信息页面, 权限 选项卡已选中。
通过访问点策略配置对S3存储桶的有限公共访问
要通过访问点策略配置对S3存储桶的有限公共访问,请按照以下步骤操作:
-
在 权限 选项卡的S3存储桶详细信息页面中,转到 阻止公共访问(存储桶设置) 部分。
-
点击 编辑 按钮。
-
在 编辑区块公共访问(存储桶设置) 页面,取消勾选 阻止所有公共访问 复选框。
-
勾选以下两个复选框: 阻止通过 新 访问控制列表(ACLs) 和 阻止通过 任意 访问控制列表(ACLs) .
-
点击 保存更改 .
-
在弹出窗口中输入“确认”并点击 确认 按钮。
您将被重定向至存储桶详情页面。
此配置仅向先前步骤中配置的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服务 的步骤2g和2h,以及 为IAM服务账户应用权限策略 . -
滚动页面并点击 保存 按钮。
配置生命周期规则
这是一个可选配置步骤,旨在管理S3存储成本,因为它会清除已被 GravityZone .
若不想执行此步骤,请跳转至 设置AWS传感器 .
配置生命周期规则需遵循以下步骤:
-
在AWS控制台搜索栏输入"S3"并选择 S3 选项。
-
在左侧菜单中点击 存储桶 .
-
在 存储桶 页面,点击您在 配置必要AWS服务 .
-
在存储桶详情页面,点击 管理 标签页。
-
在 生命周期规则 部分,点击 创建生命周期规则 按钮。
-
在 创建生命周期规则 页面中,为规则命名。
-
在规则作用范围中,选择 应用于存储桶中的所有对象 选项。
-
勾选 我确认此规则将应用于存储桶中的所有对象 复选框。
-
在 生命周期规则操作 部分,勾选以下选项:
-
使对象的当前版本过期
-
删除过期的对象删除标记或不完整的分段上传
-
-
在 使对象的当前版本过期 部分,于 对象创建天数 字段中输入
30. -
在 删除过期的对象删除标记或不完整的分段上传 部分,于 天数 字段中输入
30. -
点击 创建规则 .
配置AWS传感器
-
在 配置 > 传感器管理 页面,选择 新增 以集成新传感器。
-
选择要部署传感器的公司并点击 下一步 .
-
选择 AWS 传感器并点击 集成 .
-
在 检查要求 页面,确认已完成先决步骤。
-
为集成命名并提供必要的AWS详细信息。
-
选择 测试连接 .
-
选择 添加传感器 .
新集成将出现在 传感器管理 网格中。