This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. はじめに
Kerberos による Checkmk の GUI へのシングルサインオンは、Checkmk では公式にはサポートされていませんが、お客様ご自身で簡単に設定することができます。 この説明では、その方法について説明します。
Checkmk の設定を Kerberos による SSO (シングルサインオン) に遡及的に変更するには、以下の前提条件を満たしている必要があります。
Apache のバージョンが 2.4 以降であること。
Checkmk サーバーに、
libapache-mod-auth-kerbモジュールがインストールされている必要があります(Red Hat Enterprise Linux および CentOS の場合はmod_auth_kerb、SUSE の場合はapache2-mod_auth_kerb)。Kerberos クライアントが Checkmk サーバーにインストールされ、設定されています。
Keytab(
/etc/krb5.keytabなど)がインストールされており、サイトユーザーが読み込める状態になっています。Checkmk サーバーはサービスプリンシパルとして設定されています。
クライアントのブラウザは、Kerberos を使用してアクセスするように設定されています。
オプション:
SSO を使用しないユーザーも通常のログインページからログインできるようにするには、Cookie 認証を有効にする必要があります。
2. Kerberos 統合
Checkmk を Kerberos による認証に切り替えるには、~/etc/apache/conf.d/auth.conf ファイルを削除して書き直します。
以下のファイル内容の先頭にあるエントリは例です。
したがって、Define という式で始まるすべての行を、お使いの環境に合わせて変更してください。
Define SITE MyCheckmkSite
Define REALM MyRealm.org
Define SERVICENAME myservice.mydomain.tld
Define KEYTAB /omd/sites/${SITE}/etc/apache/cmk_http.keytab
<IfModule !mod_auth_kerb.c>
LoadModule auth_kerb_module /usr/lib/apache2/modules/mod_auth_kerb.so
</IfModule>
<Location /${SITE}>
<If "! %{HTTP_COOKIE} =~ /^(.*;)?auth_${SITE}/ && \
! %{REQUEST_URI} = '/${SITE}/check_mk/register_agent.py' && \
! %{REQUEST_URI} = '/${SITE}/check_mk/deploy_agent.py' && \
! %{REQUEST_URI} = '/${SITE}/check_mk/run_cron.py' && \
! %{REQUEST_URI} = '/${SITE}/check_mk/restapi.py' && \
! %{REQUEST_URI} = '/${SITE}/check_mk/webapi.py' && \
! %{REQUEST_URI} = '/${SITE}/check_mk/automation.py' && \
! %{REQUEST_URI} -strmatch '/${SITE}/check_mk/api/*' && \
! %{REQUEST_URI} = '/${SITE}check_mk/ajax_graph_images.py' && \
! %{QUERY_STRING} =~ /(_secret=|auth_|register_agent)/ && \
! %{REQUEST_URI} =~ m#^/${SITE}/(omd/|check_mk/((images|themes)/.*\.(png|svg)|login\.py|.*\.(css|js)))# ">
Order allow,deny
Allow from all
Require valid-user
AuthType Kerberos
AuthName "Checkmk Kerberos Login"
KrbMethodNegotiate on
KrbMethodK5Passwd off
KrbLocalUserMapping on
# Environment specific: Path to the Keytab, Realm and ServicePrincipal
KrbAuthRealm ${REALM}
KrbServiceName HTTP/${SERVICENAME}@${REALM}
Krb5Keytab ${KEYTAB}
# When Kerberos auth fails, show the login page to the user
ErrorDocument 401 '<html> \
<head> \
<meta http-equiv="refresh" content="1; URL=/${SITE}/check_mk/login.py"> \
</head> \
<body> \
Kerberos authentication failed, redirecting to login page. \
<a href="/${SITE}/check_mk/login.py">Click here</a>. \
</body> \
</html>'
</If>
</Location>
# These files are accessible unauthenticated (login page and needed ressources)
<LocationMatch /${SITE}/(omd/|check_mk/(images/.*\.png|login\.py|.*\.(css|js)))>
Order allow,deny
Allow from all
Satisfy any
</LocationMatch>上記のサンプル設定を実行すると、Kerberos による認証のみが可能になります。
次に、basic auth をクッキーを使用する場合と使用しない場合(SSO を使用しないユーザー用、またはフォールバック用)のどちらで引き続きサポートするかを決定する必要があります。
この設定については、次の 2 つの章で説明します。
3. 基本認証を許可します
Kerberos による SSO に加えて、basic auth による認証を引き続き許可する場合は、上記の設定で 1 行を編集する必要があります。
これを行うには、次の行の値をon に変更してください。
KrbMethodK5Passwd on4. クッキー認証の確認
認証をより便利にするため、Checkmk はクッキーによるログインもサポートしています。 新しい、変更されていない Checkmk サイトでは、これが現在のデフォルト設定です。
最後に、この認証オプションがまだ有効になっているかどうか、およびその設定を維持すべきかどうかを確認してください。
次のコマンドで、サイトの現在の状態を確認できます。
OMD[mysite]:~$ omd config show MULTISITE_COOKIE_AUTHここで「on 」という値が表示され、クッキー認証を有効のままにしたい場合(たとえば、フォールバックとして)、この時点で必要な操作はこれだけです。
一方、MULTISITE_COOKIE_AUTH を無効にしたい場合は、次のコマンドで実行できます。
OMD[mysite]:~$ omd config set MULTISITE_COOKIE_AUTH off次に、サイトの Apache ディレクトリからcookie_auth.conf ファイルを削除します。
OMD[mysite]:~$ rm ~/etc/apache/conf.d/cookie_auth.conf5. 診断
Kerberos の設定が機能しているかどうかは、次のコマンドでチェックできます。
root@linux# kinit -p username
root@linux# klist