亚马逊AWS官方博客

AWS 等保进阶指南(一):基于 Amazon SDK 自动对管理控制台口令策略进行审计

概述

Amazon SDK (Software Development Kit) 是亚马逊云科技为开发者提供的官方工具包,它简化了与亚马逊云科技服务的交互过程,允许开发者通过代码轻松管理和操作各种亚马逊云科技资源(如 EC2、S3、Lambda 等),实现云资源管理、数据处理、无服务器应用开发、自动化部署等多种场景。Amazon SDK for Python (Boto3) 是为亚马逊云科技基础设施服务提供的 Python API。

Amazon SDK 为客户在进行网络安全等级保护自查时提供了另一种方式,并且由于是通过代码自动化进行的检查,不仅可以大大提高效率,而且还避免了手动检查可能人为出错,并且 Amazon SDK 程序可以轻松扩展到多个账户和大量资源,无需额外的人力投入,具备较高的可扩展性。

下面,本文将网络安全等级保护三级基本要求中安全计算环境的身份鉴别“应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换”要求为例,演示如何通过 Amazon SDK for Python (Boto3) 使用 Python 代码对 Amazon 管理控制台的 Amazon IAM 口令策略进行等保自动检查。

准备工作

在使用 Boto3 进行自动检查之前,客户需要先准备开发环境。Boto3 的准备工作主要包括以下两个部分:安装 Boto3 和配置 Amazon CLI。详情客户可参考官方链接

注意:在为 Amazon CLI 配置 IAM 用户或者角色权限时,应遵循最小授权原则,本次演示的是安全审计相关方案,客户也可以给 IAM 分配内置托管的 SecurityAudit 权限。

正式开发

根据需求,我们需要获取 Amazon IAM 的口令策略,通过查阅 Boto3 文档,我们发现在 Boto3 中,我们可以使用 IAM 客户端的 get_account_password_policy() 方法直接获取到 Amazon IAM 控制台的口令策略。示例代码如下:

import boto3
iam_client = boto3.client('iam')
password_policy = iam_client.get_account_password_policy()
print(password_policy)

程序成功执行后,我们将获取到当前的控制台 IAM 口令策略。样例如下(每个字段的具体含义官方文档中也有说明):

{
    'PasswordPolicy': {
        'MinimumPasswordLength': 12,
        'RequireSymbols': True,
        'RequireNumbers': True,
        'RequireUppercaseCharacters': True,
        'RequireLowercaseCharacters': True,
        'AllowUsersToChangePassword': True,
        'ExpirePasswords': True,
        'MaxPasswordAge': 90,
        'PasswordReusePrevention': 5,
        'HardExpiry': False
    }
}

以上我们仅仅通过 Boto3 查询到了口令策略信息,接下来我们还需要对口令策略的数值依据等保要求进行自动化判定。示例代码如下:

import boto3

# 根据等保要求,设置评估标准,这里我们限制管理控制台的口令长度应不低于12位,包含3种字符,限期90天定期更换。
password_length = 12 
complexity = 3
password_age = 90

# 使用上面的代码获取口令策略
iam_client = boto3.client('iam')
# get_account_password_policy()以字典形式反馈口令策略,根据返回值定义,详细的口令策略在PasswordPolicy键值里面,因此这里增加键值,直接获取详细的口令策略。
password_policy = iam_client.get_account_password_policy()['PasswordPolicy']

# 接下来我们对口令复杂度状况进行自查,这里采用逐步自查的方式,如果没有设置相应参数,返回的数据中可能就没有相应字段,对于缺失的字段,我们默认将设置为False
required_character_types = 0
if password_policy.get('RequireUppercaseCharacters', False):
    required_character_types += 1
if password_policy.get('RequireLowercaseCharacters', False):
    required_character_types += 1
if password_policy.get('RequireNumbers', False):
    required_character_types += 1
if password_policy.get('RequireSymbols', False):
    required_character_types += 1

# 获取最小密码长度和密码过期时间,如果不存在则设为0
min_password_length = password_policy.get('MinimumPasswordLength', 0)
max_pasword_age = password_policy.get('MaxPasswordAge', 0)

# 接下来进行等保自查和判定
if (min_password_length >= password_length) and (required_character_types >= complexity) and (max_pasword_age <= password_age):     
    print(f"符合,Amazon IAM口令策略限制口令长度为{min_password_length},需要包含{required_character_types}中类型字符,并且{max_pasword_age}定期更换。") 
elif (min_password_length >= password_length) or (required_character_types >= complexity) or (max_pasword_age <= password_age):
    print(f"部分符合,Amazon IAM口令策略限制口令长度为{min_password_length},需要包含{required_character_types}中类型字符,{max_pasword_age}定期更换。") 
else:
    print(f"不符合,Amazon IAM口令策略不满足等保要求。")

自此,我们就实现了使用 SDK 自动对 Amazon 控制台口令策略的等保安全评估工作,可以快速、准确地评估亚马逊云科技账户的口令策略是否符合等保三级要求。这种自动化的方法不仅可以节省时间,还可以降低人工核查可能带来的错误。

当然,口令策略只是等保合规检查的一小部分。在实际的等保评估中,我们需要检查更多的安全控制措施。亚马逊云科技专业服务团队可为客户提供等保咨询服务,协助客户完成等保相关工作,为了帮助客户更全面地进行等保自查,我们开发了一款专门的等保自查工具。这个工具内置了等保全部的基线自动化核查功能并结合 GenAI 技术智能判定,可以帮助客户快速、准确地完成等保安全评估工作。它不仅可以降低人工核查可能存在的错误,还能根据等保算分公式和高风险判定指引对评估结果进行算分和风险判定,为客户提供精准全面的等保安全评估。

如果您对我们的等保自查工具感兴趣,或者需要更多关于等保的信息,欢迎联系您的客户经理或销售代表。我们的专业团队随时准备为您提供支持,帮助您在亚马逊云科技上落实安全要求。

总结

本文介绍了如何使用 Amazon SDK for Python (Boto3) 自动化审计亚马逊云科技管理控制台的口令策略,以满足等保三级要求。我们详细讲解了如何获取口令策略并进行合规性检查的 Python 代码。这只是等保合规自动化的一个小例子,但它展示了如何利用编程方法来简化和加速合规性评估过程。

本篇作者

王俊峰

亚马逊云科技专业服务团队安全顾问,加入亚马逊前,在国家级网络安全等级保护测评机构从事过多年的等保测评经验,专注于云安全合规、云安全解决方案等的咨询设计及落地实施,致力于为客户上云提供安全最佳实践,并解决客户上云中碰到的安全需求。

李阳

亚马逊云科技安全解决方案架构师,负责基于亚马逊云科技云原生安全服务的解决方案架构设计、咨询和落地,包括网络安全等级保护解决方案、多账号安全治理解决方案等。加入亚马逊云科技前曾在移动通信 5G 安全技术研究和标准化、国密算法及标准化、云计算安全产品管理(云安全运维审计、云应用身份管理 IDaaS)和解决方案方面有着丰富经验。