安全最佳实践-个人博客
  • 首页概览
    • 三个常见的云安全误解
    • AWS网络保险合作伙伴
    • 安全开源工具
    • Video + Podcast Series Conversations with Security Leaders
    • AWS Security Workshops
    • AWS Security Whitepaper
      • Organizing Your AWS Environment Using Multiple Accounts
    • AWS Jam
  • Multiple Accounts 多账号管理
    • 使用AWS Control Tower管理多账户
      • 通过AWS Control Tower简化跨账号部署
    • 多账户策略和最佳实践
      • 使用多账户的好处
      • 使用单组织OU
      • 多账户设计原则
      • 推荐使用的OU和账户
        • Security OU
          • 相关博客
            • Set up an organization-wide aggregator in AWS Config using a delegated administrator account
            • Simplify governance with declarative policies
        • Infrastructure OU
          • Backup account 备份账户
          • Identity account 身份账户
          • Network account 网络账户
            • 规模化管理IP地址-IPAM
          • Operations Tooling account 运维工具账户
          • Monitoring account 监控账户
          • Shared Services
            • Cross-account configuration with AWS AppConfig
    • 跨账户管理资源
      • 跨账户开启config
      • 跨账号访问S3存储桶
      • 跨账户以最小权限共享资源
    • 在 AWS 上构建安全的企业机器学习平台
    • 使用第三方代付的企业管理资源最佳实践
    • VMware’s Cloud Journey: AWS Account Management at Scale
  • 1. IAM 身份识别与访问控制
    • 新手起步
      • IAM常用术语
      • 什么是ABAC?
      • 中国区使用IAM编写策略需要注意的地方
      • 组织,管理账户和成员账户
      • 什么时候使用user,什么时候使用role
      • IAM Role的应用场景
      • IAM SCP的应用场景
      • IAM 策略类型:如何使用以及何时使用
      • AWS SIGv4 和 SIGv4A
      • 如何写condition
        • Services that work with IAM
        • AWS IAM Policy Condition Operators Explained
        • Every Condition Operator You Technically CAN Put in an IAM Policy
        • 限制IP地址段
        • 设置时间范围
        • 允许某个请求者操作 - ArnLike/ArnLikeIfExists
        • 允许AWS服务访问 aws:PrincipalIsAWSService
      • 添加虚拟MFA或硬件MFA
      • Authentication(AuthN) 和 Authorization(AuthZ)
      • How to Clear your AWS CLI Credentials
      • 通过CLI获取EC2的验证凭据的方式
      • Amazon Cognito
      • 去中心化标识符(Decentralized Identifier,DID)
    • 多因素认证MFA启用计划
      • 如何强制IAM用户使用MFA
      • 多因素身份验证可防范哪些类型的攻击?
    • ABAC权限控制方式
      • 给云资源打标签
      • 标记 Amazon EC2 资源
      • 标记Amazon S3
      • ABAC的应用
        • 如何根据标签定义配置访问 Amazon 资源的权限
        • 如何使用SAML session tags实现SSO的ABAC权限管理
        • Identity Center的Attribute Based Access Control (ABAC)
      • How to implement SaaS tenant isolation with ABAC and AWS IAM
    • Privileged Access Management 特权访问管理
      • 限制使用AdministratorAccess策略的用户或者角色
      • 使用SCP限制根用户的行为
      • Centralize Root Access In AWS(AssumeRoot)
      • 用SCP限制创建IAM User结合安全规范要求指定人员才能创建
      • 特权账号管理实践
      • 禁用不使用的服务和区域
    • Data Perimeters 数据防护边界
      • SCP(Service control policies)示例策略
        • 通过Service Control Policies(SCP)限制只能使用某个区域的AWS服务
        • 禁止成员账户访问管理账户/指定账户
        • 限制高危操作
          • 指定角色才能操作名称中含有security-nono的secrets
        • tagging:阻止标记被修改,除非由授权委托人修改
        • tagging:要求创建/运行某类资源时必须打了标签
        • iam:阻止根用户的访问
        • iam: 阻止创建根用户的AKSK
        • ec2:防止在没有 IMDSv2 的情况下启动 EC2 实例
        • RAM: 阻止外部共享
        • S3: 限制仅从预期网络可以访问
        • S3: 防止上传文件到未授权的存储桶
        • S3:防止上传 Amazon S3 未加密对象
        • S3:关键S3存储桶保护
        • S3:防止开放到公网
        • lambda: 确保开发部署lambda程序只能从VPC连接
        • 安全日志管理涉及的安全控制
        • 安全产品管理涉及的安全控制
        • 阻止 IaC 已经支持的所有行动
        • kms: 阻止组织外使用KMS
        • 拒绝生产账户使用 DisableKey 和 ScheduleKeyDeletion
        • 仅可信网络/预期网络
        • 仅访问可信资源
      • 资源策略(Resource-based policies)示例策略
        • IAM Role Trust Policy
        • S3存储桶策略
          • Examples of Amazon S3 bucket policies
          • 仅限OU范围内共享存储桶
          • 必须采用加密传输访问S3存储桶
        • KMS key策略
        • Secrets Manager Secret策略
        • SNS策略
        • SQS队列策略
      • 资源控制策略Resource control policies (RCPs)
        • 增强KMS保护
        • 增强secrets保护
        • 增强网络防护边界
        • 上传到 S3 的文件都必须加密
      • VPC端点策略(VPC endpoint policies)示例策略
        • VPCE和第三方资源
        • VPCE和AWS托管的资源
        • VPCE和S3
        • VPCE和组织内资源
      • blog-如何使用 data perimeter helper 评估影响并完善数据边界控制
    • Workforce Identity Integration 单点登录
      • IAM Identity Center作为IdP
        • 如何将IAM User迁移到IAM Identity Center
        • AWS Lake Formation Integrating IAM Identity Center
        • Authenticate AWS Client VPN users with SAML
        • 如何将 IAM Identify Center 与 Amazon Cognito User Pool集成?
        • Federated access to Amazon Athena using AWS IAM Identity Center
        • Integrate Identity Provider (IdP) with Amazon Redshift Query Editor V2 and SQL Client using AWS IAM Identity Center for seamless Single Sign-On
        • Jenkins 如何与 AWS Identity Center 集成
        • SAML Single Sign On (SSO) into Jira using AWS as IDP
      • IAM Identity Center作为SP
        • 配置 SAML assertions 用于授权响应
        • 将Okta 作为权限集中管理的控制中心,整合AWS IAM Identity Center 来访问AWS
        • Configure SAML and SCIM with Google Workspace and IAM Identity Center
        • Single Sign-On between Okta Universal Directory and AWS
      • AWS SSO用户如何使用CLI
      • AWS Federated Authentication with Active Directory Federation Services (AD FS)
      • 通过Identity Store API大规模管理和审计 AWS IAM 身份中心的用户和组操作
      • 令牌认证和单点登录协议
        • OpenID Connect (OIDC)
        • 代码交换证明密钥(Proof Key for Code Exchange,简称PKCE)
        • OpenID协议
        • SCIM 2.0
        • SAML2.0
          • 常见缩略语和定义
          • SAML2 Assertion 示例
          • SAML tokens
          • 在线工具
          • SP Metadata示例
        • OAuth 2.0授权模型
          • OAuth 2.0
          • OAuth 2.0 Simplified
          • OAuth 2.0 Simplified by okta
      • AWS IAM Identity Center Region Switch
      • How to bulk import users and groups from CSV into AWS IAM Identity Center
    • AWS认证和授权:IAM最佳实践
      • AWS CLI 和 AWS SDKs配置权限的几种方式
      • 通过IAM Role连接Github
      • IAM 账户设置最佳实践
      • 一些权限策略中可以用到的condition
        • AllowSSLRequestsOnly
        • Time-based access control
      • 场景化IAM实践-应用程序安全
        • IAM Role for RDS
        • IAM Roles for Amazon EC2
        • IAM role for GitHub OIDC
        • IAM Role for EKS
      • 场景化IAM实践-人员安全
        • IAM Identity Center for human
        • FinanceManager
        • FinanceUser
        • SystemsManager
        • AuditManager
        • SecurityManager
        • IAMAdmin
        • Developers
        • KMS Admin
        • 基于时间的访问控制
        • 第三方访问您的AWS资源
    • IAM相关的开源解决方案
      • Temporary elevated access management (TEAM)
        • Unable to deploy due to AWS Codecommit being deprecated #293
      • 免费开源的CIAM解决方案
        • ZITADEL
        • keycloak
      • 备份和恢复IAM Identity Center权限集和用户
      • 自动审阅AWS IAM Identity Center权限
      • AWS IAM Identity Center Region Switch
      • An AWS IAM Security Tooling Reference [2024]
    • 目录服务AWS Directory Service
      • 在 AWS Managed AD 和运行 Windows Server Core 版本的本地 Active Directory 之间创建信任关系
      • 轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)
    • CIAM,即客户身份和访问管理(Customer Identity and Access Management)
      • APP认证系统:Amazon Cognito最佳实践
        • 通过简单的登录注册APP学习SAML和OAuth
          • `aws-amplify/auth`中`signIn`函数的完整代码示例,包含错误处理和用户体验改进
        • 基本概念
          • 身份令牌 (ID Token) 和访问令牌 (Access Token)
          • Auth2.0
            • OAuth 2.0 安全最佳实践
          • user pool JSON web tokens (JWTs)
        • machine-to-machine authorization
        • 高级安全功能
        • 与IAM Identity Center结合
        • 如何在 Amazon Cognito 中使用 OAuth 2.0:了解不同的 OAuth 2.0 授权
        • SaaS authentication: Identity management with Amazon Cognito user pools
        • Adding threat detection to custom authentication flow with Amazon Cognito advanced security features
      • APP授权系统:Amazon Verified Permissions最佳实践
        • 使用 Amazon Verified Permissions 和 Amazon Cognito 为 API Gateway API授权
        • 使用 Amazon Verified Permissions 和 Amazon Cognito 授权 API Gateway API
        • 使用 Amazon Verified Permissions 管理 AWS IoT smart home 应用的权限
    • AWS EKS Access Management
  • 2. 基础架构安全
    • 网络安全架构设计案例
    • 端口管控
  • 3. 数据保护
    • 识别及标识敏感数据
      • 如何系统地打标签Tag
      • 使用Tag Policies和Service Control Policies控制对包含 PII 数据的 AWS 资源的访问
      • 自动识别敏感数据
      • 敏感数据扫描与匿名化开源工具
    • 保护敏感数据
      • 数据匿名化方法概览
      • 日志匿名化处理
      • 保护S3的数据
        • Secure your Media Workloads with JWT Token with Lambda@Edge
      • CloudFront预签名
      • 重要数据备份
      • 关系型数据库字段级加密
      • 如何加密数据
      • 数据完整性校验
      • Amazon RDS 数据库密码管理
      • Web3的私钥托管
      • 防止未授权访问
      • 代码中使用SecureString保存敏感的参数
      • 交易签名
      • 隐私计算:构建可信执行环境
      • 如何实现代码中不出现明文口令
        • 通过AWS Secrets Manager统一管理混合云上的安全凭据
      • PKI构建
        • How to build a CA hierarchy across multiple AWS accounts and Regions for global organization
    • 数据资产管理与保护
  • 4. 日志与监控
    • 日志集中管理
      • 使用CloudWatch Logs Insights检索日志
        • 收集数据库审计日记
      • 使用Amazon Security Lake收集安全日志
        • Open Cybersecurity Schema Framework(OCSF)
        • 通过Security Lake构建你的安全数据湖
        • 使用Security Lake和Athena分析日志
          • Unauthorized attempts
          • 调查可疑用户
          • 检索某账号AKSK在指定时间范围内做了什么
          • 调查GuardDuty的发现
          • 错误使用aws_sts_getsessiontoken
        • 使用Security Lake & Jupyter Notebooks实现事件响应
      • SIEM on Amazon OpenSearch Service
        • 如何配置OpenSearch发送安全告警
        • 使用IAM Identity Center 登录OpenSearch Cluster
        • Configure SAML federation for Amazon OpenSearch Serverless with AWS IAM Identity Center
      • 使用Athena分析日志
      • 理解并利用CloudTrail
        • 了解 IAM Identity Center 登录事件
        • Understanding IAM Identity Center sign-in events
        • 使用CloudTrail Lake进行日志筛选
        • 跨多账号收集CloudTrail日志
    • 安全基线检查与配置监控
      • AWS Config
        • Using AWS Config custom resources to track any resource on AWS
        • Simplify compliance management of multicloud or hybrid resources with AWS Config
        • Discover duplicate AWS Config rules for streamlined compliance
    • 告警通知设置
      • AWS Security Hub发送Slack告警通知
      • AWS Security Hub 发送邮件通知
      • 应用CloudTrail实现告警通知常见场景
        • API未授权访问告警通知
        • 安全组更改告警通知
        • NACL更改告警通知
        • IGW更改告警通知
        • 路由表更改告警通知
        • VPC更改告警通知
        • 没有通过MFA登录时的告警通知
        • 根用户使用时的告警通知
        • IAM策略变更告警通知
        • AWS控制台登录失败告警通知
        • 禁用或计划删除客户管理密钥告警通知
        • 更改S3 Bucket Policy 告警通知
        • 更改Amazon Config告警通知
        • AWS Personal Health Dashboard告警通知
        • CloudTrail配置变更告警通知
        • Ten Ways to Improve Your AWS Operations
  • 5. 事件响应
    • 安全自动化合规审计与自动修复
    • Security Hub安全检查与自动修复
    • 安全合规自动审计
      • 基础:使用AWS Security Hub
        • 导出Security Hub的发现
      • 进阶:使用AWS Config扩展检查项目
      • 进阶:使用Chef InSpec profiles with Systems Manager实现主机和容器的基线检查
      • 高级:通过JIRA+Security Hub实现SOC安全运营中心
      • 合规检测规则集
        • GDPR(Global AWS Config)
        • 等保3级(中国区AWS Config)
    • 自动安全响应与修复
      • Security Hub发现自动修复
        • IAM.3-自动轮换IAM用户AK/SK
      • WAF自动拦截恶意请求
        • 在WAF上自动部署 web 访问控制列表过滤web攻击
        • 允许或阻止来自特定国家/地区或地理位置的请求
        • ATP 托管规则组
        • 登录页WAF验证码
        • 登录页面的基于速率的规则
        • 服务器端代码执行防范
      • AWS Trusted Advisor 发现自动修复
      • GuardDuty告警自动响应
        • IAM AKSK泄漏自动响应
        • 基于 Amazon GuardDuty 威胁级别的自动化通知
        • 删除EC2上的恶意文件
        • 拦截恶意IP访问EC2实例或者阻止EC2实例外联恶意IP
        • 创建自定义脚本自动隔离EC2实例
      • Config+SSM 的方式自动修复
        • config: restricted-ssh
        • config: required-tags
      • 利用custodian实现自动修复
        • 为S3存储桶自动打标签
        • 为EC2自动打标签
      • 自动修复常见场景
        • 自动生成组织策略
        • 自动抑制告警,减少噪音
        • 自动添加自定义字段到Findings告警,"Tag production findings"
        • 自动升级Security Hub的严重等级
      • 高级:使用Systems Manager自动修复
    • 自动补丁管理
  • 安全合规
    • 安全认证和合规框架
      • Cloud Controls Matrix (CCM)
      • 中国-三级等级保护合规检测
      • ISO 27001:2022
      • US Cyber Trust Mark
    • 全球各国法律速查
      • USA 美国
        • 拜登总统发布行政命令保护美国人的敏感个人数据
        • 美国出口管理条例(EAR)
        • 医疗-HIPAA
        • 信息格式标准-OSCAL
      • Canada加拿大
      • Europ欧洲
        • 汽车-UNECE Regulation No. 155(UN R155)
      • Singapore 新加坡
      • Japan 日本
      • Australia 澳大利亚
      • China 中国
      • 行业类隐私数据保护
        • 生物医疗出海企业需要满足的合规要求
      • 数据跨境流通要求
        • GDPR-数据跨境流通应对方案
        • 新加坡数据跨境流通应对方案
        • 中国-个人信息跨境处理活动安全认证规范
        • 全球数据本地化要求与AWS region
          • 如何选择合适的region
        • 数据泄露通知要求
          • 数据泄漏通知建设建议
      • 什么是GDPR
        • GDPR法规详细解读
        • 如何销毁数据满足GDPR
        • 隐私保护安全评估模板
          • 个人数据保护影响评估(DPIA)-GDPR
          • 个人隐私数据保护自查清单
    • AWS Privacy Reference Architecture (AWS PRA)
    • 数据安全合规
    • 可证明安全性 Provable Security
      • 自动推理如何帮助亚马逊 S3 实现大规模创新
      • AWS 如何利用自动推理帮助您实现大规模安全
    • 亚马逊云科技是值得客户信任的云
      • AWS Fault Isolation Boundaries
    • 敏感数据分级分类
      • 按照客户数据和业务数据分类
      • 金融领域
  • 安全产品成本估算
    • 计算器地址与报价地址
    • 安全合规持续检测和自动修复费用
    • MATTER认证费用
    • WEB应用防护和DDOS防护费用
    • 数据库和S3加密费用
    • Amazon Security Lake收集日志并分析的费用
    • Amazon Security Lake 和 AWS CloudTrail Lake做日志分析的成本对比
    • 如何实现AWS账单预警
  • 📑安全体系建设
    • 风险管理
    • 事件管理/ 安全事件应急响应
      • Cyber Incident Response – Readiness Checklist
      • Playbooks / 网络事件应对计划和操作手册
    • 安全价值衡量指标与展现
      • IAM项目投资价值衡量指标
