
[!IMPORTANT] OpenSSF がホストする Allstar GitHub App は廃止されました。 Allstar 自体(OpenSSF Scorecard サブプロジェクト)は引き続きメンテナンスされていますが、 現在は自分で実行する必要があります。GitHub Action として実行するか、 サービスデーモンとして実行するかのいずれかです。
詳細は ossf/allstar#881 を参照してください。
ホスト型アプリに依存していた組織は、ホスト型アプリからの移行を参照してください。
Allstar は、GitHub 組織またはリポジトリがセキュリティのベストプラクティスに準拠しているかを継続的に監視する GitHub App です。Allstar がセキュリティポリシーの違反を検出すると、リポジトリまたは組織のオーナーに警告するための Issue を作成します。一部のセキュリティポリシーでは、Allstar は違反の原因となったプロジェクト設定を自動的に変更し、期待される状態に戻すこともできます。
Allstar の目標は、プロジェクトのセキュリティに影響を与えるファイルと設定をきめ細かく制御できるようにすることです。組織レベルとリポジトリレベルの両方で監視するセキュリティポリシーと、ポリシー違反の処理方法を選択できます。また、新しいポリシーを開発したり、コントリビュートしたりすることもできます。
Allstar は OpenSSF Scorecard プロジェクトの一部として開発されています。
Allstar が作成した不要な Issue が届く場合は、こちらの手順に従ってオプトアウトしてください。
Allstar は高度に設定可能です。制御には主に 3 つのレベルがあります。
これらの設定は、組織の .allstar リポジトリで行われます。
リポジトリレベル: Allstar を使用する組織のリポジトリメンテナは、自分のリポジトリを組織レベルの適用からオプトインまたはオプトアウトできます。注: これらのリポジトリレベルの制御は、組織レベルの設定で「リポジトリオーバーライド」が許可されている場合にのみ機能します。これらの設定は、リポジトリの .allstar ディレクトリで行われます。
ポリシーレベル: 管理者またはメンテナは、特定のリポジトリで有効にするポリシーと、ポリシー違反時に Allstar が実行するアクションを選択できます。これらの設定は、組織の .allstar リポジトリ(管理者)またはリポジトリの .allstar ディレクトリ(メンテナ)のいずれかのポリシー yaml ファイルで行われます。
組織レベルで Allstar をインストールする前に、Allstar を実行するリポジトリのおおよその数を決定する必要があります。これにより、オプトイン戦略とオプトアウト戦略のどちらを選択するかの判断に役立ちます。
オプトイン戦略では、Allstar を実行したいリポジトリを手動で追加できます。リポジトリを指定しない場合、Allstar はインストールされていても実行されません。総リポジトリのうち少数のリポジトリにのみポリシーを適用したい場合、またはより多くのリポジトリで有効にする前に単一のリポジトリで Allstar を試してみたい場合は、オプトイン戦略を選択してください。v4.3 リリース以降、類似した名前の複数のリポジトリを簡単に追加できるようにグロブがサポートされています。
オプトアウト戦略(推奨)は、すべてのリポジトリで Allstar を有効にし、Allstar の適用からオプトアウトするリポジトリを手動で選択できます。すべてのパブリックリポジトリまたはすべてのプライベートリポジトリをオプトアウトすることもできます。組織内のすべてのリポジトリで Allstar を実行したい場合、または少数のリポジトリや特定のタイプ(パブリック vs プライベートなど)のリポジトリのみをオプトアウトしたい場合は、このオプションを選択してください。v4.3 リリース以降、類似した名前の複数のリポジトリを簡単に追加できるようにグロブがサポートされています。
| オプトアウト(推奨) optOutStrategy = true |
オプトイン optOutStrategy = false |
|
|---|---|---|
| デフォルトの動作 | すべてのリポジトリが有効 | リポジトリは有効にならない |
| リポジトリの手動追加 | リポジトリを手動で追加すると、それらのリポジトリで Allstar が無効になります | リポジトリを手動で追加すると、それらのリポジトリで Allstar が有効になります |
| 追加設定 | optOutRepos: リストされたリポジトリで Allstar が無効になります optOutPrivateRepos: true の場合、すべてのプライベートリポジトリで Allstar が無効になります optOutPublicRepos: true の場合、すべてのパブリックリポジトリで Allstar が無効になります (optInRepos: この設定は無視されます) |
optInRepos: リストされたリポジトリで Allstar が有効になります (optOutRepos: この設定は無視されます) |
| リポジトリオーバーライド | true の場合: リポジトリは、自身のリポジトリファイルの設定を使用して、組織の Allstar 適用からオプトアウトできます。そのリポジトリに適用される組織レベルのオプトイン設定は無視されます。 false の場合: リポジトリは、組織レベルで設定された Allstar 適用からオプトアウトできません。 |
true の場合: リポジトリは、組織レベルで設定されていなくても、組織の Allstar 適用にオプトインできます。そのリポジトリに適用される組織レベルのオプトアウト設定は無視されます。 false の場合: リポジトリは、組織レベルで設定されていない場合、Allstar 適用にオプトインできません。 |
Allstar は GitHub App として組織に作用します。アプリを作成し、そのアプリとして認証するプロセスを実行します。したがって、セットアップはすべてのデプロイメントに共通する 2 つのステップ、つまりアプリの作成と管理リポジトリの作成であり、その後、実行方法を選択します:
| GitHub Action | サービスデーモン | |
|---|---|---|
| 実行方法 | .allstar リポジトリ内のスケジュールされたジョブ | ホストする常駐プロセス |
| 提供するもの | GitHub 以外には何も不要 | サーバーまたはコンテナオーケストレーター |
| 実行頻度 | cron に設定した内容 | 継続的、5〜10 分で結果が得られます |
| セットアップの手間 | 中程度 | 高 |
| 最適なケース | 最もインフラストラクチャが少ないオプションが必要な場合 | 最大限の制御が必要な場合、またはすでにサービスを実行している場合 |
Action は 2 つのうちでオーバーヘッドが低く、ほとんどの組織がここから始めるべきです。ポリシー設定を変更することなく、後でデーモンに移行できます。
App は、組織内に一連の権限を持つユーザーに似た ID です。Allstar は、コンプライアンスを検出するためにほとんどの設定とファイルコンテンツへの読み取りアクセス、および Issue を作成して block アクションをサポートするために Issue とチェックへの書き込みアクセスが必要です。
オペレーター手順 - GitHub App の作成に従い、App ID と秘密鍵を記録してください。両方の実行モードでこれらが必要です。
.allstar 管理リポジトリを作成するAllstar は、組織内の .allstar という名前のリポジトリから設定を読み取ります。
最も速い作成方法はサンプルからです:
.allstar と入力しますこれにより、オプトアウト戦略と issue アクションを使用して、すべてのリポジトリで現在のすべての Allstar ポリシーが有効になります。これらは後で変更できます。
最初からきめ細かく制御する場合(オプトインまたはオプトアウト戦略の選択と、個々のポリシーファイルの自動作成)は、代わりに手動インストール手順に従ってください。
このオプションは、GitHub Actions を使用してスケジュールされたジョブとして Allstar を実行するため、GitHub 自体以外に運用するインフラストラクチャはありません。
GitHub Actions インストール手順に従って、.allstar リポジトリに定期的な Action を設定し、それを強化し、結果を監視します。
このオプションは、Allstar を常駐プロセスとして実行し、スケジュールではなく継続的に違反を検出して解決します。
プロセスの実行、シークレットの管理、サイジング、および利用可能な環境変数については、オペレーター手順を参照してください。
組織が OpenSSF ホスト型アプリを使用していた場合、設定はそのまま引き継がれます。.allstar 管理リポジトリ、allstar.yaml、およびすべてのポリシーファイルは変更なしで機能し続けます。置き換えるのは、それらを読み取るプロセスだけです。
移行するには:
.allstar リポジトリはそのままにしておきます。allstar-app をアンインストールします(Settings -> GitHub Apps にまだ表示されている場合)。ホスト型アプリが以前に作成した Issue はリポジトリに残ります。独自のインスタンスは、同じ allstar ラベル(または設定した issueLabel)で Issue を識別するため、違反が解決されると重複を作成するのではなく、それらの Issue を引き継いでクローズします。
各ポリシーには、Allstar がリポジトリの非準拠を検出したときに実行するアクションを設定できます。