Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CureIAM — GCPインフラにおける権限超過アカウントの大規模クリーンアップ | Kitploit
ツール/GitHubGitHub/gojek/cureiam
クラウドインフラストラクチャセキュリティ構成監査クラウドセキュリティDevSecOpsアイデンティティ&アクセス管理 (IAM)
GitHubgojek/cureiam

CureIAM

GCPインフラにおける権限超過アカウントの大規模クリーンアップ

リポジトリを見る
7263年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CureIAM

GCPインフラ上で過剰な権限が付与されたIAMアカウントを自動的にクリーンアップ

CureIAM は、GCP クラウドインフラ上で最小権限の原則を適用するための、使いやすく信頼性が高く高性能なエンジンです。DevOps チームやセキュリティチームが、必要な権限以上を付与された GCP インフラ上のアカウントを迅速にクリーンアップできるようにします。CureIAM は GCP IAM Recommender からレコメンデーションとインサイトを取得し、それらをスコアリングし、毎日自動的にそれらの推奨事項を適用します。スケジューリングや、これらの適用ジョブを大規模に実行するためのその他すべての側面を処理します。CureIAM は GCP IAM Recommender API と Cloudmarker フレームワーク上に構築されています。

主な機能

CureIAM をスケーラブルかつ本番環境対応にする機能をご紹介します。

  • 設定駆動型: CureIAM のワークフロー全体は設定ファイルで制御されます。詳細については、設定セクションを参照してください。
  • スケーラブル: プラグイン駆動、マルチプロセス、マルチスレッドのアプローチにより、スケールするように設計されています。
  • スケジューリング機能: スケジューリング部分は CureIAM のコード自体に組み込まれており、時間を設定するだけで、毎日その時間に CureIAM が実行されます。
  • プラグイン駆動型: CureIAM のコードベースは完全にプラグイン指向です。つまり、既存のプラグインをそのまま利用したり、新しいプラグインを作成して機能を追加したりできます。
  • 実用的なインサイトの追跡: CureIAM が実行したすべてのアクションは監査目的で記録されます。ファイルストアや Elasticsearch ストアに記録できます。必要に応じて、他のストアにプッシュするためのストアプラグインを構築することもできます。
  • スコアリングと適用: CureIAM が取得したすべてのレコメンデーションは、さまざまなパラメータに対してスコアリングされ、safe_to_apply_score、risk_score、over_privilege_score などのスコアが生成されます。各スコアは異なる目的を持ちます。たとえば、safe_to_apply_score は、CureIAM.yaml 設定ファイルで設定されたしきい値に基づいて、自動適用が可能かどうかを判断します。

使用方法

CureIAM は Python で構築されているため、以下のコマンドでローカル実行できます。実行する前に、設定ファイルを /etc/CureIAM.yaml、~/.CureIAM.yaml、~/CureIAM.yaml、または CureIAM.yaml のいずれかに用意し、サービスアカウントの JSON ファイルをカレントディレクトリに cureiamSA.json という名前で配置してください。この SA 秘密鍵の名前は変更可能ですが、Docker イメージをビルドする場合はこの名前を使用することを推奨します。設定ファイル内でこのファイルを GCP クラウド用に参照するようにしてください。

root@kitploit:~
# 必要な依存関係をインストール
$ pip install -r requirements.txt

# CureIAM を今すぐ実行
$ python -m CureIAM -n

# CureIAM をスケジューラとして実行
$ python -m CureIAM

# CureIAM のヘルプを表示
$ python -m CureIAM --help

CureIAM は Docker 環境内でも実行可能です。これは完全にオプションであり、K8s クラスターへの CI/CD デプロイに使用できます。

root@kitploit:~
# Dockerfile から Docker イメージをビルド
$ docker build -t cureiam . 

# イメージをスケジューラとして実行
$ docker run -d cureiam 

# イメージを今すぐ実行
$ docker run -f cureiam -m cureiam -n 

設定

CureIAM.yaml 設定ファイルは CureIAM エンジンの心臓部です。エンジンが行うすべての処理は、この設定ファイルで構成されたパイプラインに基づいています。設定をわかりやすくするために、セクションごとに分解して説明します。

  1. まず、ロギング設定とスケジューラ設定から設定します。
root@kitploit:~
  logger:
    version: 1

    disable_existing_loggers: false

    formatters:
      verysimple:
        format: >-
            [%(process)s]
            %(name)s:%(lineno)d - %(message)s
        datefmt: "%Y-%m-%d %H:%M:%S"

    handlers:
      rich_console:
        class: rich.logging.RichHandler
        formatter: verysimple

      file:
        class: logging.handlers.TimedRotatingFileHandler
        formatter: simple
        filename: /tmp/CureIAM.log
        when: midnight
        encoding: utf8
        backupCount: 5

    loggers:
      adal-python:
        level: INFO

    root:
      level: INFO
      handlers:
        - rich_console
        - file

  schedule: "16:00"

