正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

外部認可コントロール

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed、GitLab Dedicated

厳密に管理された環境では、プロジェクトの分類とユーザーアクセスに基づいてアクセスを許可する外部サービスによってアクセスポリシーを制御する必要がある場合があります。GitLabは、独自の定義されたサービスでプロジェクトの認可をチェックする方法を提供します。

外部サービスが設定されて有効になると、プロジェクトにアクセスしたときに、ユーザー情報とプロジェクトに割り当てられたラベルを使用して外部サービスにリクエストが送信されます。サービスが既知の応答で応答すると、結果は6時間キャッシュされます。

外部認可が有効な場合、GitLabはクロスプロジェクトデータをレンダリングするページと機能をさらにブロックします。これには以下が含まれます:

  • ダッシュボード下のほとんどのページ(アクティビティ、マイルストーン、スニペット、割り当てられたマージリクエスト、割り当てられたイシュー、To-Doリスト)。
  • 特定のグループの下(アクティビティ、コントリビュートアナリティクス、イシュー、イシューボード、ラベル、マイルストーン、マージリクエスト)。
  • グローバル検索とグループ検索は無効になっています。

これは、外部認可サービスへの多数のリクエストを一度に実行するのを防ぐためです。

アクセスが許可または拒否されると、external-policy-access-control.logというログファイルに記録されます。GitLabが保持するログの詳細については、Linuxパッケージドキュメントを参照してください。

自己署名証明書でTLS認証を使用する場合、CA証明書はOpenSSLインストールによって信頼される必要があります。Linuxパッケージを使用してインストールされたGitLabを使用する場合、LinuxパッケージドキュメントでカスタムCAをインストールする方法を学びます。または、openssl version -dを使用してカスタム証明書をインストールする場所を学びます。

設定

外部認可サービスは、管理者によって有効にできます:

  1. 右上隅で、管理者を選択します。
  2. 左側のサイドバーで、設定 > 一般を選択します。
  3. 外部認可を展開する。
  4. フィールドに入力します。
  5. 変更を保存を選択します。

デプロイトークンとデプロイキーを使用した外部認可を許可する

インスタンスを設定して、デプロイトークンまたはデプロイキーを使用したGit操作の外部認可を許可できます。

前提条件:

  • 外部認可には、サービスURLなしで分類ラベルを使用する必要があります。

デプロイトークンとキーを使用した認可を許可するには:

  1. 右上隅で、管理者を選択します。
  2. 左側のサイドバーで、設定 > 一般を選択します。
  3. 外部認可を展開する、そして:
    • サービスURLフィールドを空のままにします。
    • 外部認可でデプロイトークンとデプロイキーの使用を許可するを選択します。
  4. 変更を保存を選択します。

外部認可を有効にすると、デプロイトークンはコンテナまたはパッケージレジストリにアクセスできません。デプロイトークンを使用してこれらのレジストリにアクセスしている場合、この対策により、これらのトークンの使用はできなくなります。コンテナまたはパッケージレジストリでトークンを使用するには、外部認証を無効にします。

GitLabが外部認可サービスに接続する方法

GitLabがアクセスをリクエストすると、この本文を持つJSON POSTリクエストを外部サービスに送信します:

{
  "user_identifier": "jane@acme.org",
  "project_classification_label": "project-label",
  "user_ldap_dn": "CN=Jane Doe,CN=admin,DC=acme",
  "identities": [
    { "provider": "ldap", "extern_uid": "CN=Jane Doe,CN=admin,DC=acme" },
    { "provider": "bitbucket", "extern_uid": "2435223452345" }
  ]
}

user_ldap_dnはオプションであり、ユーザーがLDAPを介してサインインした場合にのみ送信されます。

identitiesには、ユーザーに関連付けられているすべてのIDの詳細が含まれています。ユーザーに関連付けられているIDがない場合、これは空の配列です。

外部認可サービスがステータスコード200で応答すると、ユーザーにアクセスが許可されます。外部サービスがステータスコード401または403で応答すると、ユーザーはアクセスを拒否されます。いずれの場合でも、リクエストは6時間キャッシュされます。

アクセスを拒否する場合、reasonをJSON本文でオプションで指定できます:

{
  "reason": "You are not allowed access to this project."
}

200、401、または403以外のステータスコードもユーザーへのアクセスを拒否しますが、応答はキャッシュされません。

サービスがタイムアウトした(500ミリ秒後)場合、「External Policy Server did not respond」というメッセージが表示されます。

分類ラベル

プロジェクトの設定 > 一般 > General project settingsページの「Classification label」ボックスで独自の分類ラベルを使用できます。プロジェクトに分類ラベルが指定されていない場合、グローバル設定で定義されたデフォルトのラベルが使用されます。

すべてのプロジェクトページで、右上にラベルが表示されます。

オーバーライドされた赤いラベルと開いたロックアイコンがプロジェクトの右上に表示されます。