🦆

NHIについて調べてみる

に公開

なぜ作成したのか

  • 聞きなれない言葉を調べておきたい気持ち

参考

https://jpn.nec.com/cybersecurity/blog/250509/index.html

Non-Human Identities(NHI)とは

  • NHI(Non-Human Identities) は、アプリケーションやサービス、CI/CD パイプライン、クラウドワークロードなど “人間以外” がリソースへアクセスする際に用いるアイデンティティです。
  • API キー/トークン、サービスアカウント、ロール、証明書などが該当し、クラウドネイティブ開発では不可欠な存在になっています。

OWASP Top 10 Non-Human Identities Risks(2025 版)

# リスク 典型的な落とし穴 情シス担当者向けコントロール例
NHI1 不適切なオフボーディング 役目を終えたサービスアカウントが残存 IAM 定期棚卸しと自動無効化ワークフロー
NHI2 シークレットの漏洩 ソースに平文 API キー、Slack paste 等 Secret Scanning/動的トークンへの置換
NHI3 脆弱なサードパーティ NHI IDE 拡張・SaaS へ過剰権限トークン付与 サードパーティ統合前のセキュリティレビュー
NHI4 安全でない認証 App Password・Implicit Flow など非推奨方式 標準準拠(PKCE/OIDC)+ MFA 必須化
NHI5 過剰権限 “*:*” ポリシーや全リージョン S3 読み書き 最小特権原則ポリシーテンプレート+CI lint
NHI6 安全でないクラウド配備構成 CI に長期 IAM キー保存、OIDC 設定ミス OIDC short-lived token+ポリシー境界
NHI7 長期生存シークレット 有効期限 0 の API キー 自動ローテーション/TTL≤24 h
NHI8 環境分離不足 Dev と Prod が同一サービスアカウント 環境毎のプロジェクト/VPC/NHI を分離
NHI9 NHI 再利用 複数システムで共通トークン サービス単位で専用 NHI 発行+タグ付け
NHI10 人間による NHI 利用 管理者がサービスアカウントで手作業 人間 ID と機械 ID を IAM レベルで分離

情シス担当者が取るべき実装チェックリスト

  1. 資産管理
    • NHI インベントリを CMDB/IAM レポートに統合し、所有者・用途・権限をメタデータとして必須化。
  2. ライフサイクルとローテーション
    • Terraform/Pulumi で create–rotate–revoke をコード化し、90 日ごと自動更新。
  3. シークレット統制
    • GitHub Secret Scanning や Gitleaks を CI 前段で必須化し、Vault/Secret Manager にリダイレクト。
  4. ランタイム監視
    • CloudTrail / GCP AuditLogs を NHI ごとにフィルタリングし、異常アクセスを SIEM へストリーミング。
  5. 権限ガードレール
    • AWS SCP/Azure PIM を使い、iam:PassRole など高権限操作をセーフリスト方式で制御。
  6. サードパーティ統合
    • OAuth/PAT を使用する SaaS にはスコープ最小化+自動失効(30 日)ポリシーを設定。

リスクが実際に顕在化した事例

年月 インシデント概要 NHI リスク該当 主な教訓
2022-12〜2023-01 CircleCI 侵害 エンジニア端末乗っ取り → SSO セッションクッキー窃取 → 顧客の環境変数・トークン・キーが流出 NHI2(漏洩), NHI7(長期シークレット) ① CI に保存された長期トークンは攻撃範囲を拡大
② セッションハイジャックでも MFA を回避可能 → デバイス整合性+短命トークンが必須 ([CircleCI incident report for January 4, 2023 security incident
2022-04 GitHub × Heroku/Travis CI OAuth トークン窃取 盗まれた OAuth アプリトークン で数十社のプライベートリポジトリをダウンロード NHI3(脆弱サードパーティ), NHI5(過剰権限) ① OAuth アプリは権限スコープを限定
② 使わない統合は即解除し、監査ログで検知 (Security alert: Attack campaign involving stolen OAuth user tokens issued to two third-party integrators - The GitHub Blog)
2021-01〜04 Codecov Bash Uploader 改ざん 攻撃者が CI ランタイムの環境変数を外部送信 する 1 行を追加し、顧客のシークレットを大量窃取 NHI6(配備構成不備), NHI9(再利用) ① CI ツールのサプライチェーン監査必須
② Secrets をステージング/本番で共有しない (Codecov supply chain attack breakdown)

まとめ

  • **NHI は「見えない ID」**──検出・棚卸し・監査を怠ると人間 ID よりも速く・広く悪用される。
  • クラウド/CI/CD のセキュリティ設計は、人間 ID と全く同レベルの管理プロセスを NHI に適用することが出発点
  • 実際の攻撃では 長命シークレットの漏洩とサードパーティ統合の過剰権限 が主因。短命トークン化・環境分離・自動ローテーションが現実的な防御策となる。

所感

  • NHI以前に、Appsheet等で使用している連携アカウントが個人のものを使用しているあたり、このリスクターゲットにすら届いていない現状に涙する。
  • ただでさえ手作りアプリが大量に発生しているから自分自身が退職リスクの種になっていることを思い知らされるなど
GitHubで編集を提案

Discussion