You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于编写Cloud Custodian策略终止公网EC2实例及公开S3桶的咨询

Cloud Custodian策略:终止公网EC2实例与清理公开S3存储桶

我完全懂你的困扰——Cloud Custodian确实没有直接的"publicly exposed"一键过滤器,但咱们可以用它的原生属性和过滤器组合来精准定位这些资源,下面是具体的实现方案:

一、终止面向公网的EC2实例

面向公网的EC2实例通常有两个核心特征:要么分配了公网IP/弹性IP,要么安全组配置了允许0.0.0.0/0的入站访问(哪怕是特定端口)。你可以根据需求选择其中一种或组合过滤:

1. 过滤带有公网IP的EC2实例

这个策略会定位所有拥有公网IPv4地址的实例并终止:

policies:
  - name: ec2-terminate-public-ip
    resource: aws.ec2
    filters:
      - type: value
        key: PublicIpAddress
        op: not-null
    actions:
      - type: terminate

2. 过滤安全组开放公网访问的EC2实例

如果想针对那些安全组允许任意公网IP访问的实例(哪怕没有公网IP,但安全组配置存在风险),可以用这个组合:

policies:
  - name: ec2-terminate-public-security-group
    resource: aws.ec2
    filters:
      - type: security-group
        key: IpPermissions[].CidrIpv4
        op: in
        value: "0.0.0.0/0"
    actions:
      - type: terminate

二、清理公开的S3存储桶

公开的S3存储桶通常涉及三个维度:桶策略允许公共访问、ACL配置了公共权限、或者关闭了AWS的"阻止公共访问"设置。下面的策略会覆盖这些风险场景:

policies:
  - name: s3-clean-public-buckets
    resource: aws.s3
    filters:
      # 过滤关闭了阻止公共访问的桶
      - type: value
        key: PublicAccessBlockConfiguration.BlockPublicAcls
        op: eq
        value: false
      # 过滤桶策略允许所有用户访问的桶
      - type: bucket-policy
        key: Statement[].Effect
        op: eq
        value: Allow
        value_type: swap
        key: Statement[].Principal
        op: in
        value: "*"
      # 过滤ACL给所有公共用户授权的桶
      - type: acl
        key: Grants[].Grantee.URI
        op: in
        value: "http://acs.amazonaws.com/groups/global/AllUsers"
    actions:
      - type: delete  # 注意:这个动作会删除桶内所有对象后删除桶,务必谨慎!
        # 如果不想删除,可替换为权限修正动作,比如:
        # - type: set-bucket-policy
        #   policy: '{"Version": "2012-10-17", "Statement": [{"Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::${bucket_name}/*"}]}'

三、关键注意事项

  • 建议先添加dry-run: true参数测试策略,避免误删重要资源:
    actions:
      - type: terminate
        dry-run: true
    
  • 用custodian validate policy.yml命令可以快速验证策略语法是否正确
  • 对于S3的删除动作,一定要确认目标桶是确实不需要的,优先选择修正权限而非直接删除

内容的提问来源于stack exchange,提问作者Udara Jayawardana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:36:18