組織所有者による変更も制限

今回追加されたのは、Enterpriseレベルでsecurity configurationの強制範囲を設定する機能だ。管理者は次の3段階から選択できる。

  • 強制しない
  • リポジトリ所有者に強制する
  • リポジトリ所有者と組織所有者に強制する

「リポジトリ所有者と組織所有者に強制する」を選んだ場合、configurationで明示的に有効化または無効化した機能について、両者がenablement statusを変更できなくなる。これにより、Enterprise側で定めたセキュリティ設定が、下位の管理者によって意図せず変更されることを防ぎやすくなる。

対象は明示的に設定した機能

強制適用の対象になるのは、security configurationで明示的に有効化または無効化した機能だ。「Not set」とされた機能は強制されない。対象になり得る機能には、コードスキャン、Secret scanning、Dependabot関連機能、Dependency graphなどがあるが、実際の対象範囲はconfigurationに含めた項目によって決まる。

つまり、Advanced Securityに関するすべての設定が自動的に固定されるわけではない。Enterprise管理者がどの機能を有効化・無効化するかを構成したうえで、強制範囲を選ぶ仕組みだ。

設定の作成だけでは適用されない

運用時に注意が必要なのは、security configurationを作成しただけでは、既存のリポジトリ全体に自動適用されない点だ。作成後、Enterpriseまたは組織・リポジトリのレベルで適用操作を行う必要がある。Enterpriseレベルでは、全リポジトリまたは既存の設定がないリポジトリを対象に適用できる。

また、強制対象のenablement statusをREST APIから変更しようとした場合、API呼び出し自体は成功したように見えても、実際の状態は変更されない場合がある。GitHubは、GitHub Actionsが無効化されている場合など、強制設定が期待どおり適用されない可能性も説明している。

Enterprise全体の設定統制に活用

今回の機能は、Advanced Securityそのものの新機能ではなく、Enterpriseから配下の組織・リポジトリへセキュリティ設定を展開する際の変更権限を追加で制限するものだ。複数の組織やリポジトリを管理する企業では、管理基準を統一し、下位管理者による意図しない設定変更を防ぐための選択肢になる。

導入時は、どの機能を明示的に有効化・無効化するか、「Not set」の項目をどう扱うか、さらに構成をどの範囲へ適用するかを確認する必要がある。構成の作成と適用、そして強制設定は別の操作として管理することが重要だ。