サインイン制限

サインイン制限を使って、Git over HTTP(S)と同様にウェブ・インターフェイスの認証制限をカスタマイズすることができます。

設定

サインイン制限の設定にアクセスします:

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 設定] > [全般]を選択します。
  4. サインイン制限セクションを展開します。

パスワード認証有効

Web インターフェースと Git over HTTP(S)のパスワード認証を制限することができます:

外部認証プロバイダが停止したイベントには、GitLab Railsコンソールを使って 標準のウェブサインインフォームを再度有効にしてください。この設定は、管理者アカウントの個人アクセストークンで認証している間、Application settings REST APIで変更することもできます。

管理者モード

GitLab 13.10で導入されました

管理者であれば、管理者権限なしでGitLabで作業したいかもしれません。管理者権限を持たない別のユーザーアカウントを作成するか、管理者モードを使うことができます。

Admin Mode を使えば、あなたのアカウントはデフォルトでは管理者アクセス権を持ちません。自分がメンバーであるグループやプロジェクトには引き続きアクセスできます。ただし、管理作業を行うには認証が必要です(一部の機能を除く)。

管理者モードが有効になると、インスタンス上のすべての管理者に適用されます。

管理者モードがインスタンスで有効になっている場合、管理者:

  • 管理者は、自分がメンバーであるグループおよびプロジェクトへのアクセスが許可されます。
  • 管理エリアにはアクセスできません。

インスタンスの管理者モードを有効にしてください。

管理者は、API、Railsコンソール、またはUIを使って管理者モードを有効にできます。

管理者モードを有効にするにはAPIを使用します

インスタンスのエンドポイントに以下のリクエストを行います:

curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab.example.com>/api/v4/application/settings?admin_mode=true"

<gitlab.example.com> をインスタンスの URL に置き換えてください。

詳細については、APIコールでアクセスできる設定のリストを参照してください。

Railsコンソールを使用して管理モードを有効にします。

Railsコンソールを開き、以下を実行します:

::Gitlab::CurrentSettings.update!(admin_mode: true)

UIを使用して管理モードを有効にします。

UI を使用して Admin Mode を有効にするには、以下の手順に従います:

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 設定] > [全般]を選択します。
  4. サインイン制限を展開します。
  5. 管理モード] セクションで、[管理タスクに追加認証を要求する] チェックボックスを選択します。

セッションの管理者モードをオンにします。

現在のセッションの管理者モードをオンにして、潜在的に危険なリソースにアクセスするには、次の手順に従います:

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Enter Admin Modeを選択します。
  3. URLに/admin (管理者権限が必要)を含むUIの任意の部分にアクセスしてみてください。

管理者モードのステータスが無効またはオフになっている場合、管理者は明示的にアクセスを許可されていない限りリソースにアクセスできません。たとえば、管理者が非公開グループやプロジェクトを開こうとすると、そのグループやプロジェクトのメンバーでない限り、404 エラーが発生します。

管理者は2FAを有効にすべきです。管理者モードでは、2FA、OmniAuth プロバイダ、および LDAP 認証がサポートされています。管理者モードのステータスは、現在のユーザーセッションに保存され、次のいずれかになるまでアクティビティが維持されます:

  • 明示的に無効にします。
  • 6時間後に自動的に無効になります。

セッションの管理者モードをオフにします

現在のセッションの管理者モードをオフにするには、次の手順に従います:

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Leave Admin Modeを選択します。

管理者モードの制限

管理者モードは6時間後にタイムアウトします。

以下のアクセス方法は、管理者モードでは保護されません

  • Gitクライアントアクセス(公開キーを使用したSSHまたはパーソナルアクセストークンを使用したHTTPS)。

言い換えると、Admin Mode によって制限されている管理者は、追加の認証ステップなしに Git クライアントを使うことができるということです。

GitLab REST- または GraphQL API を使うには、管理者はadmin_mode scope個人アクセストークンを作成する必要があります。

admin_mode スコープの個人アクセストークンを持つ管理者が管理者権限を失った場合、そのユーザーはadmin_mode スコープのトークンを持っていても管理者として API にアクセスすることはできません。

今後、このような制限にアドレスする可能性があります。詳しくは以下のエピックをご覧ください:GitLab 管理者のための管理者モード

また、GitLab Geo が有効な場合、セカンダリノード上ではプロジェクトやデザインのレプリケーションステータスを見ることができません。プロジェクト(イシュー 367926) とデザイン(イシュー 355660) が新しい Geo フレームワークに移行する際に修正が提案されます。

管理者モードのトラブルシューティング

必要に応じて、以下の2つの方法のいずれかを使用して、管理者として管理者モードを無効にすることができます:

  • APIを選択します:

     curl --request PUT --header "PRIVATE-TOKEN:$ADMIN_TOKEN" "<gitlab-url>/api/v4/application/settings?admin_mode=false"
    
  • Rails コンソール:

     ::Gitlab::CurrentSettings.update!(admin_mode: false)
    

2要素認証

この機能を有効にすると、すべてのユーザーが二要素認証を使用する必要があります。

2 要素認証が必須として設定された後、ユーザーは、設定可能な猶予期間 (時間) の間、2 要素認証の強制設定を省略できます。

Two-factor grace period

不明なサインインに対する電子メール通知

GitLab 13.2 で導入されました

有効にすると、GitLabは不明なIPアドレスやデバイスからのサインインをユーザーに通知します。詳しくは、不明なサインインに対するメール通知をご覧ください。

Email notification for unknown sign-ins

サインイン情報

ログインしていないすべてのユーザーは、値が空でない場合、設定されたホームページURLで表されるページにリダイレクトされます。

値が空でない場合、すべてのユーザーはサインアウト後に設定されたサインアウトページURLで表されるページにリダイレクトされます。

サインイン制限セクションで、サインインテキストフィールドまでスクロールしてください。ユーザーへのカスタムメッセージをMarkdown形式で追加できます。

例えば、以下の情報を注意テキストボックスに記載する場合:

# Custom sign-in text

To access this text box:

1. On the left sidebar, select **Search or go to**.
1. Select **Admin Area**.
1. Select **Settings > General**.
1. Expand the **Sign-in restrictions** section.

ユーザーが GitLab インスタンスのサインイン画面に移動すると、カスタムサインインテキストが表示されます。

トラブルシューティング

Railsコンソールで標準のWebサインインフォームを再有効化します。

標準のユーザ名とパスワードベースのサインインフォームがサインイン制限として無効になっている場合、再度有効にしてください。

設定された外部認証プロバイダ(SSOやLDAP設定を通じて)が停止に直面しており、GitLabへの直接サインインアクセスが必要な場合に、Railsコンソールを通じてこの方法を使用することができます。

Gitlab::CurrentSettings.update!(password_authentication_enabled_for_web: true)