本記事では「GitHub Enterprise Cloud」で企業ユースを満たすための項目(セキュリティや制限等)にどんなものがあるのか、書いていこうと思います。
前提条件
- 2023年4月時点です。
- Cloud版です(Server版ではない)。
- 代表的な内容を経験を元にピックアップします。
ではいってみましょう、以下目次です。
アクセス認証
アクセス認証全般
- パスワード認証
→ パスワード文字列のポリシは文字数等、決められています。また、実際にはリスクベース認証も含まれているのか、普段と違う環境からのログインはメール認証が求められることがあります。 - 2段階認証
→ パスワード認証に加えて、SMS認証やアプリ認証(スマホアプリでトークン設定)が使えます。 - SAML
→ 企業内のディレクトリと接続した認証が可能です。個人で発行してもらったアカウントをディレクトリに登録し、認証にディレクトリを使うイメージ。 - EMU(Enterprise Managed Users)
→ 運用管理側でアカウントを一元的に発行して認証させる仕組みです。GitHub.comのアカウントとは切り離され、完全に利用者側の管理となります。SAMLやOIDCと組み合わせます。 - パーソナルアクセストークンの生成
→ Gitクライアント等からアクセスする際は、パスワードではなく、アクセストークンを使います(2021年8月から変更)。アクセストークンはアクセス範囲を絞ったり、期限設定が必要です。さらに、Enterprise管理者によるポリシ設定も可能です。 - セッションの表示や管理
GitHub.com認証を使う場合、パスワード認証のポリシ設定は出来ないようです(固定設定のポリシ)。現状は「数字と小文字を含む場合は 8 文字」または「任意の文字の組み合わせで 15 文字の長さ」となっています。
2段階認証でスマホを使う場合は「1Password, Authy, Microsoft Authenticator」といったアプリが使えるようです。最初に初期設定すれば、アプリを起動した際にトークン「123456」等が表示されるため、合わせて入力します。
パーソナルアクセストークンのアクセス範囲はきめ細かい設定が出来ます。設定するとパスワードのような文字列が発行されるため、git clone等の際に入力すればOKです。以下、設定画面の一部を抜粋しておきます。
Enterprise管理者によるパーソナルアクセストークンのポリシ設定(承認制にするなど)が出来ます。
EMUに関する補足
EMU(Enterprise Managed Users)を使う場合、認証は自前のSAMLやOIDCとの組み合わせが前提となるため、「2段階認証」はGitHub上では設定出来ません。
→ 2段階認証は認証側であるADなどで設定しましょう。
アクセス認証からは外れますが、EMUはリポジトリをPublicに出来ません。
→ むしろそれは嬉しいです。
接続制限
- https
→ GitHubとの接続はhttps接続のため、通信は暗号化されています。 - IPアドレスによるアクセス制限
→ EnterpriseやOrganizationに接続可能なIPアドレスを追加出来ます。接続元のグローバルIPアドレスを事前に登録しておけば、不正アクセスのリスクを軽減可能です。 - ドメイン検証
→ 例えば、自社のドメインだけじゃなく、協力会社(na7log.com)のドメインを承認したり、検証したりすることが出来ます。そして、承認または検証済みではない場合に、アクティビティ等に関するメール通知を制限することが可能です。
なお、利用者が意識することはありませんが、GitHub側においてDDos攻撃などから保護するためのFirewallは当然のごとく導入されているようです。
リポジトリ制限(ポリシ設定)
EnterpriseやOrganization単位で、次のようなポリシ設定が可能です。
- リポジトリ作成時の可視性は「Private」しか許可しない。
- リポジトリ可視性の変更を許可しない。
→ 後からpublicな変更は出来ないようにします。 - リポジトリ削除を許可しない。
→ 削除はOrganizationのOwnerに限定など。この場合、削除可能なのはOrganization Ownerになって、復活も同様です。(リポジトリは削除から90日以内であれば復活可能) - リポジトリのIssue削除を許可しない。
→ 削除はOrganizationのOwnerに限定など。 - 外部コラボレータの承認は代表者による許可制にしたり、そもそも招待は出来なくする。
→ リポジトリ管理者が第3者を勝手に招待とか怖いですからね。
このような強力なポリシ設定によって、リポジトリが絶対に外部公開されることがないようにコントロールすることが出来ます。
ここでは割愛しますが、Actions等に関するポリシも設定出来ます。
監査ログ
利用者が何をしているか(例えばリポジトリ作成や削除、メンバ招待)といった監査ログを残すことは企業ユースにおいて、非常に重要です。
- GitHub上で最大90日間残すことが出来ます。(ただしGitイベントログは最大7日間です)
- 監査ログはストリーミング(外部転送)が可能。
→ 外部転送すればもっと長い期間を残せます。
→ 転送先はAWS S3, Azure Blob Storage, Azure Event Hubs, Datadog, Google Cloud Storage等が準備されています。 - アクセス元のIPアドレスが取得可能。
→ デフォルトでは送信元のIPアドレスは記録されません。オプションで取得可能ですが、取得する場合は利用者に許可とろうねって注意が書きがあります。 - API Eventの取得はオプション。
企業内で監査ログってなると、数年以上(1年、5年、10年)は残す必要があるのでストリーミングが基本になるでしょう。ストリーミングした監査ログはJSON形式で保存されます。
(参考) 利用の手引き
公式サイトの関連ページを張っておきます。
Enterpriseの使い方などが載っています。
まとめ
GitHub Enterprise Cloudを企業ユースで利用するための代表的な設定項目をご紹介しました。
- アクセス認証
- 接続制限
- リポジトリ制限
- 監査ログ
基本的には複数の設定を組み合わせた多層防御によって、不正アクセスを防ぐ手段があります。さらに、EnterpriseやOrganizationレベルでのポリシ設定によって誤ったリポジトリ設定を排除することが出来ます。
これらをしっかり理解して(最初は契約ベンダに色々教えてもらいながら)確実に設定し、継続的に見直すことで、GitHub Enterprise Cloudを企業ユースで利用することは十分出来るのだろうと思いました。特に、EMUを利用するとアカウント管理部を内部に閉じることに加え、リポジトリのPublic設定が出来ないためお勧めです。
※管理内容によってはセキュリティガチガチでもクラウドNGって場合もあるため、その時は素直にServer版をサーバにインストールして使いましょう!
最後までご覧いただきありがとうございました。
コメント