パッケージのアクセス制御と可視性を調べる
アクセス制御と可視性の 設定によって、GitHub Packages でパッケージを表示、ダウンロード、管理できるユーザーが決まります。 これらの設定を理解することは、 セキュリティ、 コンプライアンス、 コラボレーションにとって非常に重要です。
アクセス許可モデルについて
GitHub Packages では、パッケージ の種類に応じて 2 つのアクセス許可モデル がサポートされます。
リポジトリの権限継承
ほとんどのパッケージ レジストリ (npm、NuGet、Maven、RubyGems、Gradle) は、リポジトリからアクセス許可を継承します。
- 同じアクセス制御: パッケージのアクセス許可がリポジトリのアクセス許可と一致する
- 管理の簡素化: コードとパッケージの両方に対する 1 つのアクセス許可セット
- 自動更新: リポジトリへのアクセス許可の変更がパッケージに自動的に適用される
- チーム ベースのアクセス: リポジトリ チームとコラボレーターにパッケージ アクセス権がある
長所と短所:
- プロ: リポジトリのアクセスはシンプルで一貫しています
- プロ: 追加のアクセス許可の構成は必要ありません
- 欠点: コード アクセスをパッケージ アクセスから分離できない
- 欠点: すべてのリポジトリコラボレーターがパッケージを発行できる
詳細なアクセス許可 (コンテナー レジストリのみ)
コンテナー レジストリ パッケージは、独立したアクセス制御をサポートします。
- リポジトリとは別: パッケージのアクセス許可はリポジトリとは異なる場合があります
- ユーザー スコープ: 個々のユーザーにアクセス権を付与する
- 組織範囲: 組織内のチームにアクセスを許可する
- ロールベース: 読み取り、書き込み、または管理者ロールを個別に割り当てる
長所と短所:
- プロ: パッケージ アクセスに対するきめ細かい制御
- プロ: コードを共有せずにパッケージを共有できる
- 欠点: より複雑な許可管理
- 欠点: コンテナー イメージでのみ使用できます
Important
コンテナー レジストリ パッケージのリポジトリ とは別に、パッケージのアクセス制御と可視性を変更 できます。 他のパッケージの種類の場合、可視性とアクセスはリポジトリに関連付けられます。
アクセス許可の詳細については、「 GitHub パッケージのアクセス許可について」を参照してください。
パッケージの表示オプション
可視性によって 、パッケージを検出してアクセスできるユーザーが決まります。
パブリック パッケージ
- 誰でも発見することができます: すべてのユーザーの検索結果にパッケージが表示される
- 誰でもダウンロードできます: インストールに認証は必要ありません (ただし、アップロードには認証が必要です)
- オープン ソースフレンドリ: コミュニティ ライブラリとツールに最適
- 空きストレージ: パブリック パッケージのストレージまたは帯域幅の制限なし
- 使用状況の追跡: すべてのユーザーに表示される統計情報をダウンロードする
パブリック パッケージのユース ケース:
- オープン ソースのライブラリとフレームワーク
- コミュニティ ツールとユーティリティ
- パブリック API クライアントと SDK
- 教育の例とテンプレート
プライベート パッケージ
- 組織/ユーザーのみ: アクセス許可を持つ認証済みユーザーのみが検出できます
- アクセス制御: ダウンロードするには、読み取りアクセス許可が必要です
- 既定でセキュリティ保護: 内部ライブラリと独自のコードに最適
- 使用制限: GitHub プランのストレージと帯域幅の制限に従う
- 使用状況の追跡: 承認されたユーザーにのみ表示される統計
プライベート パッケージのユース ケース:
- 社内の企業ライブラリ
- 独自の依存関係
- プレリリース バージョン
- クライアント固有のカスタマイズ
内部パッケージ (GitHub Enterprise のみ)
- 組織全体のアクセス: すべての組織メンバーが検出してダウンロードできる
- 簡略化された共有: 個々のアクセス許可付与は必要ありません
- エンタープライズ機能: GitHub Enterprise Cloud または Server でのみ使用できます
- バランスの取れたセキュリティ: プライベートよりもアクセスしやすく、パブリックよりも安全
内部パッケージのユース ケース:
- 共有組織ライブラリ
- チーム間の依存関係
- 内部標準とフレームワーク
- 一般的なユーティリティとヘルパー
コンテナー イメージのアクセス許可
コンテナー イメージに対する 管理者アクセス許可 がある場合は、 詳細なアクセス制御を構成できます。
可視性の設定
- パブリック可視性: 認証なしで誰でもコンテナー イメージをプルできます
- プライベート可視性: 明示的なアクセス許可を持つユーザーのみがイメージをプルできます
アクセス許可の付与
個人用アカウント コンテナー:
- GitHub ユーザーにアクセス ロールを付与する
- 各ユーザー の個々のアクセス許可 を指定する
- リポジトリから 独立して アクセスを管理する
組織のコンテナ:
- 組織内 の任意のユーザー にアクセス権を付与する
- 組織内 の任意のチーム へのアクセス権を付与する
- 個人とチームのアクセス許可を組み合わせる
- 組織のメンバーシップからアクセス許可を継承する
アクセス許可のロール
| 許可 | アクセスの説明 |
|---|---|
| 読み取り | パッケージをダウンロードできます。 パッケージのメタデータを読み取ることができます。 |
| 書く | このパッケージをアップロードおよびダウンロードできます。 パッケージ メタデータの読み取りと書き込みを行うことができます。 |
| 管理者 | このパッケージをアップロード、ダウンロード、削除、管理できます。 パッケージ メタデータの読み取りと書き込みを行うことができます。 パッケージのアクセス許可を付与できます。 |
アクセス許可の継承:
- 管理者ロール: すべての書き込みアクセス許可と読み取りアクセス許可が含まれます
- 書き込みロール: すべての読み取りアクセス許可が含まれます
- 閲覧ロール: パッケージを消費するための最小限のアクセス許可
アクセスの構成
コンテナー イメージの アクセス制御と可視性 を構成するには:
- パッケージ ページに移動する
- [パッケージ設定] をクリックする
- [ 危険ゾーン] で、 可視性 を変更します (パブリック/プライベート)
- [アクセスの管理] で、ユーザーまたはチームを追加します
- ユーザーまたはチームごとに ロール を選択する (読み取り、書き込み、管理者)
- [ 追加] をクリックしてアクセス許可を付与する
詳細については、「 パッケージのアクセス制御と可視性の構成」を参照してください。
アクセス制御のベスト プラクティス
セキュリティに関する推奨事項:
- 最小特権の原則: 最低限必要なアクセス許可を付与する
- 定期的な監査: 不要なアクセスを定期的に確認して削除する
- チーム ベースのアクセス: 可能な場合は個々のユーザーの代わりにチームを使用する
- パブリックに慎重に: パブリック パッケージが機密情報を公開しないようにする
- ドキュメント アクセス: アクセス権を持つユーザーとその理由の記録を保持する
- レビューを自動化する: ツールを使用してアクセス許可の変更を検出する
組織の戦略:
- 可視性を標準化する: さまざまなパッケージの種類の既定値を確立する
- アクセス要求プロセス: ユーザーがパッケージ へのアクセスを要求する方法を定義する
- 所有権の明確化: パッケージ管理に対する明確な所有権を割り当てる
- SSO との統合: 一元化されたアクセス管理に SAML/SCIM を使用する
- コンプライアンスの調整: アクセス制御が規制要件を満たしていることを確認する