IAM最佳实践自查清单
您创建亚马逊云科技账户的时候会有一个根用户身份,也就是root user用于登录Amazon,您的email和密码也称为您的根用户凭证。这个Root账号权限特别大,因此,如果账号丢失,造成的破坏也非常大。您应该妥善保护您的Root账号。
可以从以下方面避免Root账号被盗:
采用IAM最佳实践
保护好root账号
Secure root user
限制 AWS 根账户是您可以执行的首要也是最重要的操作之一,可以保护 AWS 账户的完整性和安全性。
•删除根用户的访问密钥
•使用 限制根用户的行为(中国区无法使用)
•将根电子邮件设置为通讯组列表,使用电子邮件通讯组列表可确保随着组织中的个人来来走而保留所有权和可访问性。
•补全账单联系人,为账单、操作和安全通知设置备用联系人。账户设置页面进行编辑修改。
root用户保护不好可能导致整个账号被黑客控制。非常多的企业因为root账号丢失遇到了服务器被攻击者用于挖矿,开启了最贵的服务器,使用了大量的网络带宽,一天可以损失1万左右美金。也有拥有重要数据的企业因为root账号丢失被黑客勒索。
iam-root-access-key-check
Root账号开启MFA
Ensure multi-factor authentication (MFA) is enabled for all IAM users especially for root user
root用户保护不好可能导致整个账号被黑客控制。
root-account-hardware-mfa-enabled root-account-mfa-enabled
监控root账号行为
Monitor root
根用户拥有完全权限包括您的账单信息,因此,要像保护您的信用卡号和其他敏感机密信息一样保护您的根用户访问密钥。如果root用户创建好admin账户后,删除访问口令就不应该继续使用了。
配置根用户使用时的告警通知。 操作指引 - Monitor and Notify on AWS Account Root User Activity
操作指引 - How to Receive Notifications When Your AWS Account’s Root Access Keys Are Used
安全原则是不使用root user,因此一旦发现有使用行为,应该立即查看账户是否依然安全。
删除未使用的IAM用户安全凭据
Unused IAM user credentials should be removed
应删除 90 天内未使用的 IAM 用户凭证。 操作指引
留存越多不使用的用户凭证丢失的风险越高。
AWS Config rule: iam-user-unused-credentials-check
Schedule type: Periodic
Parameters:
maxCredentialUsageAge
: 90
使用临时密钥
Use STS
为EC2、Lambda等实例分配IAM角色后,这些实例上的应用程序可使用临时密钥来访问亚马逊云API,无需在这些应用的配置文件中部署长期密钥。 操作指引
程序或者服务使用长期访问密钥,可能丢失造成服务被劫持或者敏感数据泄漏。
定期轮换密钥
Auto rotate keys
因此,定期轮换这些资源(例如,每 90 天一次)是保护您的资源免受未经授权的访问的关键步骤之一。 操作指引
长期不更换密码更容易被利用获取到权限
access-keys-rotated
关掉你不用的region
Close un-used region
添加SCP禁用不使用的region的所有操作。 操作指引
可以减小“爆炸半径”(安全风险影响范围)
有控制台访问密码的用户开启MFA
Ensure multi-factor authentication (MFA) is enabled for all IAM users that have a console password
当用户使用 MFA 访问系统时,可以安全地假定访问系统的用户是他们所说的用户。 启用MFA
可以多一层保护,否则密码保管不善就容易被攻击者控制云上资源,窃取敏感数据,实施勒索或者占用计算和网络资源
AWS Config rule: mfa-enabled-for-iam-console-access
拒绝重复使用密码
no password reuse
IAM 账户密码策略应防止重复使用密码。 应将帐户密码策略设置为防止使用最近五个使用的密码中的任何一个。 操作指引
密码重用增加了泄露密码被滥用的风险
iam-password-policy
策略不使用通配符
IAM customer managed policies that you create should not allow wildcard actions for services
在定义 IAM 策略时,您应该使用最小权限原则。这意味着您应该指定所需的每个确切权限,而不使用通配符,因为这可能会导致授予对某些不需要的操作、资源和委托人的访问权限。 推荐学习ABAC定义访问Amazon资源的权限。1-什么是ABAC;2-如何根据标签定义访问Amazon资源权限。
过于宽松的策略可能会授予对敏感资源的访问权限
AWS Config rule: iam-policy-no-statements-with-full-access
Schedule type: Change triggered
Parameters:
excludePermissionBoundaryPolicy
: True
配置密码强度
set password strength
IAM 账户密码策略应确保密码内容足够复杂。 确保 IAM 密码策略至少需要一个小写字母; 确保 IAM 密码策略至少需要一个数字; 确保 IAM 密码策略至少需要一个符号; 确保 IAM 密码策略至少需要一个大写字母; 操作手册
短小,简单的密码容易被暴力破解猜测到。
AWS Config rule: iam-password-policy
Schedule type: Periodic
Parameters:
RequireUppercaseCharacters
: true
RequireLowercaseCharacters
: true
RequireSymbols
: true
RequireNumbers
: true
MinimumPasswordLength
: 8
配置密码过期时间
IAM users' access keys should be rotated every 90 days or less
IAM 账户密码策略应指定最长期限。 帐户密码策略应设置为在 90 天或更短时间后使密码过期。 操作指引
长期有效的密码增加了密码最终被泄露的可能性
AWS Config rule: access-keys-rotated
Schedule type: Periodic
Parameters:
maxAccessKeyAge
: 90
不应创建超级权限用户
IAM policy should not have statements with admin access
超级管理员的权限过大,不管是丢失还是不正确的使用都会给整个AWS账号带来严重危害。
AWS Config rule: iam-policy-no-statements-with-admin-access
确保不给单独的user赋予权限
IAM users should not have IAM policies attached
确保 AWS 身份和访问管理 (IAM) 策略仅附加到组或角色,以控制对系统和资产的访问。user放在group中,仅给group和role创建policy。 To resolve this issue, create an IAM group, and attach the policy to the group. Then, add the users to the group. The policy is applied to each user in the group. To remove a policy attached directly to a user, see Adding and removing IAM identity permissions in the IAM User Guide.
给个人赋予权限以后很难注意和管理到,容易造成账户安全凭据泄露导致黑客实现勒索或者删库等行为
AWS Config rule: iam-user-no-policies-check
不允许使用IAM访问密钥
Deny ability to create IAM access keys
为了避免拥有永不过期的长期有效凭据,最终可能会暴露,一些公司完全禁止使用访问密钥。此策略拒绝创建 IAM user和访问密钥的能力。 不要使用user,真人访问统一通过SSO,程序访问使用role(如果添加了这个,那么前面和user有关的安全配置都可以不用管了)。添加拒绝创建user和Access Key。
添加SCP阻止创建用户和密钥
长期存在的密钥更容易暴露,导致服务器被劫持,数据泄露等问题。
拒绝离开Organization
Deny ability to leave Organization
一旦您完成了在帐户中设置护栏的所有艰苦工作,您希望避免帐户简单地离开您的组织,在那里它们将不再受到您的 SCP 的限制,因此可以防止这种情况。 添加拒绝账户离开Organization。
账户离开Organization后配置的SCP就不起效果了,那么前面的一些控制策略就会失效。
拒绝关闭CloudWatch事件收集
Deny ability to disrupt CloudWatch Event collection
你完成配置AWS账户满足各种安全基线,您需要确保您的配置不会被意外更改内容,或被攻击者修改试图避免检测和响应过程。 添加拒绝修改CloudWatch Rules,注意修改样例中resource的arn为自己的arn。添加拒绝修改CloudWatch Rules
意外关闭了安全配置,或者攻击者关闭后躲避了检测和响应流程。
拒绝修改一个重要的IAM role
Deny ability to modify an important IAM role
你完成配置AWS账户满足各种安全基线,您需要确保您的配置不会被意外更改内容,或被攻击者修改试图避免检测和响应过程。 添加拒绝修改你的重要IAM roles,比如系统管理员,安全审计员等,注意修改样例中resource的arn为自己的arn。添加拒绝修改你的重要IAM roles
避免攻击者获取高级权限后修改权限,绕过安全检查。
最后更新于