GitHubのOrganizationの設定を1歩セキュアにした話
はじめに
こんにちは。ログラスの勝丸です。
2023年8月から2024年8月まで、ログラスは無事54週落とさずに記事を出し続けることができました。
また今年も同じチャレンジをやろうと思っております。
これはLoglass Tech Sprintの55週目の記事です。また1年間頑張っていきましょう。
過去の記事
ちなみに自分は過去にこういう記事を書きました。再掲しておきます。
この記事について
最近会社のセキュリティ強化に力を入れています。その中でGitHubの設定について変更を入れました。GitHubの設定は使い始めたときからなんとなくそのまま。という組織もあると思います。この記事では費用対効果が大きいと思われる事項をいくつか紹介します。
1. ベース権限を読み取り権限(Read)へ変更
会社で運用されている皆さんは、GitHubをOrganizationで管理していると思います。
OrganizationはMemberが持つベース権限の強さを設定可能です。
デフォルトは書き込み可能権限(Write)ですが、普通にMemberを招待するとすべてのリポジトリに書き込みができてしまいます。
ここは思想が入る部分かと思いますが、すべての人がすべてのリポジトリに書き込み権限が必要なわけではないよねということで、ログラスではベース権限を読み取り権限(Read)に変更しました。
仮に権限が漏洩してもできるだけ被害を小さくするという観点もあります。
変更方法
https://github.com/organizations/changeme/settings/member_privileges にある、Base permissionsをReadに変更。
注意点
ベース権限がWriteからReadになるので、リポジトリに参加しているメンバーに明示的に書き込み権限を与えておかないと、書き込みができなくなります。弊社でも、実際に何件か書き込めなくなったという問い合わせが発生しましたが、サクッと権限を修正して終了だったので、迷うよりはやってしまったほうが効果が高いかもしれません。
2. リポジトリの削除・トランスファーを禁止: Repository deletion and transfer
リポジトリに対してAdminアクセスを持つアカウントでさえ、リポジトリの削除ができなくなります。
リポジトリの削除をしたいユースケースが発生するのは稀と考え、その場合はオーナーに相談してもらって、削除するという運用に倒しました。
変更方法
https://github.com/organizations/changeme/settings/member_privileges にある、Repository deletion and transferからチェックを外して保存。
注意点
特にありません。
3. リポジトリの可視性変更を禁止: Repository visibility change
こちらも2と似ていますが、リポジトリに対してAdminアクセスを持つアカウントでさえ、リポジトリの可視性を変更出来なくするという変更を入れました。PublicリポジトリをPrivateにする、またはPrivateリポジトリをPublicにするというユースケースの発生頻度が低いと判断しました。こちらも都度相談してもらう想定です。
変更方法
https://github.com/organizations/changeme/settings/member_privileges にある、Repository visibility changeからチェックを外して保存。
注意点
特にありません。
4. Ownerロールを持つ人の明確化と修正
GitHubのベストプラクティスによれば、Organizationのオーナーは複数人であることが望ましいとされています(https://docs.github.com/ja/organizations/collaborating-with-groups-in-organizations/best-practices-for-organizations )
しかし、オーナー権限を持つ人が多すぎるのも問題です。ログラスでは歴史的な経緯などで10人程度オーナーを持っていましたが、業務で強い権限が必要なのかヒアリングしたうえで不必要な人を削りました。
変更方法
https://github.com/orgs/changeme/people にあるメンバ一覧からChange roleを実行。
注意点
特にありませんが、いきなり権限を剥奪してしまうと、色々問題が起こるので、どういうポリシーとするのか?も同時に議論出来ると良さそうです。ログラスでは、「ある部署に所属しているメンバー複数名であること。CTOやEMの役職をもっているからと言って権限を与えることはしない」としました。役職者はそれだけで攻撃対象となりやすいので、そのような整理をしました。
5. Organization参加メンバーの2FA必須化
内容
ログラスではポリシーとして2FAを必須としていたのですが、設定で必須にできておりませんでした。
入社されたタイミングでお声がけし、2FAを必須にしてもらう運用をしていました。その中で3ヶ月に1度ぐらい思い出したように、2FA設定をしていない人を見つけてはお願いをしていました。この設定はMustにできます。
変更方法
https://github.com/organizations/changeme/settings/security からTwo-factor authenticationにチェックを入れて保存。
注意点
上記のキャプチャにもあるように、有効化するとその時点で有効化されていないユーザがOrganizationからキックされます。なので有効化する前に、Organizationに所属するユーザ全員の2FAを有効化する必要があります。
まとめ
色々書いてきましたが、この辺のトピックはGitHub自身も日本語でまとめてくれています。1つ1つが短く、読みやすいので、いい機会だと思って読んでみることをお勧めします。意外と入れたほうがいい設定が見つかることがあります。機能もどんどん増えていくので久しぶりにキャッチアップするのも良いと思います。
最後に、この領域は地味ですが重要度は非常に大きい領域かなと感じています。そして真面目にやると結構大変なことも多い領域だと思います。歴史が長い組織だと、すでに使われていないのではというような、過去の調査が必要になります。
この記事で取り扱ったものはサクッと対応できるものも多いですが、時には他人にお願いすることもあり、実際にやってみると面倒なこともありました。
見て見ぬふりをせず、できるだけ早いうちに対応してしまいましょう。
Discussion