AWS账户安全实战——把根账号锁进保险箱
引言:为什么你的账号可能不安全
很多人注册AWS后,就一直用根账号操作,密码设得简单,甚至把密钥存在电脑桌面上。这样做的风险有多大?如果你的账号被黑,别人可以启动几百台服务器挖矿,月底你会收到天价账单,而且AWS不负责赔偿。这篇文章教你几招,把账号锁好。
一、根账号的“免死金牌”
根账号是AWS账户的超级管理员,权限大到可以删掉你所有的数据、关掉所有服务、注销整个账户。所以第一原则:根账号不要日常使用。
1.1 开启多因素认证
这是最简单也最有效的一步。多因素认证就是登录时除了密码,还要输一个动态验证码。就算密码被盗,没有验证码也进不来。
操作步骤:
用根账号登录AWS控制台
点击右上角你的名字,选“安全凭证”
找到“多因素认证”,点“分配MFA设备”
选“虚拟MFA设备”
手机上装Google Authenticator或Microsoft Authenticator
扫二维码,输入手机上显示的两组数字
点“分配MFA”
以后登录根账号,除了密码还要输验证码。
1.2 创建日常用的IAM用户
根账号锁起来后,创建一个普通用户日常用。
进入IAM控制台
点“用户”->“创建用户”
用户名:admin(或者你的名字)
勾选“提供用户对AWS管理控制台的访问权限”
密码自己设,记下来
权限:直接选“AdministratorAccess”
点“创建用户”
然后退出根账号,用这个admin账号登录。以后所有操作都用这个账号。
1.3 删除根账号的访问密钥
如果注册时不小心创建了根账号的访问密钥(Access Key),去“安全凭证”里找到“访问密钥”,如果有,全部删掉。日常用IAM用户的密钥,根账号不需要密钥。
二、IAM用户管理:给每个人最小权限
2.1 不给所有人管理员权限
很多公司图省事,给所有人“AdministratorAccess”,等于每个人都和根账号一样。正确做法是按需给权限。
比如开发人员只需要看EC2,不需要启动实例,就只给只读权限:
在IAM控制台,点“策略”->“创建策略”
选“可视化编辑器”
服务选EC2,操作选Describe、List这类只读操作
点“下一步”,填策略名称“EC2ReadOnly”
创建后,把这个策略给开发人员
2.2 用组管理权限
不要一个一个用户给权限,把用户分到组,给组授权。比如:
开发组:EC2只读、S3读写
运维组:EC2完全控制、RDS管理
财务组:账单只读
人员变动时,只需要加人进组或移出组,不用改权限。
2.3 定期清理闲置用户
在IAM控制台看“用户”,那些很久没登录的,可以禁用或删除。还有访问密钥,超过90天没用过的,也删掉。
三、给程序用角色,不要用密钥
3.1 密钥放代码里的风险
很多开发者在代码里写死访问密钥,传到GitHub。网上有爬虫专门扫GitHub找密钥,一旦发现,几小时内就会用来挖矿。
3.2 用IAM角色替代密钥
如果程序跑在EC2上,给EC2分配一个角色:
在IAM控制台,点“角色”->“创建角色”
信任实体选“AWS服务”,使用场景选“EC2”
附加需要的权限,比如“AmazonS3ReadOnlyAccess”
角色名称:ec2-s3-readonly
创建后,在启动EC2时,高级详情里选这个角色
程序里不需要任何密钥,AWS自动给临时凭证。
如果程序跑在Lambda、ECS上,也一样,给服务分配角色。
四、监控账号活动
4.1 启用CloudTrail
CloudTrail记录所有API调用,谁在什么时候做了什么,一清二楚。默认只保存90天,建议创建跟踪,把日志存到S3,长期保存。
进入CloudTrail控制台
点“创建跟踪”
名称:my-trail
存储位置:新建S3桶
点“创建”
4.2 设置GuardDuty
GuardDuty是AWS的威胁检测服务,用机器学习分析CloudTrail、VPC Flow Logs,发现异常行为。比如突然有很多API调用、有挖矿行为、有可疑IP登录。
进入GuardDuty控制台
点“启用GuardDuty”
等它扫描,有发现会显示
GuardDuty有30天免费试用,之后按量收费,不贵。
4.3 设置告警
在CloudWatch里设置告警,比如:
根账号登录就告警(根账号不应该被使用)
IAM策略变更就告警
安全组规则变更就告警
五、密码策略和密钥轮换
5.1 强制密码策略
在IAM控制台,点“账户设置”,可以设置:
密码最小长度:至少8位
要求包含大小写字母、数字、特殊字符
密码过期时间:90天
5.2 定期轮换密钥
如果有访问密钥,每90天换一次。在IAM控制台,点用户,进“安全凭证”,创建新密钥,把旧密钥禁用,确认程序都用了新密钥后,删掉旧密钥。
六、被黑了怎么办?
6.1 立即隔离
发现账号被黑,第一时间:
修改密码
禁用所有访问密钥
检查有没有不明EC2实例,立即终止
检查IAM有没有不明用户
6.2 查日志
去CloudTrail看,攻击者做了什么:启动了哪些实例、改了哪些安全组、访问了哪些数据。记录下来,后面追责和修复用。
6.3 联系AWS支持
如果损失很大,提交工单,说明情况。AWS可能会协助调查,但不一定会赔偿。
6.4 事后修复
重新创建被删的资源
收紧权限,删除多余的
检查代码里有没有硬编码的密钥
通知受影响用户(如果有数据泄露)
七、快速检查清单
每个月花10分钟检查这些:
根账号有MFA吗?
根账号的访问密钥删了吗?
日常用IAM用户吗?
IAM用户权限最小化了吗?
有长期不用的用户吗?
程序用的是角色,不是密钥吗?
CloudTrail开启了吗?
GuardDuty开启了吗?
八、结语
账号安全不是一次配置就完事,要持续检查。把根账号锁好,日常用IAM用户,给程序用角色,监控活动,定期轮换密钥。养成这些习惯,你的账号就安全多了。
如果需要更深入咨询了解可以联系全球代理上TG:jinniuge 他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。不懂找他们就对了。
3 .0
