Appearance
Local Scan — 予定仕様
Local Scan は、いつもの Google Cloud 資格情報を使い、現在見える範囲を 1 コマンドで診断する送信なしの入口です。請求データの接続は不要で、構成情報と静的価格表から金額を概算します。
この機能はまだ利用できません。このページは、実装時に満たす予定仕様を記録しています。
1 行のインストールと、1 回の同意
sh
curl -fsSL https://ncost.sh | shインストールと初回診断の間には、必ず利用者の同意を挟みます。制御端末(TTY)がある場合は端末から同意を取得します。CI など端末がない環境ではインストールだけで終了し、次に実行するコマンドを表示します。明示的な同意なしにクラウド API を読み始めません。
認証と診断範囲
- Application Default Credentials(ADC)があればそれを使い、なければ通常の gcloud ログイン資格情報を使う
- どちらも見つからない場合は
gcloud auth loginを案内し、診断せず終了する - 既定は現在の gcloud プロジェクト一つ。
--all-projectsを指定した場合だけ、見える範囲へ広げる - 読み取り専用の list 系 API だけを使い、リソースを作成・変更・削除しない
- 権限不足は、理由と必要な権限を表示する
出力とデータの扱い
- 構成情報と同梱の静的価格表から概算する
- 概算額には常に
~を付け、請求データによる実測と混ぜない - 診断結果・請求データ・ソースコード・テレメトリを Ncost へ送信しない
- 診断の最後に、データを送信していないことを表示する
text
❯ ncost scan
reading acme-prod with your gcloud permissions · read-only
✓ compute 41 resources
✓ disks 18 resources · 1 candidate
⚑ monitoring 権限不足 — roles/monitoring.viewer が必要
改善候補 · 根拠あり
▍ unattached disk analytics-cache-2 no instance ~$84/mo
potential savings (estimated, not your bill) ~$84/mo※ 出力は設計中の例示です。金額・リソース名は実在のデータではありません。
配布物を実行する前の検証
インストーラは固定パスで配布し、公開した checksum と取得内容を照合します。スクリプト全体を関数内で実行し、取得したバイナリの署名を検証してから配置します。検証に失敗した場合は実行せず終了します。
完了条件
Local Scan の提供開始には、少なくとも次を満たす必要があります。
- 明示的な同意前には、クラウド API を読まない
- 利用できる資格情報がなければ、ログイン手順を案内して診断せず終了する
- 指定がなければ、一つのプロジェクトだけを診断する
- クラウドリソースを書き換えない
- 診断データとテレメトリを外部へ送信しない
- checksum と署名の検証に成功した配布物だけを配置する