如何自动跨所有AWS账户执行查询 规避密钥明文存储风险
AWS跨组织多账户安全认证与审计脚本方案
安全凭证实现方案(替代本地存储密钥)
AWS有和Azure类似的凭证安全托管能力,完全不需要在本地持久化存储永久密钥,常用实现方式如下:
- 优先用AWS IAM Identity Center(原SSO):逻辑和Azure托管凭证/服务主体一致,首次登录仅需浏览器验证,临时凭证自动托管在AWS CLI缓存中,有效期可配置最长12小时,到期自动刷新,无明文存储密钥风险。
- 也可使用组织级IAM角色委托:在管理账户创建审计专用角色,绑定允许所有组织成员账户授信的策略,成员账户统一预置同名审计角色,仅信任管理账户的审计角色代入,脚本运行时自动通过AWS默认凭证链(环境变量/EC2实例角色/SSO缓存)获取凭证,不需要手动存储密钥。
- 若脚本在AWS环境(EC2/CodeBuild/Lambda)中运行,直接给运行资源绑定IAM角色即可,完全不需要手动配置任何凭证,凭证由AWS后端自动轮转。
跨账户审计脚本基础结构(Python示例,基于Boto3 + IAM Identity Center)
前置操作:先在本地执行aws configure sso完成SSO初始配置,示例中使用的SSO会话名称为org-audit-sso。
import boto3 from botocore.exceptions import ClientError # 1. 从SSO缓存自动获取管理账户凭证,无需手动输入密钥 org_client = boto3.client('organizations', region_name='us-east-1') # 2. 拉取组织下所有活跃账户 accounts = [] paginator = org_client.get_paginator('list_accounts') for page in paginator.paginate(): for account in page['Accounts']: if account['Status'] == 'ACTIVE': accounts.append(account) # 3. 跨账户执行审计逻辑的通用函数 def run_audit_for_account(account_id, role_name='OrganizationAuditRole'): # 代入目标账户的审计角色,获取临时凭证 sts_client = boto3.client('sts') try: resp = sts_client.assume_role( RoleArn=f'arn:aws:iam::{account_id}:role/{role_name}', RoleSessionName=f'audit-session-{account_id}', DurationSeconds=3600 ) credentials = resp['Credentials'] except ClientError as e: print(f"账户{account_id}角色代入失败: {e.response['Error']['Message']}") return # 用临时凭证创建目标账户的服务客户端 audit_client = boto3.client( 'config', # 可替换为需要的服务,比如guardduty、cloudtrail等 aws_access_key_id=credentials['AccessKeyId'], aws_secret_access_key=credentials['SecretAccessKey'], aws_session_token=credentials['SessionToken'], region_name='us-east-1' ) # 此处编写审计逻辑,比如检查配置规则合规性 # rules = audit_client.describe_config_rules() # 结果处理逻辑 if __name__ == '__main__': for account in accounts: print(f"正在审计账户: {account['Name']}({account['Id']})") run_audit_for_account(account['Id'])
注意事项
- 成员账户的审计角色可以通过AWS Organizations的StackSet批量部署,不需要逐个账户手动创建,权限仅开放审计需要的只读权限,遵循最小权限原则。
- 脚本全程不存储任何永久凭证,所有凭证都是临时生成,最长有效期不超过12小时,用完即销毁,安全能力和Azure同类方案对齐。
- 所有审计操作都会被CloudTrail记录,可追溯,符合安全合规要求。
内容的提问来源于stack exchange,提问作者superpippo
相关产品推荐
相关产品推荐

