
AWS、Azure、GCP全体にわたる非人間IDを、オフラインのルールベース分析、権限昇格の検出、およびアクセス許可境界による封じ込めを用いて、検出・リスク評価・修復します。
AWS、Azure、Google Cloud Platform(GCP)全体にわたる非人間アイデンティティ(NHI) — サービスプリンシパル、サービスアカウント、マシンロール、アクセスキー、認証情報 — を検出、インベントリ化、分析、リスク評価し、安全に修復するエンタープライズグレードのオフラインファーストなセキュリティ自動化プラットフォームです。
⭐️ このツールがクラウド全体の非人間アイデンティティの監査とセキュリティ保護に役立つと感じたら、リポジトリにスターを付けていただけると幸いです!
| クラウドプロバイダー | 対象アイデンティティ種別 | 検出エンジン | シークレット/認証情報の検査 | 有効なルール | ステータス |
|---|---|---|---|---|---|
| 🟧 AWS | IAMロール、マシンユーザー、グループ、ポリシー | Boto3 + セッションキャッシュ | アクセスキー(CreateDate、LastUsed) | 13ルール(AWS_01–16、TAG_01) | ✅ サポート対象 |
| 🟦 Azure | Entra IDサービスプリンシパル、アプリ登録、マネージドID | 純粋なREST(Graph & ARM) | クライアントシークレット(passwordCredentials)、証明書(keyCredentials) | 5ルール(AZURE_01–05) | ✅ サポート対象 |
| 🟥 GCP | サービスアカウント、Workload Identity、IAMロール | 純粋なREST(IAM & Resource Mgr) | サービスアカウントキー(validAfterTime、ユーザー管理) | 6ルール(GCP_01–06) | ✅ サポート対象 |
🧪 テストスイートのステータス: すべてのプロバイダーとエンジンにわたり102件成功、4サブテスト成功(100% GREEN)。
NHIリスクアナライザーは、マルチクラウドにおける重大なセキュリティ課題に対処します。現代のエンタープライズクラウド環境では、数百ものマシンおよび非人間アイデンティティ(サービスアカウント、自動化ロール、CI/CD認証情報、クラウド間信頼ロール)が蓄積される一方で、どのアイデンティティが過剰な権限を持ち、休眠状態にあり、あるいは権限昇格リスクをもたらしているかについての可視性はほとんどありません。
本プラットフォームは、3つの異なるフェーズにわたる厳格なアーキテクチャ上の分離を徹底します:
inventory.jsonスナップショットへ取り込みます。エンタープライズのマルチクラウド環境には、日常的に次のような非人間アイデンティティが含まれています:
NHIリスクアナライザーは、クラウドAPIとオフラインのルール処理を用いて、クラウドプロバイダー全体にわたる検出、セキュリティ分析、および的を絞った修復を自動化します。
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ AWS IAM │ │ Azure Entra │ │ GCP IAM │
│ (Boto3) │ │ (Pure REST) │ │ (Pure REST) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└────────────────┐ │ ┌────────────────┘
▼ ▼ ▼
┌───────────────────────────┐
│ inventory.py │
│ (Multi-Cloud Collector) │
└─────────────┬─────────────┘
▼
┌───────────────────────────┐
│ inventory.json │
│ (Unified State Snapshot) │
└─────────────┬─────────────┘
│
▼
┌───────────────────────────┐
│ risk.py │
│ (--cloud Orchestrator) │
└─────────────┬─────────────┘
│
┌────────────────────────┼────────────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ aws.py sub- │ │ azure.py sub-│ │ gcp.py sub- │
│ runner │ │ runner │ │ runner │
│ (13 Rules) │ │ (5 Rules) │ │ (6 Rules) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
└────────────────────────┼────────────────────────┘
▼
┌───────────────────────────┐
│ dispatch.py │
│ (Containment Dispatcher) │
└─────────────┬─────────────┘
│
┌────────────────────────┴────────────────────────┐
▼ ▼
┌─────────────────────────┐ ┌─────────────────────┐
│ policy_surgery.py & │ │ credential.py │
│ policy.py (Boundaries) │ │ (Deactivate Key) │
└─────────────────────────┘ └─────────────────────┘
nhi/services/inventory.py): AWS、Azure、GCP 全体のクラウド API をクエリし、認証情報のメタデータ(アクセスキーの最終使用日時、シークレットの有効期限)をエンリッチし、クリーンな状態スナップショットを inventory.json にシリアライズします。nhi/risk/risk.py): --cloud {aws,azure,gcp,all} を受け付け、クラウドプロバイダーを選択的にターゲットにすることで、不要な API 呼び出しを削減し、クロステナントのレート制限を回避します。nhi/risk/runners/): 分離された実行エンジン(aws.py、azure.py、gcp.py)が、プロバイダーのインベントリをモジュール式のセキュリティルールに対して処理し、部分的または欠落したクラウドペイロードに対する防御ガードを備えています。nhi/services/export.py、nhi/remediation/diff.py): 過去のベースラインスキャンに対するセキュリティドリフトを計算し、実行アーティファクトをクラウドストレージにアップロードし、検出結果を CSV および監査パイプライン向けの OASIS SARIF v2.1.0 にエクスポートします。nhi/remediation/): AST レベルのポリシーステートメント分割(policy_surgery.py)と、ドライランシミュレーションモードおよび nhi-ignore.yaml による除外を備えた非破壊的な封じ込め境界/キー無効化。インベントリ収集時の冗長な AWS STS 認証呼び出しを排除するため、認証済みの boto3.Session オブジェクトが Python プロセスの存続期間中 nhi/aws/session.py にキャッシュされます。
AssumeRole 呼び出しの削減: 35 → 179.58s → 45.67s(約43% のランタイム改善)session.py 内にカプセル化されたままで、ディスカバリやルールモジュールのロジック変更は一切不要です。重量で断片化されたクラウド SDK(azure-mgmt-*、msgraph-sdk、google-cloud-iam + grpcio)をバンドルする代わりに、マルチクラウドディスカバリレイヤーは統合された軽量な 純粋な HTTP(requests)+ Bearer トークン 設計を採用しています:
grpcio)を排除することで、コンテナイメージサイズを 300MB 超から 50MB 未満に削減します。https://graph.microsoft.com/v1.0 へ直接クエリします。https://management.azure.com へクエリします。このプラットフォームは、権限昇格のベクター、過度に寛容なポリシー、休眠状態のマシン認証情報を対象として、AWS、Azure、GCP 全体で 26 のアクティブなセキュリティルール を適用します。