Enterprise Managed Users をお使いの場合、このネットワーク上のユーザーがこの Enterprise のメンバーではないアカウントを使って GitHub.com への認証を行うのをブロックできます。 これは、会社のデータが一般に公開されるリスクを減らすのに役立ちます。
この制限を適用するには、GitHub.com へのユーザーの Web と API の要求にヘッダーを挿入するよう、ネットワーク プロキシまたはファイアウォールを構成します。
この機能には、外部のファイアウォールまたはプロキシが必要です。 GitHub のサポート は、このような外部ツールのセットアップやトラブルシューティングを支援できません。 サポートの範囲について詳しくは、「GitHub サポートについて」をご覧ください。
アクセス制限の有効化
この機能は、規定では有効ではありません。 Enterprise 所有者は、自分の Enterprise に対してこの機能を有効にできます。
- 企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
- ページの上部にある [ Settings] をクリックします。
-
**[<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="gear" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg> 設定]** の **[認証セキュリティ]** をクリックします。 - 「Enterprise access restrictions」セクションで 「Enable enterprise access restrictions」 を選びます。
前提条件
- マネージド ユーザーを含む Enterprise をGitHub.com 上で使う必要があります。
- すべてのユーザーのユーザー名の後に Enterprise のショートコードが追加されている場合、マネージド ユーザーを含む Enterprise を使っていることがわかります。
- データ所在地付き GitHub Enterprise Cloud をお使いの場合、Enterprise は GHE.com の専用サブドメインに存在するため、Enterprise のリソースへのトラフィックを区別するためにヘッダーは必要ありません。
- 制限を適用するには、すべてのトラフィックがプロキシまたはファイアウォールを通過する必要があります。 プロキシまたはファイアウォールには次のことが求められます。
- トラフィックをインターセプトして編集できる (一般に "中断と検査" プロキシと呼ばれます)
- 任意のヘッダー挿入をサポートする
- Enterprise 所有者がこの機能を有効にしています。
ヘッダーの検索
制限を適用するには、サポートされている特定のエンドポイントに送信されるすべてのトラフィックにヘッダーを挿入します。 ヘッダーの形式は次のとおりです。
sec-GitHub-allowed-enterprise: ENTERPRISE-ID
企業所有者は、あなたの企業用のヘッダーで使用する正しいエンタープライズIDを特定できます。
- 企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
- ページの上部にある [ Settings] をクリックします。
-
**[<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="gear" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg> 設定]** の **[認証セキュリティ]** をクリックします。 - 「Enterprise access restrictions」セクションで、貴社の Enterprise のヘッダーを見つけてください。
ヘッダーの使用
最良の結果を得るには、次のサポートされているエンドポイントへのすべてのトラフィックにヘッダーを挿入するようにプロキシを構成します。
| エンドポイント | 目的 |
|---|---|
github.com/* | GitHub.com への Web トラフィック |
api.github.com/* | REST と GraphQL API の要求 |
*.githubcopilot.com | 特定の GitHub Copilot 機能に必要なトラフィック |
これにより、このネットワーク上のユーザーは、この Enterprise によって所有されていないユーザー アカウントを使って、これらのエンドポイントにアクセスできなくなります。 この機能に加えて、IP 許可リストを設定して、このネットワークの外部からのトラフィックをブロックできます。 「IP 許可リストを使用して Enterprise へのネットワーク トラフィックを制限する」を参照してください。
メモ
サポート チケットを作成するには、github.com/login へのアクセスが必要です。 サポートの資格を持つユーザーがヘルプを要求できるようにするには、これらのユーザーを制限から除外できます。
複数の企業のアクセス制限を有効にする
エンタープライズ所有者は、複数のエンタープライズ アカウントに制限を適用できます。
- 各エンタープライズ アカウントの機能を有効にします。 アクセス制限の有効化を参照してください。
- サポートされている特定のエンドポイントに送信されるすべてのトラフィックにヘッダーを挿入します。 ヘッダーの形式は次のとおりです。
sec-GitHub-allowed-enterprise: ENTERPRISE1-ID, ENTERPRISE2-ID, ENTERPRISE3-ID ... ENTERPRISE20-ID.
エンタープライズ所有者は、各企業のヘッダーで使用する正しいエンタープライズ ID を見つけることができます。 ヘッダーの検索を参照してください。
メモ
現在、ヘッダーに含める一意のエンタープライズ ID は最大 20 個までサポートされています。
特定のユーザーに対する制限の解除
個人アカウントを使ってオープンソース リソースに参加する必要がある特定のユーザーや、問題が発生した場合にサポート チケットを作成する必要があるユーザーの制限を解除できます。 これを処理するには、制限するユーザーにのみヘッダーを挿入するようにネットワークを構成する必要があります。
次のオプションがあります。
- ネットワークの分離: ヘッダーを挿入する "作業" ネットワークと、挿入しない "オープンソース" ネットワークを作成します。 "オープンソース" ネットワークへのアクセスは、それを必要とするユーザーに制限します。
- デバイスのグループ化: プロキシまたはファイアウォールで認証が行われる場合は、ヘッダーを必要としないユーザーのグループを収集して、挿入から選択的に除外できます。
サポートされていない機能
この制限は、Enterprise ヘッダーを追加するプロキシを介して送信される要求にのみ適用されるため、特定の GitHub 機能では、ユーザーによる自分の個人アカウントへのアクセスやその使用をブロックする制限はサポートされていません。 ネットワーク上のユーザーがこれらの機能にアクセスできないようにするには、以下で説明する変更を行う必要があります。
| 機能 | 関連するエンドポイント | メモ |
|---|---|---|
| GitHub Pages | github.io | これは通常、データを受け入れることができないユーザー生成コンテンツです。 アクセスを制限したくない場合があります。 |
| GitHub Codespaces | github.dev | アクセスを制限するには、エンドポイント全体をブロックします。 |
| SSH アクセス | GitHub.com のポート 22 | アクセスを制限するには、エンドポイント全体をブロックします。 |
| HTTPS 経由の SSH | ssh.github.com | アクセスを制限するには、エンドポイント全体をブロックします。 |
| GitHub ホスト型ランナー | 各種 | 特定のルーティングを適用するには、Azure プライベート ネットワークを使います。 「GitHubホストランナーのための企業内Azureプライベートネットワークについて」を参照してください。 |
| セルフホステッド・ランナー | 各種 | 特定のルーティングを適用するには、プロキシ サーバーを使用します。 「ランナーでのプロキシサーバの使用」を参照してください。 |
制限する必要がないエンドポイント
次のエンドポイントは、データを提供するだけであって、受け入れないため、制限をサポートまたは必要としません。
*.githubusercontent.com*.githubassets.com- GitHub.com 上の WebSocket トラフィック
制限のしくみ
Enterprise ヘッダーを含むトラフィックの場合、ユーザーが、Enterprise のメンバーではないユーザー アカウント (またはユーザー アカウントに関連付けられているトークン) を使って、Web、Git、または API 経由で GitHub.com にアクセスしようとすると、次のようになります。
- ユーザーには、
403状態コードを含むエラー メッセージが表示されます。 「ブロックされたユーザーに表示されるエラー」をご覧ください。 business.proxy_security_header_unsatisfiedイベントが Enterprise 監査ログに記録されます。 これらのログ イベントには、プライバシー上の理由からactorフィールドは含まれませんが、actor_ipフィールドは、有効になっている場合は含まれます (「Enterprise の監査ログに IP アドレスを表示する」を参照)。 これらのイベントをさらに調査するには、環境内のプロキシ ログを確認できます。
以下のセクションでは、ユーザーの Web アクティビティと API 要求に適用されることが予想される動作について詳しく説明します。
Web アクティビティ
GitHub.com ユーザー インターフェイスでのアクティビティの場合、ヘッダーはユーザーがサインインできるアカウントを制限します。
ネットワーク接続中、ユーザーは以下の操作を行います。
-
Enterprise の マネージド ユーザー アカウント にサインイン**できます**。 - この Enterprise の外部のアカウントにはサインインできません。
- アカウント スイッチャーを使ってこの Enterprise の外部のアカウントに切り替えることはできません。
ユーザーが既にこの Enterprise の外部のアカウントにサインインしている場合 (たとえば、このネットワークの外部にいる間にサインインした場合)、ユーザーがデバイスをこのネットワークに持ち込むと、ユーザーはエラーを受け取り、Enterprise 所有のアカウントでサインインするまで GitHub.com にアクセスすることはできません。
Git アクティビティ
プロキシが HTTP(S) 要求にヘッダーを挿入するように構成されている場合、このネットワーク上のユーザーは、この Enterprise のメンバーでない限り、HTTP(S) での GitHub.com への認証をブロックされます。 認証されていない匿名ユーザーのパブリック読み取り要求はブロックされません。
Enterprise ヘッダーを使って SSH 経由の Git アクティビティを制限することはできません。 代わりに、SSH 要求のポートを完全にブロックできます。 「サポートされていない機能」をご覧ください。
API 要求
GitHub CLI による要求を含め、api.github.com への REST および GraphQL API トラフィックの場合、ユーザーがこのネットワークに接続されている間、ヘッダーはアクセス トークンの使用を制限します。
| シナリオ | 結果 | 影響を受けるトークンの種類 |
|---|---|---|
| ユーザーは、この Enterprise が所有するアカウントに関連付けられている personal access token を使います。 | personal access token は、API 要求では想定どおりに動作します。 |
`ghp_` および `github_pat_` |
| ネットワークに接続中に、ユーザーが企業外のユーザーに関連する personal access token を使用しようとします。 | トークンを用いた要求はブロックされます。 |
ghp_ および github_pat_ |
| ユーザーは、このネットワークの外部にいる間に、この Enterprise の外部のアカウントを使って、自分のデバイスで動いている OAuth アプリにサインインします。 その後、ユーザーはそのデバイスをこのネットワーク内に持ち込みます。 | アプリからの OAuth トークンは動作しなくなります。 | gho_ |
| ユーザーは、このネットワークの外部にいる間に、この Enterprise の外部のアカウントを使って、自分のデバイスで動いている GitHub App にサインインします。 その後、ユーザーはそのデバイスをこのネットワーク内に持ち込みます。 | アプリからのトークンは動作しなくなります。 | ghu_ |
| アプリケーションは、このネットワークに接続されている間に、GitHub App 更新トークンを使って、この Enterprise の外部のユーザーのセッションを更新しようとします。 | 更新は失敗します。 | ghr_ |
| アプリケーションは、このネットワークに接続されている間に、この Enterprise の外部の organization のインストール トークン (ユーザー ID のないトークン、アプリの ID のみ) を取得しようとします。 | トークンは機能しません。 | ghs_ |
ブロックされたユーザーに表示されるエラー
制限が意図したとおりに動作すると、エラーがユーザーに表示されます。 エラーは、次の状況で発生します。
- Web アクティビティ: ユーザーが、既存の古いセッションへのサインインまたはその使用をブロックされたとき。
- API アクティビティ: ユーザーが、Enterprise の外部のユーザーに関連付けられているトークンを使おうとしたとき。
- インストール トークン: アプリケーションがインストール トークンを使って、Enterprise の外部の organization またはユーザー アカウントにアクセスしようとしたとき。 インストールの場合、書き込み要求のみがブロックされます。 Enterprise の外部のリソースに対する読み取り要求はブロックされません。 インストール トークンについて詳しくは、「GitHub App インストールとしての認証」をご覧ください。
| シナリオ | エラー コード | メッセージ |
|---|---|---|
| Web アクティビティ | 403 | ネットワーク管理者が、ENTERPRISE Enterpriseを除き、GitHub へのアクセスをブロックしています。 GitHub にアクセスするには、ご自分の _SHORTCODE アカウントでサインインしてください。 |
| API アクティビティ | 403 | ネットワーク管理者が、ENTERPRISE Enterpriseを除き、GitHub へのアクセスをブロックしています。 GitHub にアクセスするには、_SHORTCODE Enterprise のユーザー用のトークンを使用してください。 |
| インストール トークン | 403 | ネットワーク管理者が、ENTERPRISE Enterpriseを除き、GitHub へのアクセスをブロックしています。 "SHORTCODE" Enterprise に対するトークンのみが GitHub にアクセスできます。 |
`400` コードのエラーは、構成でのエラーを示します。
[トラブルシューティング](#troubleshooting)に関するページを参照します。
ローカル環境でのテストの例
Web デバッグ ツールを使って、ローカル環境でネットワーク構成をテストできます。 このセクションでは、Fiddler を使う例を示します。 Fiddler や他の外部デバッグ ツールは、GitHub のサポート の対象ではないことに注意してください。
次の例では、すべての要求で実行する FiddlerScript をいくつか追加します。
-
[Fiddler](https://www.telerik.com/fiddler)をインストールします。 -
HTTPS トラフィックの暗号を解除するように Fiddler を構成します。 Fiddler のドキュメントをご覧ください。
-
Fiddler で [FiddlerScript] タブに移動し、次のコードを
OnBeforeRequest関数に追加します。enterpriseId変数をご自分の Enterprise ID に設定します。JavaScript // Your enterprise id var enterpriseId: String = "YOUR-ID"; //Inject on the web UI if (oSession.HostnameIs("github.com")){ oSession.oRequest.headers.Add("sec-GitHub-allowed-enterprise",enterpriseId) oSession["ui-color"] = "green"; } // Inject on API calls if (oSession.HostnameIs("api.github.com")){ oSession.oRequest.headers.Add("sec-GitHub-allowed-enterprise",enterpriseId) oSession["ui-color"] = "blue"; } // Inject on Copilot API calls if (oSession.HostnameIs("githubcopilot.com")){ oSession.oRequest.headers.Add("sec-GitHub-allowed-enterprise",enterpriseId) oSession["ui-color"] = "yellow"; }// Your enterprise id var enterpriseId: String = "YOUR-ID"; //Inject on the web UI if (oSession.HostnameIs("github.com")){ oSession.oRequest.headers.Add("sec-GitHub-allowed-enterprise",enterpriseId) oSession["ui-color"] = "green"; } // Inject on API calls if (oSession.HostnameIs("api.github.com")){ oSession.oRequest.headers.Add("sec-GitHub-allowed-enterprise",enterpriseId) oSession["ui-color"] = "blue"; } // Inject on Copilot API calls if (oSession.HostnameIs("githubcopilot.com")){ oSession.oRequest.headers.Add("sec-GitHub-allowed-enterprise",enterpriseId) oSession["ui-color"] = "yellow"; } -
**[Save script]** をクリックします。
パケット キャプチャがアクティブになっている間、指定した各ドメインにヘッダーが挿入されるようになります。 挿入を有効または無効にするには、[File] > [Capture Traffic] をクリックして、パケット キャプチャを切り替えることができます。
この挿入のオンとオフを切り替えて、許可されていないアカウントでサインインしてからのネットワークへのアクセスや、ネットワーク上にいる間の許可されていないアカウントへのサインインの試みを、シミュレートできます。
トラブルシューティング
ヘッダーの挿入が意図したとおりに動作していない場合、影響を受けるエンドポイントを使おうとすると、400 コードのエラーが表示されます。 これらは、機能が意図したとおりに動作しているときに表示される 403 エラーとは異なります (「ブロックされたユーザーに表示されるエラー」を参照)。
一般に、400 エラーは次の状況で発生します。
- ヘッダーに無効なスラッグまたはエンタープライズ識別子が使用されています。
- ヘッダーで複数の Enterprise がリストされています。
- 要求に複数の
sec-GitHub-allowed-enterpriseヘッダーが含まれています。
| シナリオ | エラー コード | メッセージ |
|---|---|---|
| 無効なスラッグまたは ID | 400 |
`sec-GitHub-allowed-enterprise` ヘッダーで名前が指定されている Enterprise が見つかりません。 ファイアウォールまたはプロキシの設定で "Enterprise スラッグ" が正しく入力されていることを確認してください。 このエラーが解決しない場合は、ネットワーク管理者に問い合わせてください。 |
| 複数の企業 | 400 |
sec-GitHub-allowed-enterprise ヘッダーで使用できる Enterprise は 1 つだけです。 企業とヘッダーが1つだけ提供されていることを確認してください。 この問題が解決しない場合は、ネットワーク管理者に問い合わせてください |
| 複数のヘッダー | 400 | 複数の sec-GitHub-allowed-enterprise を受信しました。 このヘッダーは、1 つの Enterprise のみにアクセスが許可されるように、ファイアウォールまたはプロキシによって上書きされる必要があります。 この問題が解決しない場合は、ネットワーク管理者に問い合わせてください。 |