この設定のサブセクションでは、Rich ロギングモジュールを使用し、CureIAM を毎日 16:00 に実行するようにスケジュールします。

  1. 次のセクションでは、パイプラインで使用する可能性のあるさまざまなモジュールを設定します。これは CureIAM.yaml の plugins セクションに該当します。このセクションは、さまざまなプラグインの宣言と考えることができます。
root@kitploit:~
  plugins:
    gcpCloud:
      plugin: CureIAM.plugins.gcp.gcpcloud.GCPCloudIAMRecommendations
      params:
        key_file_path: cureiamSA.json

    filestore:
      plugin: CureIAM.plugins.files.filestore.FileStore

    gcpIamProcessor:
      plugin: CureIAM.plugins.gcp.gcpcloudiam.GCPIAMRecommendationProcessor
      params:
        mode_scan: true
        mode_enforce: true
        enforcer:
          key_file_path: cureiamSA.json
          allowlist_projects:
            - alpha
          blocklist_projects:
            - beta
          blocklist_accounts:
            - [email protected]
          allowlist_account_types:
            - user
            - group
            - serviceAccount
          blocklist_account_types:
            - None
          min_safe_to_apply_score_user: 0
          min_safe_to_apply_score_group: 0
          min_safe_to_apply_score_SA: 50

    esstore:
      plugin: CureIAM.plugins.elastic.esstore.EsStore
      params:
        # 後でElasticsearchがHTTPSを使用している場合は、httpをhttpsに変更
        scheme: http
        host: es-host.com
        port: 9200
        index: cureiam-stg
        username: security
        password: securepassword

これらのプラグイン宣言はすべて、次の形式である必要があります。

root@kitploit:~
  plugins:
    <plugin-name>:
      plugin: <class-name-as-python-path>
      params:
        param1: val1
        param2: val2

たとえば、プラグイン CureIAM.stores.esstore.EsStore(この ファイル とクラス EsStore)の場合、yaml で定義されたすべてのパラメータは、同じプラグインクラスの __init__() 関数の宣言と一致する必要があります。

  1. プラグインが定義されたら、次のステップは監査のパイプラインを定義する方法です。次のようになります。
root@kitploit:~
  audits:
    IAMAudit:
      clouds:
        - gcpCloud
      processors:
        - gcpIamProcessor
      stores:
        - filestore
        - esstore

これから複数の監査を作成できます。ここで作成されたものは IAMAudit という名前で、gcpCloud、gcpIamProcessor、filestores、esstore の 3 つのプラグインを使用しています。これらは手順 2 で定義したプラグイン名と同じであることに注意してください。繰り返しになりますが、これはパイプラインを定義しているだけで、実際に実行しているわけではありません。次の手順で定義された実行対象として考慮されます。

  1. CureIAM に、前の手順で定義した監査を実行するように指示します。
root@kitploit:~
  run:
    - IAMAudits

これで CureIAM の設定全体が完成します。完全なサンプルは こちら にあります。この設定駆動型パイプラインの概念は、Cloudmarker フレームワークから継承されています。

ダッシュボード

Elasticsearch ストアプラグインを使用して Elasticsearch にインデックスされた JSON は、Kibana でダッシュボードを生成するために使用できます。

コントリビューション

[ぜひお願いします!] CureIAM のコア機能とドキュメントを改善するためのあらゆるコントリビューションを歓迎します。迷ったら PR を作成してください!

クレジット

Gojek プロダクトセキュリティチーム ❤️

デモ

<<未定>>

=============

2023年5月 アップデート 0.2.0

リファクタリング

  • 大規模なコードを複数の小さな関数に分割
  • すべてのプラグインをプラグインフォルダに移動: Esstore、files、Cloud、GCP
  • ゼロ除算の問題に対する修正を追加
  • Elastic の新しいメジャーバージョンへの移行
  • CureIAM.yaml 設定ファイルの変更
  • Python バージョン 3.9.X でテスト済み

ライブラリの更新

下位互換性の問題を回避するために、ライブラリにバージョンを追加。

  • Elastic==8.7.0 # 以前は 7.17.9
  • elasticsearch==8.7.0
  • google-api-python-client==2.86.0
  • PyYAML==6.0
  • schedule==1.2.0
  • rich==13.3.5

Docker ファイル

  • Elastic 用のローカル Elastic と Kibana 用の Docker Compose を elastic に追加
  • .env-ex を追加 docker を実行する前に .env-ex を .env にリネーム
root@kitploit:~
docker compose を実行: docker-compose -f docker_compose_es.yaml up 

機能

  • レコメンデーションを適用せずにスキャンのみを実行する機能を追加。デフォルトでは、mode_scan が false の場合、mode_enforce は実行されません。
root@kitploit:~
      mode_scan: true
      mode_enforce: false
  • メール機能を一時的に無効化。
ツールをダウンロード