Appearance
セキュリティとデータの扱い
Ncost の安全性は「何ができるか」ではなく「何を恒久的にしないか」で設計されています。
恒久原則
- 読み取り専用 — 基礎機能には課金データの読み取りと集計権限、Find / Verify には利用者が選んだサービスのリソース・メトリクス閲覧権限だけを要求します。write 権限は仕様として恒久的に要求しません。リソースの自動停止・削除・リサイズ、コミットメントの自動購入は行いません
- ソースコードを送らない — コード・IaC・runbook を参照する場合は手元の道具を使い、ソースコードを Ncost のホスト環境へアップロードさせません(Use your own tools)
- データを人質に取らない — 課金起因で既存データの閲覧・エクスポートを止めません(料金 の fail-open 原則)
要求する権限
権限は「クラウド × サービス」単位の束で要求します — IAM アクション単位では細かすぎて導入が煩雑になり、クラウド全体では広すぎるためです。束が未付与でも他の機能は動き続け、その束に依存する検知だけが「権限不足」として理由付きで表示される設計です(Find の locked 表示 — 画面への表示は 計画中)。これは導入の自由でもあります — 最初に全権限を渡す必要はなく、見せたい範囲から始めて、広げたいときに広げられます(はじめる)。
キーレス認証を既定にします 計画中 — 長期キーを預かる方式ではなく、3 クラウドとも短命クレデンシャルへの連合を標準にします: GCP は Workload Identity Federation(静的な SA キー JSON を要求しない)、AWS は AssumeRole + テナント固有 External ID(confused-deputy 対策)、Azure は Federated Identity Credentials。
GCP プレビュー
顧客リソースを作成・変更・削除する権限は含まれません:
- 取り込み(必須):
bigquery.dataViewer(billing export dataset の読み取り)+bigquery.jobUser(集計クエリジョブの作成 — ジョブはあなたのプロジェクトで実行され、BigQuery のスキャン費用もそこで発生します)。スキャン量は日次集計クエリの実測値としてアプリ内に表示します。スキャン費用の安全網が必要な場合は、付与先プロジェクトに BigQuery のカスタムクォータ(1 日あたりのクエリ使用量の上限)を設定できます。このクォータは公式ドキュメントにあるとおり近似的で、実行中のクエリが上限を超えて完走することがあります — 厳密な上限保証ではなく、想定外の使いすぎに対する安全網としてお使いください - 無駄検知の観測(任意):
compute.viewer/cloudsql.viewer/monitoring.viewer(read-only)。付与しない場合もコスト同期は継続し、findings だけがlocked表示になります - WIF 用 計画中: 配布予定の Terraform モジュール(
infra/gcp/spend-access)が作成する reader サービスアカウントへのiam.workloadIdentityUser(テナント固有 ID だけがこの SA として認証するためのバインディング)
権限の付与先スコープの詳細は はじめる を参照してください。
AWS 計画中
初期の Observe は ce:GetCostAndUsage だけを許可した読み取り専用ロール 1 つで始めます。テナント固有の External ID がないと引き受けられません(confused-deputy 対策)。
この権限だけではリソース状態を観測できないため、AWS の Find / Verify は利用できません。対象サービスごとの Describe* / List* と CloudWatch 読み取りを最小の viewer bundle として別途設計し、利用者が選択して付与した範囲だけを観測します 構想。Cost Explorer の service + cost allocation tag 粒度で対象リソースの cost delta を再現できない場合も locked または Unverified とし、GCP と同等であるようには表示しません。
データの扱い
- 取り込みは読み取り専用です。源流(BigQuery / Cost Explorer)に日次集計を実行させ、結果行だけを受け取ります
- データが取れなかった日は「取れなかった」と表示します(coverage)。不完全なデータで完全なデータを上書きすることはありません
- 資格情報は、CSV・SQL ダンプを含むすべてのエクスポートに含まれません(平文の資格情報をエクスポートに出さないことを不変条件としています)
- 通貨をまたぐ合算・換算はしません。複数通貨がある場合は通貨別に表示されます
- 推定値(推定削減額・着地見込み)は実測値と常に視覚的に区別し、確定値のように見せません
Ncost 側のセキュリティ 計画中
あなたの環境に対する権限だけでなく、預かったデータを Ncost 側でどう守るかも仕様として公開します:
- 保存時暗号化 — 資格情報(SA キー等)はテナント単位のエンベロープ暗号化で保存する設計です(暗号化方式は実装済み・接続の保存経路への組み込みを含む全体はこの節の計画対象)。平文をログ・エクスポートに出さないことは不変条件です
- テナント分離 — すべてのデータはテナント ID で分離され、集計・表示のどの経路でも他テナントのデータと交差しません
- アクセスの最小化 — 運用者を含め、顧客データへの標準経路は製品の画面と API だけです。障害調査などでそれ以外の経路が必要になった場合は、対象テナントに事後を含め通知します
- 脆弱性の報告 — 非公開で連絡できる報告窓口を用意します(窓口は準備中です。整い次第このページに掲載します)
- 第三者認証(SOC 2 等)は現時点で取得していません。取得の計画が具体化したらこのページと ロードマップ に記載します
解約とデータの削除 計画中
- プレビュー期間中の削除は依頼ベースです: 連絡をいただければ、接続・資格情報・取り込んだ課金データ・finding・Verified Resultを含むテナントの全データを削除し、完了を報告します
- 接続の解除・キーの差し替えの際に、その接続に紐づく資格情報(SA キー等)を保存先から破棄する挙動もこの節の計画に含まれます
- セルフサービスの削除(画面からの即時削除)は一般提供までに用意します。その際、Verified Resultを完全削除するか、エクスポートしてから削除するかを選べる形を設計中です
なお、運営者情報・利用規約・プライバシーポリシーは現在準備中です。整備され次第このサイトに掲載します。
API を使う人間とエージェント 構想
公開 API の読み取りは、人間のツールでも AI エージェントでも同じスキーマを使う構想です。Ncost 側へ書き込める操作は当面 Virtual Tag に限定し、read と write:tags のスコープを分けます。タグ変更には producer を記録し、API キーは失効・再発行できる設計にします。