由 GitBook 提供支持
在本页
  • 攻击复现
  • 1-假设背景
  • 2-恶意攻击
  • 解决办法
  1. 安全体系建设
  2. 云资产入侵防范

跨账户混淆代理人

跨账户混淆代理人问题是一个安全问题,它涉及到一个受信任的实体(比如第三方服务提供商)被恶意实体欺骗或误导,从而执行了未经授权的操作。这个问题通常出现在企业需要使用第三方服务来管理其云环境时,例如日志审计、成本管理、安全监控等场景。在这些情况下,企业会给予第三方供应商访问其云上资源的权限,如果处理不当,就容易被攻击者利用,伪装成其他客户,实施恶意行为。

攻击复现

1-假设背景

假设您决定聘请一家名为 Example Corp 的第三方公司来监控您的 AWS 账户 并帮助优化成本。为跟踪您的日常开支,Example Corp 需要访问您的 AWS 资源。Example Corp 也可监控其他客户的很多其他 AWS 账户。

AWS1 是您的 AWS 账户。AWS1:ExampleRole 是您账户中的一个角色。该角色的信任策略通过将 Example Corp 的 AWS 账户指定为可担任该角色的账户来信任 Example Corp。

你向 Example Corp 提供 AWS1:ExampleRole 的 ARN。

