售前咨询
很多人用AWS时,一直用根账号,密码设得简单,甚至把密钥传到了GitHub。结果账号被盗,别人启动一堆机器挖矿,月底收到天价账单。这篇文章教你用IAM保护好账号。
IAM是AWS的身份和访问管理服务。简单说,就是管理“谁”能“做什么”。
用户:给每个人一个账号,比如张三、李四
组:把用户分组,比如“开发组”、“运维组”
角色:给程序用的临时身份
策略:规定能做什么,比如“只能读S3”、“可以启动EC2”
根账号权限太大,被盗了后果严重。所以第一件事是把它锁起来。
用根账号登录
点击右上角名字,选“安全凭证”
找到“多因素认证”,点“激活”
用手机上的Google Authenticator扫二维码
输入手机上显示的6位数字
以后登录根账号,除了密码还要输验证码。
进入IAM控制台
点击“用户”->“创建用户”
用户名输入“admin”
勾选“提供用户对AWS管理控制台的访问权限”
密码自己设一个,记住它
在权限页面,直接选“AdministratorAccess”
创建完成后,退出根账号,用admin登录
以后所有操作都用admin账号,根账号封存起来。
比如你有一个开发团队,只让他们看EC2,不能修改。
在IAM控制台,点击“组”->“创建组”
组名“开发组”
在策略列表里,搜索“ReadOnlyAccess”,勾选它
再搜索“AmazonEC2ReadOnlyAccess”,也勾上
点击“创建组”
点击“用户”->“创建用户”
用户名“张三”
勾选“提供用户对AWS管理控制台的访问权限”
密码自己设
在权限页面,把张三加入“开发组”
创建完成
这样张三登录后,只能看EC2,不能启动、停止或删除。
很多人写程序时,直接把访问密钥写在代码里。这是非常危险的做法,因为代码可能会泄露。
正确做法是给程序分配一个角色。
在IAM控制台,点击“角色”->“创建角色”
信任实体选“AWS服务”
使用场景选“EC2”(假设程序跑在EC2上)
附加策略,比如“AmazonS3ReadOnlyAccess”
角色名称“ec2-s3-readonly”
点击“创建角色”
启动EC2实例时,在“高级详情”里选择这个角色。实例内的程序就可以自动获取临时凭证访问S3,不需要任何密钥。
在IAM控制台,点击“用户”。看看哪些用户很久没登录了,可以禁用或删除。
点击用户,看“安全凭证”标签。如果用户有访问密钥但很久没用,可以删掉。
在IAM控制台,点击“Access Analyzer”,它会扫描你的策略,告诉你哪些权限可能太宽松了。
问:不小心把密钥泄露了怎么办?
答:立刻登录IAM控制台,找到那个用户,删除泄露的密钥。然后创建新密钥。
问:员工离职了怎么处理?
答:直接禁用或删除那个用户的账号。如果他还有密钥,一并删除。
问:策略太复杂看不懂怎么办?
答:用AWS的策略生成器。在创建策略时,可以选“可视化编辑器”,用下拉菜单选服务和操作,不用自己写JSON。
IAM是AWS安全的基石。锁好根账号,给每个人最小权限,程序用角色不用密钥,定期检查。这些事做起来不难,但能挡住大部分风险。