本文面向在AWS日本区域(ap-northeast-1/ap-northeast-3)上部署云资源的运维/安全工程师,目标是建立一套可操作的身份管理(IAM/SSO/SAML)与审计(CloudTrail/AWS Config/CloudWatch)配置,兼顾安全、合规与可审计性。
步骤:登录管理账号 -> AWS Organizations 控制台 -> 创建组织并启用全部功能 -> 建立OU(如:Core、Production、Dev)-> 为每个环境创建独立子账号(通过Organizations创建账号)。建议:将审计账号单独置于Core OU,用于集中存储日志与聚合。
步骤:为根账号设置硬件/虚拟MFA(控制台 Security credentials),创建单独的管理账号(非根)并禁用根账号日常使用。通过aws iam update-account-password-policy设置密码策略,例如:最小12位、强制复杂度、密码过期策略。
示例CLI:aws iam update-account-password-policy --minimum-password-length 12 --require-symbols --require-numbers --require-uppercase-characters --require-lowercase-characters --max-password-age 90
步骤:Organizations -> Policies -> Service control policies -> 新建JSON策略并附加到OU/Account。示例SCP(禁止关闭CloudTrail、禁止创建未加密S3桶):
{ "Version":"2012-10-17","Statement":[{"Effect":"Deny","Action":["cloudtrail:DeleteTrail","s3:PutBucketAcl"],"Resource":"*"}] }
步骤:采用最小权限、使用权限边界(permission boundaries)约束开发/自动化角色;为服务账号使用角色而非长期凭证;创建管理组并通过IAM Policy授予权限。示例权限边界:限制只能在指定Resource上操作。
步骤:在审计账号创建角色allow-logging,设置信任策略允许组织内其他账号assume-role。示例TrustPolicy:{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:PrincipalOrgID":"o-xxxxxxxxxx"}}}]}
步骤:管理账号 -> AWS Identity Center -> 选择“外部身份提供商” -> 配置SAML 2.0 IdP(如Azure AD、Okta或企业AD FS)。创建权限集(Permission Sets),将权限集映射到Organizations成员账号中的角色。操作要点:在IdP端添加AWS SSO的SAML元数据并验证断言中的NameID与组映射。
步骤:在审计账号创建专用S3存储桶(如:aws-logs-jp-
aws cloudtrail create-trail --name org-trail --s3-bucket-name aws-logs-jp-
然后启动:aws cloudtrail start-logging --name org-trail。S3桶策略需允许CloudTrail写入并阻止删除日志(示例Policy在控制台生成)。
步骤:在审计账号创建对称KMS密钥(Key spec: Symmetric, key policy允许CloudTrail与审计账号管理员使用),启用密钥对跨账号使用(在Key policy中允许Organizations或指定账号的使用权限)。
关键点:为CloudTrail配置KMS加密后,确保所有读取或解密操作的角色都被授予kms:Decrypt权限。
步骤:在审计账号启用AWS Config并指定S3和KMS,创建Aggregator并将所有成员账号/区域添加进去。配置托管规则(如:s3-bucket-public-read-prohibited、cloudtrail-enabled)并为重要规则配置自动化修复(AWS Systems Manager或Lambda)。
CLI 启用示例:aws configservice put-configuration-recorder --configuration-recorder name=recorder,roleARN=arn:aws:iam::111122223333:role/config-role
步骤:在审计账号创建Log Group接收CloudTrail/Config/GuardDuty日志,建立Metric Filter识别关键事件(例如:iam:CreateAccessKey或consoleLogin失败过多),将Metric与Alarm关联并通过SNS发送到邮箱/Slack/Lambda进行自动化处理。
示例Metric Filter:{ "filterPattern": "{ ($.eventName = CreateAccessKey) }" }
步骤:在Management账号启用GuardDuty并将成员账号加入(可在日本区域分别启用)。启用IAM Access Analyzer对角色信任关系进行分析,针对发现的公开访问或异常信任关系生成报警并纳入工单流转。
步骤:建立周期性合规检查计划(例如每周扫描IAM权限与未使用凭证,每月审查CloudTrail异常),使用AWS Config conformance packs或第三方合规工具(CIS AWS Foundations)生成报告。为常见违规配置编写自动修复Runbook(SSM Automation)。
答:把CloudTrail日志存放在审计账号的S3桶,启用桶版本控制、开启对象锁(Object Lock,需在创建桶时启用)并设置合规模式和保留期。同时在SCP中禁止s3:DeleteObject与s3:PutBucketAcl等敏感操作,使用KMS管理密钥并在Key Policy中限制删除或ScheduleKeyDeletion权限,仅允许安全管理员执行。
答:在Identity Center -> 身份源中选择“SAML 2.0”或“外部IdP”,获取AWS SSO的SAML元数据并在IdP中配置应用,映射组和权限声明(如email、groups)。在AWS端创建权限集并将权限集分配到目标账号。测试步骤:在IdP端触发SSO登录,确认用户能看到指定账号并切换角色。
答:使用IAM Access Advisor与Access Analyzer查看角色/用户的最近使用权限与公共访问警告;在AWS Config中启用与IAM相关的规则(iam-password-policy、iam-check-unused-credentials)。对于确认过度权限的实体,采用策略缩减并设置权限边界;对于自动化修复,可用Lambda或SSM自动替换策略并通知安全/开发团队审计。