Example Corp 使用该角色 ARN 获取临时安全凭证以访问您的 AWS 账户 中的资源。这样一来,您将信任 Example Corp 作为可代表您执行操作的“代理人”。

2-恶意攻击

另外一个客户知道了Example Corp 使用的AWS1:ExampleRole 的 ARN,然后使用你的ARN要求Example Corp 访问你账户中的资源。

这就是其他客户可对您的资源进行未授权访问的方式。由于此客户能够诱使 Example Corp 无意中操作您的资源,因此 Example Corp 现在是一个“混淆代理人”。

还有一种情况是攻击者获取到第三方代理的权限,并且通过分析日志查到这个权限可以代入你的AWS1:ExampleRole 的 ARN,以第三方代理的身份访问到你的账号中。

解决办法

Example Corp 可以通过在角色信任策略中加入 ExternalId 条件检查来解决混淆的代理问题。Example Corp 为每个客户生成唯一的 ExternalId 值,并在其请求中使用该值来承担该角色。在 Example Corp 的客户中,ExternalId 值必须是独一无二的,并由 Example Corp 而不是其客户控制。这就是您从 Example Corp 获取该 ID 且不能自行提供该 ID 的原因。这可以防止 Example Corp 成为一个混淆代理人,以及授予对非授权的 AWS 资源的访问权。

