AWS企业资质代办 AWS 亚马逊云账号云端加固方案
别再让根账号裸奔了:AWS账号加固不是选修课,是生存必修
想象一下:你刚在AWS控制台点完‘创建EC2实例’,顺手记下根账号密码,还把它存在Mac备忘录里——恭喜,你已成功解锁《云上社死初阶教程》第一章。这不是段子,是真实发生在我同事身上的事。他第二天就收到AWS账单预警:$17,432.68,全是被挖矿脚本跑满的p3.16xlarge实例。根源?根账号密钥泄露+没开MFA+没设密码策略。
AWS账号加固,不是等红蓝对抗时才翻文档的‘事后补丁’,而是每个新账号诞生后头三小时必须干完的‘云上洗手消毒’。它不炫技,不烧钱,但能让你半夜三点不被短信炸醒,老板问‘为啥数据库被删了’时,你能淡定回一句:‘查了CloudTrail,是某实习生用root密钥调的DeleteDBInstance,我们上周已禁用该密钥并启用了SCP策略。’——这话一出口,升职加薪未必,但至少不用写检讨。
第一步:给根账号套上铅封,钥匙扔进保险柜
根账号(Root Account)不是管理员,它是AWS世界的创世神+核按钮+ATM机三位一体。AWS官方文档第7页第3行白纸黑字写着:‘Never use root credentials for daily tasks.’——翻译过来就是:‘求你了,别用!’
实操三板斧:
- 立即停用根账号的访问密钥:
aws iam delete-access-key --user-name root --access-key-id AKIA...(先用aws iam list-access-keys --user-name root查出来); - 强制开启MFA:不是‘建议’,是‘否则不准进控制台’。推荐使用硬件YubiKey或Google Authenticator,别用SMS——去年有客户因SIM卡劫持丢了整个S3桶;
- 改掉默认邮箱密码:根账号邮箱密码≠AWS密码!务必单独设置强密码(16位+大小写数字符号),且绝不复用其他平台密码。
做完这三步,根账号就变成‘只读档案馆’——只用于创建IAM用户、重置MFA、查看账单总览。日常运维?交给IAM角色去扛。
第二步:IAM不是‘人名缩写’,是权限的精密手术刀
很多团队的IAM策略长这样:{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"*","Resource":"*"}]}……这哪是策略?这是给黑客发的VIP通行证。
真正靠谱的IAM实践,得学做裁缝:量体裁衣,寸寸计较。
- 最小权限原则落地口诀:‘先拒绝,再允许;先资源,再动作;先标签,再ARN’。比如开发人员只需部署ECS任务?那就只允许
ecs:RunTask,且Resource限定在arn:aws:ecs:us-east-1:123456789012:cluster/dev-cluster,再加个Condition要求必须带Environment=dev标签; - 禁止‘星号通配符’滥用:
"Action": "s3:*"不如拆成"s3:GetObject"和"s3:PutObject",再用"Resource": "arn:aws:s3:::my-bucket/logs/*"精准锁定路径; - 用角色(Role)代替用户(User):EC2实例要访问S3?给实例配置IAM角色,而非在代码里硬编码AccessKey。Lambda函数同理——AWS会自动轮换临时凭证,比你手动三年不换密钥安全一万倍。
第三步:日志不是摆设,是你的云上行车记录仪
没开CloudTrail?等于开车不装黑匣子。等出事再查,早成灰烬。
必须开启的三大日志组合拳:
- CloudTrail 多区域跟踪:不止记录us-east-1,所有区域操作全捕获。目标S3桶需开启版本控制+对象锁定(Object Lock),防篡改;
- AWS企业资质代办 CloudWatch Logs 实时告警:配置过滤器,对
eventName=ConsoleLogin且errorMessage非空的事件触发SNS通知——凌晨3点有人登录?马上微信弹窗; - Config 合规快照:每2小时扫描一次EC2是否开启加密、S3桶是否公开、RDS是否启用备份。用AWS提供的
AWSSecurityBestPractices规则包,一键启用,省心又专业。
小技巧:把CloudTrail日志接入Elasticsearch或OpenSearch,用Kibana画个‘异常登录热力图’,运维晨会直接展示——比Excel表格直观十倍。
第四步:网络层加固:安全组不是‘防火墙’,是门禁系统
很多人以为开了WAF就高枕无忧?错。WAF拦的是HTTP层攻击,而SSH爆破、RDP暴力破解、Redis未授权访问,全在传输层横冲直撞。
安全组实操铁律:
- 默认拒绝所有入站:新建安全组第一件事,删掉‘0.0.0.0/0’;
- SSH/RDP仅限跳板机IP:用
aws ec2 authorize-security-group-ingress精确到/32,配合堡垒机Session Manager,彻底告别密码明文; - 数据库端口绝不暴露公网:RDS、ElastiCache一律VPC内网访问,外网应用走API Gateway + Lambda代理,多一层封装,少一分风险。
额外彩蛋:用Network ACL做‘第二道门禁’,比如在子网ACL中拒绝常见恶意IP段(可订阅Aliyun威胁情报或FireHOL IP列表),成本几乎为零,防御效果肉眼可见。
第五步:最后防线——用SCP管住所有账号的‘手脚’
就算IAM策略写得再细,只要某个子账号有iam:CreatePolicy权限,就能自己给自己造个‘上帝权限’。这时候,Service Control Policies(SCP)就是企业级刹车片。
在Organizations中为OU(如‘Production-Accounts’)绑定SCP:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyRootAccess",
"Effect": "Deny",
"Principal": {"AWS": ["arn:aws:iam::*:root"]},
"Action": "*",
"Resource": "*"
},
{
"Sid": "DenyEC2RegionLock",
"Effect": "Deny",
"Action": "ec2:*",
"Resource": "*",
"Condition": {"StringNotEquals": {"aws:RequestedRegion": ["us-east-1", "ap-northeast-1"]}}
}
]
}
这段策略干了两件事:1)根账号在所有子账号里彻底失权;2)生产账号只能在东京/美东建EC2,防止误操作跑出天价账单。SCP不授予权限,只设天花板——这才是真正的‘权限熔断’。
结语:加固不是终点,是每日晨会的第一项议程
写完这篇,我顺手检查了自己三个AWS账号:一个根账号MFA已启用,访问密钥清零;两个生产账号的SCP已生效,CloudTrail日志桶开启对象锁定;就连CI/CD用的IAM角色,也刚删掉了多余的s3:ListAllMyBuckets权限。
云安全没有银弹,但有笨办法:每周五下午花15分钟,运行一遍aws iam list-users --query 'Users[?PasswordLastUsed==`null`].UserName',揪出半年没登录的僵尸账号;每月初导出一次IAM凭证报告,看谁还在用AccessKey而不是角色;每季度让新人跑一遍‘权限最小化挑战赛’——谁能用最少的权限完成部署,奖励星巴克券。
记住:最贵的安全方案,不是买一堆监控大屏,而是让每个工程师养成‘动前先查策略,上线必过审计’的肌肉记忆。当你某天发现,连实习生都能对着CloudTrail日志反向追踪到某次误删操作的完整链路时——恭喜,你的AWS账号,终于活成了它该有的样子:低调、坚韧、且沉默地扛住一切风暴。

