信頼
CRACIがアクセスできるもの、保持するもの
ビルドを新しいランナーに移すことは、ソースコードとCIのシークレットをそのランナーに託すことを意味します。このページでは、CRACIが必要とするもの、コードが実行される場所、当社が保存するもの、そして範囲を小さく保つ方法をご説明します。
更新日
この問いに率直な答えが必要な理由
CIランナーは、スタック内のほとんどのツールよりも多くのものに触れます。ソースをチェックアウトし、依存関係をインストールし、ワークフローがパッケージの公開やデプロイに使うシークレットを保持します。2025年3月にGitHub Actionのtj-actions/changed-filesが侵害されたとき、CISAは、悪意あるコードがアクセスキー、GitHubの個人用アクセストークン、npmトークン、RSA秘密鍵などのシークレットを漏えいさせたと報告しました。ジョブの実行中、それらのシークレットが置かれているのがランナーです。
ですから、ワークフローをCRACIに向ける前に、CRACIが何にアクセスできるのかを正確に知っておくべきです。答えは以下のとおりで、詳細はCRACI Trust Centerとdocs.craci.comに掲載しています。
GitHub Appの役割
CRACIが置き換えるのはランナーであり、GitHub Actionsではありません。ワークフローはそのままで、選んだジョブのruns-onをcraciに変更するだけです。実行結果は引き続きGitHubのUIに表示されます。これを実現するために、組織にCRACI GitHub Appをインストールします。
インストール時に、Appにすべてのリポジトリへのアクセスを許可するか、選択したリポジトリのみへのアクセスを許可するかを選びます。CRACIでワークフローを実行できるのは、アクセスを許可したリポジトリだけです。
Appが要求する正確な権限はGitHubのインストール画面に表示され、後から組織の設定で確認できます。要するに、AppはコードとActionsの実行結果を読み取ることができ、組織のために登録したランナーを管理します。
コードが実行される場所
ジョブは分離された仮想マシンで実行されます。ビルドの実行は、欧州のベアメタルインフラストラクチャ上で行われます。ソースコードは、ビルドの間、ジョブのVM内で処理されます。
各ジョブは、CRACI Slim、CRACI Slim ARM64、またはGitHub互換のUbuntu 24.04イメージのいずれかで実行されます。現在、ランナーはLinuxのみで、WindowsとmacOSはロードマップに掲載されています。
ジョブがどのように分離され、終了時にジョブのVMがどうなるかは、docs.craci.comとTrust Centerに記載しています。
CRACIが保存するものと保存期間
CRACIはビルドの実行中にジョブのVM内でソースコードを処理しますが、保存はしません。保持するのは、各ビルドについて記録したエビデンスと、ワークフローが保存するキャッシュです。
- ビルドのメタデータ
- パッケージデータ(各ジョブが取り込んだ依存関係)
- ジョブのネットワークトレース
- SBOM
- 来歴の記録
- キャッシュ
- 監査記録
キャッシュにはワークフローが入れたものがそのまま保持されるため、キャッシュの内容はほかのビルド出力と同じように扱ってください。
デフォルトの保持期間は180日です。Enterpriseプランではカスタムの保持期間を設定できます。データの削除と暗号化については、Trust Centerで説明しています。
ホスティングとデータレジデンシー
CRACIは欧州でホストされ、EUのデータレジデンシーを提供しており、ビルドの実行は欧州のベアメタルインフラストラクチャ上で行われます。プラットフォームは、ドイツのプロバイダーであるHetznerのフィンランド・トゥースラにあるデータセンターで稼働しています。CRACIが扱うデータについてはデータレジデンシーをご覧ください。
ビルド自体に対する制御
シークレットに触れるランナーであれば、その送信先を制限できるべきです。CRACIのネットワークエグレスポリシーは、ジョブごとにデフォルトの拒否または許可を設定でき、一般的なソフトウェアソース向けの24の組み込みプリセットと、npm、PyPI、Cargo、Go proxy、OCIなどのレジストリ向けの種別付きカスタムソースを備えています。TLS、TCP、UDP、ICMPの明示的なルールを書くこともできます。ポリシーはジョブ開始前に検証され、フェイルクローズで動作し、不明なフィールドを拒否します。ポリシー違反はアラートで通知されます。
ジョブは固定の送信元IPアドレス範囲から通信するため、自社のファイアウォールでCRACIランナーをアドレスで許可できます。
組織内のアクセス
- Enterpriseプランは、Google WorkspaceをIDプロバイダーとするSAMLシングルサインオンに対応しています。
- 管理者の監査ログに管理操作が記録されます。UIで確認でき、現時点ではエクスポートできません。
- APIトークンは管理者が作成し、いつでも取り消すことができ、90日後に失効します。
範囲を小さく保つ方法
CRACIを評価するために、組織全体へのアクセスを与える必要はありません。
- 選択したリポジトリにインストールする。Appのインストール時に「Only select repositories」を選び、1つか2つを選択します。後から組織のSettingsのGitHub Apps、CRACI、Configureで範囲を広げたり狭めたりできます。変更は直ちに反映されます。
- ジョブを1つずつ移行する。CRACIで実行されるのは
runs-on: craciを指定したジョブだけです。それ以外は、現在使っているランナーのままです。 - シークレットの少ないジョブから始める。テストやlintのジョブなら、公開やデプロイの認証情報を新しいランナーに置くことなく、SBOMとネットワークのエビデンスを確認できます。
- デフォルト拒否のエグレスポリシーを有効にする。ジョブに必要なパッケージソースだけを許可し、それ以外は許可しません。
- 離脱の方法を知っておく。GitHubでは、Appをインストールしたままアクセスをブロックする一時停止と、組織へのアクセスを削除するアンインストールを選べます。
当社のセキュリティへの姿勢
当社のセキュリティページでは、その考え方を「主張するのではなく、文書化する」と説明しています。Trust Centerは、プラットフォームを支えるポリシー、管理策、ドキュメントをまとめたもので、ベンダー評価用の資料もここから請求できます。
このページでは認証の取得を主張していません。セキュリティプログラムと監査作業の最新状況は、Trust Centerでご確認ください。
このページで答えられていないご質問はありますか?Trust Centerからお送りいただくか、お問い合わせください。Enterpriseをご検討の方は営業担当にご相談いただくこともできます。