假设 Example Corp 为您提供的唯一标识符是 12345,而为另一个客户提供的标识符是 67890。这些标识符已针对此方案进行简化。通常,这些标识符为 GUID。假定这些标识符在 Example Corp 的客户之间是唯一的。

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "AWS": "Example Corp's AWS Account ID"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "StringEquals": {
        "sts:ExternalId": "12345"
      }
    }
  }
}

此策略中的 Condition 元素允许 Example Corp 仅在 AssumeRole API 调用包括ExternalId值 12345 时代入该角色。Example Corp 确保,只要它代表客户担任角色,就会始终在 AssumeRole 调用中包括客户的ExternalId。即使另一个客户向 Example Corp 提供您的 ARN,也无法控制 Example Corp 包括在其发送给 AWS 的请求中的ExternalId。这有助于防止未经授权的客户获取对您的资源的访问权限。

ExternalId 的主要作用

包括:

  1. 防止跨账户混淆代理人问题:当多个账户信任同一个角色时,使用 ExternalId 可以帮助区分请求者的身份,防止攻击者冒充其他账户访问资源。

  2. 增强角色扮演的安全性:当一个 AWS 账户需要扮演另一个账户的角色以访问资源时,ExternalId 作为信任策略的一部分,确保只有具有正确 ExternalId 的请求者才能成功扮演角色。

  3. 提供额外的验证层:在角色的信任策略中,除了指定允许扮演角色的账户外,还可以要求请求者提供 ExternalId。这样,即使攻击者获取了访问密钥,没有正确的 ExternalId,他们也无法扮演角色。

  4. 支持细粒度的访问控制:ExternalId 允许您为不同的第三方服务或用户定义不同的角色扮演策略,从而实现更细粒度的访问控制。

  5. 简化管理和审计:使用 ExternalId 可以帮助您更清晰地追踪和审计哪些第三方服务或用户扮演了您的角色,以及它们对资源的访问情况。

最后更新于11个月前

Example Corp 将向您提供ExternalId值 12345。然后,您必须将一个 Condition 元素添加到角色的信任策略,该策略要求 值为 12345,如下所示:

资料来源:

📑
sts:ExternalId
https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/confused-deputy.html#mitigate-confused-deputy