Privileged Access Manager ( 以下、 PAM) の主な機能の一つであるパスワードの自動更新や検証などのパスワード管理があります。
本記事では tomcat のログ catalina.out でのトラブルシューティングの代表的な例を解説します。
Privileged Access Manager: 全バージョン
最初に、いくつかの基本的な内容について説明します。
PAM の主な機能の一つとして保管されたパスワードの管理があります。これには、パスワードの自動更新と検証が含まれます。
本機能を実行させるためにPAMとターゲット システム間でターゲット アカウントが同期していることが必要となります。
ターゲット アカウント設定でアカウントとパスワードを設定したら、パスワードタブで「認証情報マネージャ サーバとターゲット システムの両方を更新」に必ずチェックを入れてください。
この設定を行って保存すると、設定されたターゲット アカウントとパスワードでターゲット システムにログインを試行し、成功するとターゲット アカウントは検証済みとしてマークされます。
一旦、同期されるとバックグラウンドでのログインの成功、パスワードの手動更新やパスワード表示ポリシー、スケジュールジョブ、期限切れの自動更新などで同期が維持されます。
これらが失敗したときには tomcat のログで失敗の詳細内容を確認することができます。
トラブルシューティングのためには一旦、パスワードを同期させて、 tomcat のログレベルを変更します。
PAM コンソールから 構成 > 診断 > 診断ログ のログ レベルタブで tomcat のログレベルを「情報」より詳細に設定し、問題を再現します。
再現後、速やかに ダウンロードタブから 「最新ログエントリ」または「ダウンロード」でログを取得します。
最新ログエントリからはコピー & ペーストで自分の使い慣れたテキストエディタ (Notepad++) などに張り付けて内容を確認します。
( 最新のエラーを探すために最後尾から逆検索ができるエディタが便利です。)
問題を示すメッセージは使用するターゲット アプリケーションにより異なります。
例えば、UNIX ターゲット アプリケーションでは、あたかもユーザーがダム ターミナルまたは ssh セッションを介して手動でログインしているかのように、さまざまなプロンプトが表示されます。 よくある問題は、ターゲット システムによって発行されたプロンプトが PAM が要求しているものと一致しないことです。
これは、ターゲット アプリケーションの構成時に [スクリプト プロセッサ] ページで 各種 UNIX OS に依存する異なる仕様のコマンドが選択された場合、またはサーバが非標準のプロンプト ( 例えば英語以外の言語 ) で構成されている場合に発生する可能性があります。 この問題はタイムアウトによって発生することもあります。 これは、次のパターンを探すことで確認できます。
<long string of digits>-$?-<long string of digits>
この文字列に続いてターゲット システム上で実行された最後のコマンド(例えば、 passwd) のステータスチェックが行われます。
成功した場合は以下のようになります。
<long string of digits>-0--<long string of digits>.
失敗した場合は 0 以外の数字が返ってきます。
また、ステータス チェック文字列を指す文字列「does NOT MATCH」が表示される場合もあります。 これが表示された場合は、メッセージのタイムスタンプを確認することをお勧めします。 デフォルトでは、「スクリプト プロセッサ」タブの [スクリプト タイムアウト] が 5000 ミリ秒 (5 秒) に設定されていますがこれを増やす必要があるかもしれません。
Active Directoryのアカウントに関しては以下のようなメッセージが記録されているケースがあります。
Jun 21, 2018 5:36:30 PM com.cloakware.cspm.server.plugin.targetmanager.WindowsDomainServiceTargetManager updateCredentials
INFO: Updating credentials for account with username '<username>'
Jun 21, 2018 5:36:30 PM com.cloakware.cspm.server.plugin.targetmanager.WindowsDomainServiceTargetManager a
INFO: Updating password of Active Directory account with username '<username>'
Jun 21, 2018 5:36:30 PM com.cloakware.cspm.server.plugin.targetmanager.WindowsDomainServiceTargetManager loginToActiveDirectoryServer
メッセージはたくさん記録されていますが、多くは無視できるものです。
下記はパスワードの更新に失敗したときのメッセージの例になります。:
Jun 21, 2018 5:36:30 PM com.cloakware.cspm.server.plugin.targetmanager.WindowsDomainServiceTargetManager loginToActiveDirectoryServer
INFO: Failed authentication to Active Directory using distinguished name 'CN=xxx,CN=xxx,DC=xxx,DC=xxx' for account '<traget_user>' due to error '[LDAP: error code 49 - 80090308: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 52e, v2580 ]'
javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 52e, v2580 ]
この例の場合は LDAP のエラーコード 49 が記録されログインに失敗したことを示しています。
最後のコード "data 52e, v2580" はパスワードが無効なことを示しています。
他にも原因に依存したコードが記録されています。主なものの例として、525 はユーザが存在しない、 530 はユーザがログインを許可されていない、などがあります。
Active Directory のエラーコードに関しては追加情報の項目もご参照ください。
特に個々の詳細については記載されていませんが、tomcat のログのどのあたりに着目するかについてを述べてきました。
使用されているターゲット アプリケーションを実行させてログの中にどのようなメッセージが記録されるをお試しください。
また、トラブルシューティングの経験を積むことで、ターゲット アプリケーションに関わらず、問題の原因を特定することが容易になっていくと期待しています。
解析にヘルプが必要な場合はケースをオープンしてお問い合わせください。
その際には 問題発生時のtomcat のログ、ターゲット アカウントの名前、使用されているターゲット アプリケーションなどを御提供ください。
一般的な Active Directory LDAP バインドエラーに関しては別製品関連ですが、以下の KB もご参照ください。
代表的なエラーコードとエラーコードの調査方法について記載されています。
なお、本KBは以下の英文 KB を翻訳し補足しました。
Article ID: 103003: Troubleshooting Password Update and Verification problems in PAM