赞
踩
本文是基于腾讯云产品:操作审计服务的技术实践,如果你需要更多了该服务,请点击官方链接:点击这里。最近年末,在查看各个云产品厂商服务的追踪进行了一波总结,对于企业在云上的数据安全以及使用历史痕迹的审计,本文会针对腾讯云 CloudAudit 服务进行展开来讲解,会让你了解在腾讯云上如何进行追踪痕迹,以及如何进行审计追踪单独的服务器(后面的有使用云审计 SDK 进行云监控的案例)。
来自官方的释义:操作审计 CloudAudit 是一项支持对您的腾讯云账号进行监管、合规性检查、操作审核和风险审核的服务。借助 CloudAudit,您可以记录日志、持续监控并保留与整个腾讯云基础设施中操作相关的账号活动。CloudAudit 提供腾讯云账号活动的事件历史记录,这些活动包括通过腾讯云管理控制台、API 服务、命令行工具和其他腾讯云服务执行的操作。这一事件历史记录可以简化安全性分析、资源更改跟踪和问题排查工作。
博主总结:这个服务是腾讯云监控服务的一种,类似于 AWS 的 CloudTrail,但是又有 AWS CloudWatch 的功能,博主理解是一个 AWS CloudTrail 与 CloudWatch 的结合体,甚至包含一些 AWS Config 的功能。
总结一句话就是:CloudAudit 是一种 腾讯云的监控服务,可记录在账号上进行的活动,并可以将日志文件传送至到 COS 存储桶。
吹逼的话博主这里就不多哔哔了,任何一个云厂商都有类似的服务,且必须要有。如果你有监控痕迹记录,公司有云审计要求的话,那么这个服务就需要了。
这里根据官方的说明,列举几个场景的举例,适合一些小伙伴更加方便了解学习该服务。
在云账号或资源存在安全问题的情况下,CloudAudit 记录的日志可用于深入分析原因。例如,CloudAudit 详细记录了用户的账号登录操作,包括操作时间、源 IP 地址以及是否使用多因素认证登录等信息。通过这些记录,用户能够准确判断账号是否存在潜在的安全问题。
当用户的资源经历异常变更时,CloudAudit 记录的操作日志能够协助用户追踪变更的原因。例如,当用户发现某个 CVM 实例停机时,通过 CloudAudit 可以获取相应的操作时间和源 IP 地址,从而进行深入分析停机操作的发起原因。
对于拥有多个成员的组织,若用户已经使用腾讯云的 CAM 服务来管理这些成员的身份,为满足组织的合规性审计需求,用户需要获取每个成员的详细操作记录。CloudAudit 记录的操作事件能够满足这种合规性审计需求,确保用户对组织内成员的活动有全面了解。
接下来我们直接体验使用 云审计的 SDK 来进行监控云主机登陆信息。
假如您的机器的操作系统是 CentOS,可以使用以下指令安装 PHP
yum install php php-devel
使用的命令如下:
cd /root/
wget http://devcloudaudit-1254962721.cosgz.myqcloud.com/qcloudapi-sdk-php-master.tar
tar -xvf qcloudapi-sdk-php-master.tar
执行过程如下:
[root@VM-8-7-centos ~]# wget http://devcloudaudit-1254962721.cosgz.myqcloud.com/qcloudapi-sdk-php-master.tar --2024-01-30 11:45:28-- http://devcloudaudit-1254962721.cosgz.myqcloud.com/qcloudapi-sdk-php-master.tar Resolving devcloudaudit-1254962721.cosgz.myqcloud.com (devcloudaudit-1254962721.cosgz.myqcloud.com)... 169.254.0.48 Connecting to devcloudaudit-1254962721.cosgz.myqcloud.com (devcloudaudit-1254962721.cosgz.myqcloud.com)|169.254.0.48|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 68608 (67K) [application/x-tar] Saving to: ‘qcloudapi-sdk-php-master.tar’ 100%[===============================================================================================================>] 68,608 --.-K/s in 0s 2024-01-30 11:45:28 (384 MB/s) - ‘qcloudapi-sdk-php-master.tar’ saved [68608/68608] [root@VM-8-7-centos ~]# ll total 68 -rw-r--r-- 1 root root 68608 Dec 16 2017 qcloudapi-sdk-php-master.tar [root@VM-8-7-centos ~]# [root@VM-8-7-centos ~]# tar -xvf qcloudapi-sdk-php-master.tar
执行状态结果如图所示:
登录腾讯云控制台 点击查看持久证书
链接:https://console.cloud.tencent.com/cam/capi
在提示的各种警告,直接点击蓝色按钮
同样点击确定按钮。
在 API 秘钥管理页面,点击新建秘钥
按钮,之后勾选知晓警告后,点击确定按钮,进行创建秘钥。
这里我们使用的是 PHP SDK 包中的 demo.php 做样例,也可以根据自身情况编写,将你的持久证书的SecretId
与SecretKey
配置到 PHP 页面中,如下图所示。
vim /root/qcloudapi-sdk-php-master/demo.php
将下图所示中,标识的SecretId
和SecretKey
替换成自己的 SecretId 和 SecretKey 即可。
cd /root/
wget http://update2.agent.tencentyun.com/update/linux_stargate_installer
chmod +x linux_stargate_installer
./linux_stargate_installer
执行命令过程如下:
[root@VM-8-7-centos ~]# cd /root/ [root@VM-8-7-centos ~]# wget http://update2.agent.tencentyun.com/update/linux_stargate_installer --2024-01-30 13:16:56-- http://update2.agent.tencentyun.com/update/linux_stargate_installer Resolving update2.agent.tencentyun.com (update2.agent.tencentyun.com)... 169.254.0.15 Connecting to update2.agent.tencentyun.com (update2.agent.tencentyun.com)|169.254.0.15|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 30753704 (29M) [application/octet-stream] Saving to: ‘linux_stargate_installer’ 100%[====================================================================================================>] 30,753,704 10.6MB/s in 2.8s 2024-01-30 13:16:58 (10.6 MB/s) - ‘linux_stargate_installer’ saved [30753704/30753704] [root@VM-8-7-centos ~]# chmod +x linux_stargate_installer [root@VM-8-7-centos ~]# ./linux_stargate_installer stop stargate if exist install stargate stargate/ stargate/logs/ stargate/admin/ stargate/admin/delcrontab.sh stargate/admin/start.sh stargate/admin/stop.sh stargate/admin/uninstall.sh stargate/admin/sgagenttask stargate/admin/restart.sh stargate/admin/addcrontab.sh stargate/etc/ stargate/etc/base.conf stargate/bin/ stargate/bin/sgagent64 stargate/bin/sgagentarm64 stargate/bin/sgagent32 stargate/lib/ stargate/lib/libstdcxx-arm64/ stargate/lib/libstdcxx-arm64/libstdc++.so.6.0.24 stargate/lib/libstdcxx-x86_64/ stargate/lib/libstdcxx-x86_64/libstdc++.so.6.0.20 install success ‘/usr/local/qcloud/stargate/bin/sgagent’ -> ‘/usr/local/qcloud/stargate/bin/sgagent64’ install python update /usr/local/qcloud/stargate/lib/libstdc++.so.6 reset state reset state succ. start sgagent stargate agent run succ finish [root@VM-8-7-centos ~]#
执行过程的截图如下:
你可以自定义 demo.php 中的 $alarmAction
变量,设置需要监控的 Action 名字。在本次示例中,默认的是【账户登录】事件。
最后我们使用crontab -e
指令进行添加定时服务
crontab -e
将以下指令添加到最后一行即可,该定时任务是每分钟执行一次,并且记录警告日志。
*/1 * * * * cd /root/qcloudapi-sdk-php-master/ && php demo.php >> nohup.out > /dev/null 2>&1
最后重启 crontab 保证以上配置生效。
service crond restart
在操作审计服务页面,可以查询到我们上述配置的登陆服务器敏感操作的记录信息
先访问操作审计页面(点击这里,或复制后面的链接):https://console.cloud.tencent.com/cloudaudit
在这个操作审计页面中可以查询近七天的操作记录,这包括一些默认的操作以及类似我们调用 PHP SDK 自定义的记录。我们下图标注的第一个就是本博文配置的审计告警,用来监控登陆服务器记录的。
点击事件名称,进入到事件详情页面。
我们点击某条事件的事件名称
后,右侧窗口进入到事件详情页面,在窗口右侧事件记录中可以查看到所有详细的信息,无论是时间戳,服务器,请教ID、事件ID什么操作等,都有详细记录。
{ "userIdentity": { "principalId": "100099999999", "accountId": "100099999999", "secretId": "AKID999999999999999999999999999999994C6Y", "sessionContext": {}, "type": "Root", "userName": "root" }, "eventRegion": "ap-guangzhou", "eventVersion": 2, "errorCode": "0", "errorMessage": "permission verify", "requestID": "25999999999", "eventID": "2599999999915", "apiVersion": "2.0", "eventType": "ApiCall", "actionType": "Read", "httpMethod": "POST", "apiErrorCode": 0, "apiErrorMessage": "", "userAgent": "", "eventTime": 1706597281, "sensitiveAction": "0", "sourceIPAddress": "175.111.111.111", "resourceType": "cloudaudit", "eventName": "LookUpEvents", "eventSource": "cloudaudit.api.qcloud.com/v2/index.php", "resourceSet": [], "requestParameters": { "Action": "LookUpEvents", "EndTime": "1706597281", "LookupAttributes": "[{\"AttributeKey\":\"string\",\"AttributeValue\":\"ConsoleLogin\"}]", "MaxResults": "10", "Nonce": "35091", "Region": "gz", "RequestClient": "SDK_PHP_1.1", "SecretId": "AKIDjKhrmTwBC1c09Ak7GACAuX2LQM8h4C6Y", "StartTime": "1706597161", "Timestamp": "1706597281" }, "responseElements": "\"{}\"", "resources": "[\"*\"]", "resourceName": "", "tags": [ "" ] }
当具有以下需求的客户应该使用 CloudAudit:
现阶段在操作记录页面里,最多只能查询30天周期的信息,这个周期最长可以查看近3个月的记录,如果需要查看更长时间的操作记录,请使用跟踪集功能,日志数据将持久化存储到指定存储桶或CLS中。
根据等保合规2.0及网安法条例要求,企业云上业务日志必须保存180天以上,建议可以创建跟踪集,投递到存储桶,方便长期保存操作日志。
一个操作记录包括访问密钥、区域、错误码、事件 ID 、事件名称、事件源、事件时间、请求 ID 、源 IP 地址、用户名。
一般情况下,CloudAudit 会在 API 调用后5 - 10分钟传送操作记录事件到用户指定的 COS Bucket。
不会。启用 CloudAudit 既不会影响腾讯云资源的性能,也不会增加 API 调用的延时。
在腾讯云的可观测平台中(点击这里),提供了免费短信通知的功能(但是条数有限:1000条),同时提供了命令行发送工具 cagent_tools,就是我们上面的 shell 命令中的cagent_tools
。(这里挖个坑,过几天写一个如何配置这个短信的操作)。
在上面博主讲解了腾讯云的云审计 CloudAudit服务的基本介绍以及一个使用案例,无论你是开发者还是云架构负责人,对于安全审计以及监控服务安全状态都应该了解以及掌握。
试想一下,如果你是开发者,开发了一个产品,产品部署到某一个服务器后,你如何进行监控,如果这个产品使用了多个云服务器或者云产品,对于你来说监控就是一个比较繁琐的操作,这个时候腾讯云的云审计 CloudAudit 就显现出来的他独特的作用;另外一种情况也是比较常见的,就是当作为云架构的时候,审计部分必须要在考虑范围内,一般情况操作记录痕迹必须保存2年,这个时候传统操作可能有audit表或者log一方面,但是云服务相关的操作你就要想办法来监控了,在腾讯云CloudAudit 中提供了自己的 API,你可以设计成监控脚本,自动的监控某些服务,并且在全局监控上也有相关的监控记录,在我写的文章实践里面也有写。
对于腾讯云 CloudAudit 监控内容来看这点令我印象比较深刻的是,他几乎结合了友商的 AWS CloudTrail 与 CloudWatch 功能,这无疑简化了某些运维的场景,这一点是值得推荐的。后续我会在输出几篇关于腾讯云 CloudAudit 监控相关的文章,敬请期待。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。