Note
現在、リポジトリ ポリシーは パブリック プレビュー 段階であり、変更される可能性があります。
リポジトリのライフサイクルにおける主要なイベント (リポジトリを作成または削除できるユーザーなど) を管理するために、リポジトリ ポリシーを作成できます。 リポジトリ ポリシーは、影響を受けるユーザーと対象となるリポジトリを柔軟に制御できる制限のコレクションです。
リポジトリ ポリシーでは、以下を制限できます。
- 新しいリポジトリと可視性の変更に対して許可する可視性。
- リポジトリを作成できるユーザー。
- リポジトリを削除できるユーザー。
- リポジトリを organization の外部に委譲できるユーザー。
- ユーザーがリポジトリに名前を付ける方法。
Tip
organization 所有者である場合は、特定の organization のリポジトリ ポリシーを作成できます。 「ユーザーが organization 内のリポジトリを使用する方法の管理」を参照してください。
例
リポジトリ ポリシーを使って、次のような操作を行うことができます。
- すべての新しいリポジトリが、
kebab-case
などの特定の名前付け規則を使うようにする。 - Organization 管理者以外がリポジトリを削除できないようにする。
- Enterprise の "オープンソース" organization 内でのみパブリック リポジトリを作成できるようにする。
- メタデータが失われる可能性を避けるために、パブリック リポジトリがプライベート リポジトリに変更されないようにする。
リポジトリをターゲットにするにはどうすればよいですか?
まず、Enterprise 内の organization をターゲットにします。 すべての organization を選ぶ、一覧から選ぶ、または fnmatch
構文を使って動的規則を作成することができます。 Enterprise Managed Users を使う場合は、Enterprise 内のユーザーが所有するすべてのリポジトリをターゲットにすることも選択できます。
次に、選んだ organization 内のリポジトリをターゲットにします。 リポジトリ ポリシーはカスタム リポジトリ プロパティと併用することをお勧めします。 カスタム プロパティをリポジトリに追加すると、ポリシーでそれらのリポジトリを柔軟にターゲットにすることができます。
たとえば、運用データやその他の機密情報を含むリポジトリにマークするプロパティを追加し、誰もそれらのリポジトリを公開できないようにすることができます。
カスタム プロパティを作成および設定するには、「組織内リポジトリのカスタム プロパティの管理」を参照してください。
他のポリシーとの相互作用
使用できる制限の一部は、organization または Enterprise の設定の [Member privileges] ページで設定されるポリシーと重複しています。
リポジトリ ポリシーを作成しても、既存の "メンバー特権" ポリシーはオーバーライドされません。 そうではなく、ポリシーは追加的なものであるため、最も制限が厳しいバージョンのポリシーが適用されます。 これは、メンバー特権ポリシーと、Enterprise または organization レベルで作成された他のリポジトリ ポリシーの両方に適用されます。
メンバー特権ポリシーと比較すると、リポジトリ ポリシーにはいくつかの利点があります。
- Organization とリポジトリをより柔軟にターゲットにすることができます。
- これにより、ポリシーをバイパスするオプションを特定のアクターに与えることができます。
- これらは organization 所有者に表示されるため、許可される内容を把握しやすくなります。
- そのため、Enterprise Managed Users が所有するリポジトリをターゲットにすることができます。
リポジトリ ポリシーの作成
- GitHub の右上隅にあるプロフィール写真をクリックします。
- ご自分の環境に応じて、[Your enterprise] または [Your enterprises] をクリックし、表示するエンタープライズをクリックします。
- ページの左側にある Enterprise アカウントのサイドバーで、 [ポリシー] をクリックします。
- [Policies] で、[Repository] をクリックします。
- [新しいポリシー] をクリックします。
- 新しいポリシーを構成し、[Create] をクリックします。 ヘルプが必要な場合は、次のサブセクションを参照してください。
ポリシー名
ポリシーの目的を伝えるために、わかりやすいものを使ってください。 Organization 所有者はポリシーを表示できるため、適切な名前を付けてわかりやすくすることができます。 (例: Prevent public repos on production
)。
適用状態
作成時にポリシーを適用したくない場合は、[Disabled] に設定します。 それ以外の場合は、[Active] に設定します。
許可リスト
このポリシーの制限をバイパスできるロールとチームを選びます。
目標値
ポリシーを適用する organization とリポジトリを選びます。
ターゲット organization
すべての organization を選ぶか、既存の organization を選ぶか、名前で動的リストを設定します。 Enterprise Managed Users を使う場合は、Enterprise 内のユーザーが所有するすべてのリポジトリをターゲットにすることも選択できます。
動的リストを設定する場合は、fnmatch
構文を使って 1 つ以上の名前付けパターンを追加します。 たとえば、文字列 *open-source
は、名前が open-source
で終わる organization と一致します。 構文の詳細については、「リポジトリのルールセットの作成」を参照してください。
ターゲット リポジトリ
選んだ organization でどのリポジトリ (現在または将来) をターゲットにするかを選びます。 すべてのリポジトリを選ぶか、カスタム プロパティで動的リストを設定することができます。
ポリシー
含める制限を選びます。 ポリシーがアクティブな場合、制限は対象のすべてのリポジトリに適用されますが、許可リストに含まれるユーザーまたはチームは制限をバイパスできます。
[Restrict names] ポリシーを選んだ場合は、正規表現構文を使って、リポジトリ名が一致する必要がある、または一致してはならないパターンを設定する必要があります。 たとえば、kebab-case
の名前付けを適用するパターンは ^([a-z][a-z0-9]*)(-[a-z0-9]+)*$
のようになります。
- パターンは RE2 構文をサポートしています。 Google の構文ガイドを参照してください。
- 式を検証するには、[Test pattern] をクリックし、パターンとテスト値を入力します。
参考資料
リポジトリ管理について追加のポリシーを設定するには、「Enterprise でリポジトリ管理ポリシーを適用する」を参照してください。