200stack ロゴ

$open /security/

セキュリティ

お客様のサイト・ソースコード・秘密情報を守るために、200stack が行っていることをまとめました。

ログイン

  • パスワードを使いません。メールで届くログインリンクか 6 桁の確認コードでログインします。
  • ログインのリンクとコードは 1 回しか使えません。コードの入力は 5 回までです。
  • リンクとコードはハッシュにして保存し、平文では持ちません。
  • ログインメールの送信回数は、メールアドレスごと・接続元ごとに上限を設けています。
  • ログイン状態は 2 週間ほど使わなければ切れます。Cookie は JavaScript から読めない設定(HttpOnly)です。

権限と記録

  • プロジェクトのメンバーは「管理者」「開発者」「閲覧者」の 3 段階です。メンバーの権限変更・削除やプロジェクトの削除は管理者だけができます。
  • 非公開にしたサイトは、表示する前に閲覧権限を確かめます。
  • メンバーの招待・参加、オーナーの移譲、外部サービスとの連携などの操作は、誰がいつ行ったかを記録しています。

ビルド

  • ビルドは 1 回ごとに専用のコンテナで動かします。他のお客様のビルドと同じコンテナは使いません。
  • ビルドのコマンドは管理者権限(root)ではなく、権限を絞った専用のユーザーで動かします。
  • 依存パッケージのキャッシュはプロジェクト・アプリごとに分け、他のお客様と共有しません。
  • シークレットの値(4 文字以上)は、ビルドログに出る前に伏せ字にします。

GitHub 連携

  • GitHub App で連携し、短時間だけ有効なアクセストークンを使います。
  • ビルドでソースを取得するときのトークンは、ビルドするリポジトリ 1 つの読み取りだけに絞ります。
  • GitHub からの通知は署名を確かめてから受け付けます。

環境変数・シークレット

  • 環境変数は既定でシークレットとして扱います。
  • シークレットの値は暗号化(AES-256-GCM)して保存し、保存後は画面に表示しません。
  • シークレットはビルドを管理するプロセスの環境変数には置かず、パッケージマネージャーの確認・インストール・ビルドで動かすコマンドに渡します。

お支払い

  • お支払いは Stripe の画面で行います。カード番号を 200stack のサーバーで受け取ったり保存したりはしません。
  • Stripe からの通知は署名を確かめてから処理します。

配信とインフラ

  • サイトは Cloudflare のネットワークから配信し、DDoS 攻撃への防御を受けています。
  • 独自ドメインの SSL 証明書は自動で発行・更新します。
  • 管理画面は Google Cloud の東京リージョンで動いています。

脆弱性を見つけたら

200stack の脆弱性に気づいた方は、お問い合わせフォームからお知らせください。内容を確認し、対応します。確認のため、他の利用者のデータへのアクセスやサービスを止める操作は行わないでください。

お問い合わせ