セキュリティ
Zenavo はあなたが所有するサーバーの認証情報を扱うため、設計ではセキュリティを最優先にしています。
あなたのサーバー
- 稼働中のサーバーについて、Zenavo は SSH 鍵、パスワード、クラスターの認証情報を一切保持しません。入力した SSH の認証情報はセットアップジョブが使い、成功したらすぐに、失敗したら 1 日後に消去します(それまでは再試行用に暗号化して保持)。
authorized_keysには何も追加しません。 - セットアップ後は、サーバー上の Zenavo エージェントが HTTPS でコントロールプレーンに外向きに接続します。Zenavo のためにサーバーのポートを開ける必要はなく、Zenavo が保存するのはエージェントのトークンのハッシュだけです。
- エージェントの Kubernetes の権限はプロジェクトの名前空間だけに及び、そこでは Pod Security の baseline レベルが強制されます:特権コンテナ、ホストネットワーク、ホストディレクトリは使えません。これはアドミッションポリシーで強制され、エージェントには変更できません(ファイアウォールとセキュリティ)。
- ホスト鍵は最初の接続で固定されます。サーバーのホスト鍵が変わると、セットアップは実行を拒否します。
- 各サーバーが Zenavo のイメージストアから pull できるのは自分のチームのイメージだけです。サーバーはチームのリポジトリに限った 5 分間有効なトークンを受け取り、レジストリは誰にとっても読み取り専用です。イメージはサービスごとに保存されるので、プロジェクトを削除するとそのイメージも削除されます。
ビルド
Git のビルドは、クラウドの ID も、パブリックアドレスも、コントロールプレーンや他の顧客への経路も持たない専用のビルドマシンで動きます。ビルドのステップからは、クラウドのメタデータサービスにもプライベートネットワークにも届きません。BuildKit は rootless で動き、Zenavo のクライアント証明書だけを受け付けます。リポジトリの URL は、パブリックアドレス上の https:// と SSH に限られ、リダイレクトには従いません。
あなたのデータ
- 変数などのシークレットは保存時に暗号化されます。変数の値はログで伏せ字になり、Viewer には表示されません。
- コントロールプレーンのデータベースは、暗号化され証明書を検証した接続だけを受け付けます。
- GitHub へのアクセスには、選んだリポジトリに範囲を絞った短期間のインストールトークンを使います。
あなたのアカウント
- パスワードはハッシュ化されます。セッションは 12 時間有効で、Account settings からサインアウトさせられます。
- セッション Cookie は
HttpOnly、Secure、ホスト限定(__Host-)で、変更のリクエストにはすべて同一オリジンと Zenavo のリクエストヘッダーが必要です。 - 認証アプリによる二要素認証と、1 回限りのリカバリーコード。シークレットはマスターキーで暗号化し、リカバリーコードはハッシュで保存します。コードは 1 回限りで、間違ったコードはアカウントごとに制限されます。
- パスキー(WebAuthn)は単独でも、アプリと併用しても使えます。保存するのは公開鍵だけです。チャレンジは 1 回限りで有効期間が短く、セッションか進行中のサインインに結び付いています。署名カウンターが戻ったものは拒否し、監査ログに記録します。
- パスワードで作った新しいアカウントは、サーバーの追加、デプロイ、招待の前にメールアドレスを確認します。メールアドレスやパスワードの変更、アカウントの削除には現在のパスワードが必要です。
- 追記のみの監査ログに、サインイン、認証情報、サーバー、デプロイ、チームの変更を、シークレットや変数の値を含めずに記録します。データベースはエントリーの変更や削除を拒否します。
- データベースビューは Kubernetes の exec API を通じてデータベースに届き、データベースのポートを開けることはなく、認証情報はコンテナ内にとどまります。メンバーは読み取りだけ(読み取り専用の SQL トランザクション、許可リストにある Redis の読み取りコマンド、MongoDB の find)ができ、変更にはチームの管理者が必要です。サーバー全体に及ぶ Redis のコマンドと、MongoDB のサーバー側 JavaScript は常に拒否します。リクエストには時間とサイズの制限があり、SQL、キー、値、ドキュメントを含めずに監査されます。
脆弱性の報告
info@zenavo.app にメールしてください。公開する前に、私たちが修正する機会をください。