AWS コストと脆弱性を1コマンドで丸ごと監査——Kosty で月数万円の無駄を可視化
AWS コストと脆弱性を1コマンドで丸ごと監査——Kosty で月数万円の無駄を可視化
ひとことでいうと
Kosty(コスティ)は、AWS のコストの無駄づかいとセキュリティのリスクをまとめて調べられる Python 製のコマンドラインツールです。EC2・RDS・S3・IAM など 17 種類の AWS サービスを一度にスキャンして、月ごと・年ごとの節約見込み金額まで数値で示してくれます。「どのリソースを削除・縮小すれば、いくら節約できるか」がすぐにわかるのが最大の特長です。クラウドの費用管理を担当している人から、セキュリティ監査を定期的に行いたいエンジニアまで、幅広い人に役立つツールです。
こんな人におすすめ
1. クラウドのコスト削減を任された担当者 使われていない NAT ゲートウェイや EIP(固定パブリック IP アドレスのこと)、放置されたスナップショット(データのバックアップ)を自動で見つけて月次レポートを作りたい人に最適です。リソースごとに削減見込み額が数値で出てくるので、上司への報告資料にもそのまま活用できます。
2. セキュリティ監査を定期的に行いたい SRE・DevOps エンジニア IAM の過剰な権限設定、外部に公開されてしまっている RDS(データベースサービス)、暗号化されていない EBS(仮想ディスク)など、100 を超えるセキュリティチェックをコマンド1つで実行できます。手作業での確認作業を大幅に減らせます。
3. 複数の AWS アカウントやリージョンを管理するコンサルタント・SaaS 事業者
Organizations(複数の AWS アカウントをまとめて管理する AWS の仕組み)との連携や、--profiles フラグを使った並列実行により、何十ものアカウントをまとめて監査できます。クライアントごとの環境を一元管理したい場面でも活躍します。
インストール・使い方
Step 1: ツールをインストールする
まずターミナル(文字で命令を送る画面のこと)を開き、以下のいずれかを実行してください。
# pip(Python のパッケージ管理ツール)でインストール(推奨)
pip install kosty
# ソースコードからインストールする場合
git clone https://github.com/kosty-cloud/kosty.git
cd kosty && ./install.sh
# Docker(隔離された実行環境)を使う場合。Python の準備が不要
docker pull ghcr.io/kosty-cloud/kosty:latest
pip install kosty が最もかんたんな方法です。コマンドをコピー&ペーストして実行するだけで Kosty が使える状態になります。Python の環境構築が面倒な場合は Docker を使う方法もあります。
Step 2: AWS の認証情報を設定する
Kosty が AWS のリソースを読み取れるよう、アクセスキーを設定します。
# AWS CLI(AWS 公式のコマンドラインツール)で設定する場合
aws configure
# 環境変数(ターミナルで一時的に値を登録する方法)で設定する場合
export AWS_ACCESS_KEY_ID=your_key
export AWS_SECRET_ACCESS_KEY=your_secret
export AWS_DEFAULT_REGION=us-east-1
aws configure を実行するとアクセスキー ID・シークレットキー・リージョン・出力形式を順番に入力できます。すでに AWS CLI を設定済みであれば、そのままの状態で Kosty を使い始められます。
Step 3: 全サービスを一括スキャンする
準備ができたら、いよいよスキャン実行です。
# EC2・RDS・S3・IAM など 17 サービスを一括監査(コスト+セキュリティ両方)
kosty audit --output all
# Organization(複数アカウント)全体を並列スキャンする場合
kosty audit --organization --max-workers 20 --output all
# 特定のサービスだけ調べたい場合
kosty ec2 audit
kosty iam security-audit
kosty s3 check-public-read-access
kosty audit --output all を実行するとターミナル画面に結果がわかりやすく表示されます。--organization フラグをつけると組織内の全アカウントを対象にできます。
Step 4: ダッシュボードで結果を見る
コスト削減の優先順位を視覚的に確認したい場合は、付属の Web ダッシュボードが便利です。
# JSON 形式(データの交換に使われるテキスト形式)で結果を出力する
kosty audit --output json
# 生成された JSON ファイルをブラウザで確認する
open dashboard/index.html
JSON ファイルを dashboard/index.html に読み込むと、財務インパクトが大きい順に問題が一覧表示されます。「どこから手をつけるか」の優先順位がひと目でわかります。
動かしてみた
Docker コンテナ(隔離された実行環境)上の Python 3.12 環境で pip install kosty を試したところ、依存パッケージも含めてスムーズにインストールが完了しました。kosty コマンドがエントリポイント(コマンド実行の入り口)として正しく登録されていることも確認できています。
Python 3.12.13
kosty パッケージ: 正常インストール済み
エントリポイント: kosty コマンドとして登録
公式の Docker イメージ(ghcr.io/kosty-cloud/kosty:latest)も提供されており、Intel(AMD64)と Apple Silicon(ARM64)のどちらのマシンでも動くマルチアーキテクチャ対応です。コンテナは一般ユーザー権限で実行される設計になっており、AWS 認証情報は読み取り専用でマウント(:ro をつけることで書き換え不可にする設定)するのが推奨されています。
docker run --rm \
-v ~/.aws:/home/nonroot/.aws:ro \
ghcr.io/kosty-cloud/kosty:latest audit
この方法なら Python の環境を用意しなくても、Docker さえあればすぐに試せます。
ブラウザで試す(デモ)
AWS の認証情報がなくても、コマンドビルダーデモで Kosty のコマンド体系を体験できます。サービス・チェック種別・リージョン・出力形式をドロップダウンメニューから選ぶだけで、すぐにコピー&ペーストして使えるコマンドが自動生成されます。「まず動かしてみたい」という人は、ここから触れてみると全体のイメージがつかみやすいでしょう。
実践のコツ:はじめの一歩
Kosty を使い始めるときに役立つポイントをまとめました。
- まず
kosty auditを実行する: オプションなしで実行するだけで 17 サービス分の総合レポートが得られます。最初の1コマンドとして最適です。 --output jsonで記録を残す: JSON で出力しておくと、ダッシュボードへの読み込みや他ツールとの連携に使えます。定期実行の記録にも便利です。- 個別コマンドで深掘りする:
kosty ec2 check-oversized-instancesのように気になるサービスだけを詳しく調べられます。--cpu-threshold 20で CPU 利用率 20%以下のインスタンスを絞り込むと、m5.2xlarge なら月約 280 ドル分の節約見込みが表示されることもあります。 - 孤立したリソースを最初に確認する: EBS の孤立ボリュームや未接続の EIP は、使われていないのに毎月費用が発生します。
kosty ebs check-orphan-volumesやkosty eip check-unattached-eipsでまず確認してみましょう。 - 外部公開リソースの全マッピングを定期実行する:
kosty public-exposure --output consoleで想定外のリソースが外から見えていないかをチェックできます。 - Docker で試す場合は
:roをつける: 認証情報ファイルを読み取り専用でマウントすることで、コンテナ内から誤って設定が書き換えられるリスクを防げます。
活用アイデア
- 月次コスト削減レポートの自動化:
kosty audit --output csvを月1回のスケジュールで実行して、新規の検出リスクがあれば Slack や PagerDuty に通知するパイプラインを構築できます。GitHub Actions や AWS Lambda との組み合わせが有効です。 - 財務インパクト順のコスト対応: JSON 出力をダッシュボードで読み込むと、削減見込み額が大きい順(例: RDS の過剰インスタンス → 停止中 EC2 → NAT ゲートウェイ → 未接続 EIP)に問題が並び、ROI(費用対効果)の高い順番から対応を進められます。
- CI/CD パイプラインへの組み込み: Pull Request のマージ前に
kosty iam security-auditを自動実行して、IAM の権限設定ミスを早期検出するワークフローを作れます。 - マルチアカウントの一元監査:
kosty.yamlにプロファイルを定義してkosty audit --profilesを実行すると、複数の AWS アカウントを並列でスキャンし、output/kosty_summary_<タイムスタンプ>.jsonにまとめて出力します。コンサルタントが複数クライアントの環境を管理する場面で特に役立ちます。 - セキュリティ定期パトロール:
kosty public-exposure --output consoleで外部公開リソースを定期的に全マッピングして、想定外のリソースが公開されていないかをルーティンチェックに組み込めます。 - IAM セキュリティの学習素材として: 特権昇格リスクを 21 パターン検出する
kosty iam check-privilege-escalation --deepは、実際の AWS 環境でどんな設定が問題になりうるかを体験できる学習教材としても使えます。
用語とポイント解説
EBS(Elastic Block Store) AWS が提供する仮想ディスクサービスです。EC2 インスタンス(仮想サーバー)に取り付けて使います。かんたんに言うと、クラウド上の外付けハードディスクのようなものです。EC2 を削除しても EBS が残ったままだと、使われていないのに料金が発生し続けるため要注意です。
EIP(Elastic IP) 固定のパブリック IP アドレス(インターネット上の住所)です。かんたんに言うと、変わらない「クラウドの住所」を確保するサービスです。EC2 などのリソースに接続していない状態でも時間課金が続くため、不要な EIP は解放することがコスト削減の第一歩になります。
NAT Gateway(ナット・ゲートウェイ) プライベートサブネット(外部から直接見えないネットワーク区画)からインターネットへの通信を中継するサービスです。かんたんに言うと、内側のサーバーが外とやり取りするための「出口ルーター」です。トラフィックが少ない時間帯にも固定費用が発生するため、不要なものはコスト削減の対象になります。
IAM(Identity and Access Management) AWS リソースへのアクセス権限を管理するサービスです。かんたんに言うと、「誰がどの操作を許可されているか」を管理する鍵の管理システムです。過剰な権限設定や特権昇格リスクは情報漏えいや不正操作につながるため、定期的な監査が必要です。
特権昇格(Privilege Escalation) 本来は限られた権限しか持たないユーザーが、設定ミスなどを通じて管理者権限を得てしまう状態のことです。かんたんに言うと、「鍵を持っていないはずの人がマスターキーを手に入れてしまう問題」です。Kosty は 21 パターンのリスクを自動検出できます。
Organizations(オーガナイゼーションズ) 複数の AWS アカウントを階層構造でまとめて管理する AWS の機能です。かんたんに言うと、部署ごとや用途ごとに分けた「AWS の会社グループ管理」です。Kosty と組み合わせることで、グループ全体の全アカウントを一度にスキャンできます。
FinOps(フィンオプス) クラウド費用の可視化・最適化・管理を継続的に行うための実践手法です。かんたんに言うと、「クラウドにかかるお金を見える化して、チーム全体で無駄をなくす取り組み」のことです。Kosty のような監査ツールは、FinOps の「見える化」フェーズを自動化するものとして位置づけられます。
WAF(Web Application Firewall) SQL インジェクション(データベースへの不正操作攻撃)や XSS(ウェブページへの悪意あるスクリプト埋め込み)などの攻撃を遮断するファイアウォールです。かんたんに言うと、「ウェブアプリの前に立つ護衛」です。WAF の設定漏れや過不足も Kosty のセキュリティ監査で確認できます。
API Gateway(エーピーアイ・ゲートウェイ) 外部のアプリやサービスから AWS の機能を呼び出すための「窓口」を管理するサービスです。かんたんに言うと、「外からのリクエストを受け付けて、適切な場所に振り分けてくれる受付係」です。認可設定やスロットリング(過剰なアクセスを制限する機能)の不備もセキュリティリスクになるため、定期的な確認が大切です。
Kosty を使えば、これまで数日かかっていた AWS の棚卸し作業をコマンド1つに圧縮できます。ぜひ月次のコスト削減レポート作成や、IAM のセキュリティ定期監査などに活用してみてはいかがでしょうか。