4 Oracle RADIUS Agentのチューニングおよびトラブルシューティング

4.1 チューニング

RADIUSエージェントのパフォーマンスは、いくつかの要因によって異なります。ハードウェア、OSレベルのチューニング、ネットワーク・レイテンシ、LDAPのパフォーマンス・チューニング、Oracle Advanced Authentication (OAA)などの外部要因を適切にチューニングする必要があります。このページでは、RADIUSエージェント内の一般的な重要チューニング・パラメータのみをまとめています。構成パラメータの完全なリストは、「構成プロパティ」を参照してください

トピック

4.1.1 JVM

新しいコンテナを起動するときに、docker runコマンドからJVMオプションをRADIUSエージェントに渡すことができます。例: (ここで指定する値はサンプルの表示用です):

-e java_args='-Xms1g -Xmx4g -Duser.language=en'
すべてのjvmパラメータも同様に指定できます。

java.propertiesファイルを使用したJVMオプションの指定:

あるいは、jvmパラメータの長いリストを指定する場合は、構成/ディレクトリ内に存在する必要があるjava.propertiesファイルを使用して指定することもできます(たとえば、ボリュームが/home/opc/Radius:/u01/oracle/user_projectsとしてマップされている場合、java.propertiesファイルは/home/opc/Radius/config/の下に事前に存在している必要があります)。このファイルは、dockerコンテナの起動時に自動的に選択されます。

java.propertiesのコンテンツの例は次のようになります:

java_args= -server -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -Xms1g -Xmx4g -Duser.language=en

4.1.2 RADIUSエージェント構成

RADIUSエージェントでチューニングするには、次の構成プロパティを使用できます:

リスナー

  • numberOfWorkerThreads - 許可されるワーカー・スレッドの最大数。これは、ワーカー・スレッドの基礎となるThreadPoolExecutorの最大PoolSize値にマップされます。
  • coreThreadPoolSize - ワーカー・スレッドの基礎となるThreadPoolExecutorのCorePoolSize値。これは、基礎となるThreadPoolExecutorが保持するワーカー・スレッドの最小数です。
  • threadPoolKeepAliveTime - ワーカー・スレッドの基礎となるThreadPoolExecutorのスレッド・プールのキープ・アライブ時間(ミリ秒)。最小スレッド数(coreThreadPoolSize)を超えるスレッド・プールが構成されている場合、このthreadPoolKeepAliveTimeより長くアイドル状態になっている超過スレッドは終了します。これにより、スレッド・プールがアクティブに使用されていないときのリソースの消費量を減らすことができます。プールがあとでアクティブになると、新しいスレッドが構築されます。値0は、作成された超過スレッドがクリーン・アップされないことを意味するため、0を使用しないことをお薦めします。
  • threadPoolMaxQueueSize - ワーカー・スレッドのThreadPoolExecutorで使用される基礎となるキューに対して許可される最大作業キュー・サイズ値。0は、キューがバインドされていないことを意味します。

ノート:

numberOfWorkerThreadsおよびcoreThreadPoolSizeは、サーバー・ハードウェアで使用可能なCPUコアに基づいて構成する必要があります。

LDAP接続プール

  • initSize - このプロパティは、接続プールの初期化時に作成される接続の数を示します
  • maxSize - プールが保持する接続の最大数。minSizeがmaxSizeより大きい場合、minSizeはmaxSizeに設定されます。
  • minSize - プールが保持する接続の最小数。initSizeがminSizeより小さい場合、接続プールはminSize接続で初期化されます。
  • poolIncrementSize - すべての既存の接続が使用中であり、接続数がmaxSize未満であるときに確立される接続の数

4.2 トラブルシューティングのヒント

トピック:

4.2.1 RADIUSクライアントがOracle RADIUS Agentに接続できない

次のトラブルシューティングのヒントを使用できます:

  • RADIUSクライアント・ホストからOracle RADIUS Agentホストとポートにアクセスできることを確認します
  • Oracle RADIUS Agentのログをチェックし、RADIUSクライアントの登録の問題が原因でOracle RADIUS Agentがリクエストを削除しているかどうかを確認します。Oracle RADIUS Agentでクライアント登録を修正できます。
  • 正しいホスト名またはIPアドレスを使用して、RADIUSクライアント・アプリケーションがOracle RADIUS Agentに正しく登録されていることを確認します
  • RADIUSクライアント側で共有シークレットを検証し、それが正しいことを確認します
  • Oracle RADIUS Agentのログ・レベルをFINEまたはFINESTに変更し、Oracle RADIUS Agentのログを確認します

4.2.2 RADIUSリクエストでユーザーのプライマリ認証が失敗する

次のトラブルシューティングのヒントを使用できます:

  • Oracle RADIUS Agentのログをチェックして、基礎となるエラーを見つけます。
  • RADIUSクライアント側で共有シークレットを検証し、それが正しいことを確認します。クライアント側の共有シークレットが正しくないと、このエラーが発生する可能性があります。
  • Oracle RADIUS Agentのログ・レベルをFINEまたはFINESTに変更し、Oracle RADIUS Agentのログを確認します。

4.2.3 RADIUSリクエストでユーザーのMFA認証が失敗する

次のトラブルシューティングのヒントを使用できます:

  • Oracle RADIUS Agentのログをチェックして、基礎となるエラーを見つけます。
  • Oracle Advanced Authenticationが稼働していることを確認します。
  • Oracle Advanced Authentication構成ステップが正しく実行され、Oracle RADIUS Agent構成に存在します。
  • ファクタは、ユーザーのOracle Advanced Authenticationにシードされています
  • RADIUSクライアントがRADIUSチャレンジをサポートしていることを確認し、サポートしていない場合は同期認証モードを使用する必要があります。
  • Oracle Advanced認証からエラーが発生した場合は、Oracle Advanced認証ログをチェックして詳細を取得します。
  • Oracle RADIUS Agentのログ・レベルをFINEまたはFINESTに変更し、Oracle RADIUS Agentのログを確認します

4.2.4 RADIUSリクエストで時間がかかる

次のトラブルシューティングのヒントを使用できます:

  • Oracle RADIUS Agentアクセス・ログをチェックして、どのレイヤーに時間がかかっているかを調べます。
  • RADIUSクライアントとOracle RADIUS Agent間のネットワーク・レイテンシを排除します。
  • 対応するドキュメントを参照して、LDAPおよびOracle Advanced Authenticationが正しくチューニングされていることを確認します。
  • 必要に応じて、Oracle RADIUS Agentでチューニングを実行します

4.2.5 CLIユーティリティを使用した管理者RESTエンドポイントの有効化

管理者のブロックを解除して、構成およびRADIUSクライアントを管理するためにHTTP-REST管理にアクセスする場合は、CLIユーティリティのみを使用する必要があります。たとえば、管理者ユーザーまたは管理者グループが変更された場合は、CLIユーティリティを使用して管理者ユーザーまたは管理者グループのいずれかをリセットし、HTTP-RESTエンドポイントを再度起動する必要があります。同様に、LDAPの詳細が変更された場合は、管理者ユーザーがHTTP-RESTエンドポイントを起動できるように、CLIユーティリティを使用してLDAPの詳細をリセットできます。

ノート:

dockerコンテナからCLIユーティリティを使用する必要があります。

コマンドライン・ユーティリティは、次の9つの操作を提供します:

  1. 構成のリセット
  2. 管理者ユーザーのリセット
  3. 管理者グループのリセット
  4. 管理者ユーザーおよびグループの出力
  5. 構成の出力
  6. LDAP構成のリセット
  7. HTTPSシークレット・ストア・パスワードの出力
  8. ブートストラップ・シークレット・ストア・パスワードの出力
  9. ブートストラップ・シークレット・ストア・パスワードのリセット

ノート:

環境変数ORACLE_RADIUS_AGENT_COMMON_DIRは、構成ディレクトリの場所を指すように設定する必要があります。

構成のリセット

resetConfigオプションは、oracleRadiusAgent.jsonの構成をリセットします。resetConfigオプションは、oracleRadiusAgent.json内の既存の構成をすべて削除します。

java -cp /u01/oracle/idmradius/oracleradiusagent.jar -DORACLE_RADIUS_AGENT_COMMON_DIR=/u01/oracle/user_projects oracle.idm.radius.util.ORACli resetConfig

管理者ユーザーのリセット

resetAdminUsersオプションは、Oracle RADIUS Agent用に定義された管理者ユーザーをリセットします。デリミタ';'で区切られた管理者ユーザーを引数として渡す必要があります。

java -cp /u01/oracle/idmradius/oracleradiusagent.jar -DORACLE_RADIUS_AGENT_COMMON_DIR=/u01/oracle/user_projects oracle.idm.radius.util.ORACli resetAdminUsers "uid=adminUser,ou=People,dc=example,dc=com;uid=test,ou=People,dc=example,dc=com"

管理者グループのリセット

resetAdminGroupsオプションは、Oracle RADIUS Agent用に定義された管理者グループをリセットします。デリミタ';'で区切られた管理者グループを引数として指定する必要があります。

java -cp /u01/oracle/idmradius/oracleradiusagent.jar -DORACLE_RADIUS_AGENT_COMMON_DIR=/u01/oracle/user_projects oracle.idm.radius.util.ORACli resetAdminGroups "group1;group2"

管理者ユーザーおよびグループの出力

printAdminUsersGroupsオプションは、Oracle RADIUS Agent用に定義されたユーザーおよびグループのリストを出力します。

java -cp /u01/oracle/idmradius/oracleradiusagent.jar -DORACLE_RADIUS_AGENT_COMMON_DIR=/u01/oracle/user_projects oracle.idm.radius.util.ORACli printAdminUsersGroups

構成の出力

printConfigurationオプションは、oracleRadiusAgent.jsonに存在するOracle RADIUS Agentの構成の詳細を出力します。

java -cp /u01/oracle/idmradius/oracleradiusagent.jar -DORACLE_RADIUS_AGENT_COMMON_DIR=/u01/oracle/user_projects oracle.idm.radius.util.ORACli printConfiguration

ORACLE_RADIUS_AGENT_COMMON_DIR

LDAP構成のリセット

resetLdapConfigは、oracleRadiusAgent.jsonに存在するプライマリ・オーセンティケータの詳細をリセットします。新しいLDAP urldnpasswordtruststore (Base 64証明書)、truststore type (JKSまたはPKC12、ベース64証明書の場合はオプション)などのLDAP詳細を古いLDAP urlとともに引数として指定する必要があります。Dnおよびpasswordが指定されていない場合は、loginAttrおよびbaseDNとともに、既存のLDAP構成の詳細から選択されます。

java -cp /u01/oracle/idmradius/oracleradiusagent.jar -DORACLE_RADIUS_AGENT_COMMON_DIR=/u01/oracle/user_projects oracle.idm.radius.util.ORACli resetLdapConfig -oldLdapUrl "ldap://slc14xzv.us.oracle.com:1389" -newLdapUrl "ldaps://slc10nty.us.oracle.com:636" -dn "Administrator@ipf.com" -password "Welcome123" -truststore "-----BEGIN CERTIFICATE-----\nMIIF4DCCBMigAwIBAgITSwAAAALbKU4kkH5mlgAAAAAAAjANBgkqhkiG9w0BAQUF\nADBDMRMwEQYKCZImiZPyLGQBGRYDY29tMRMwEQYKCZImiZPyLGQBGRYDaXBmMRcw\nFQYDVQQDEw51cy1TTEMxME5UWS1DQTAeFw0yMDA3MjIxMjQxMzdaFw0yMTA3MjIx\nMjQxMzdaMCExHzAdBgNVBAMTFnNsYzEwbnR5LnVzLm9yYWNsZS5jb20wggEiMA0G\nCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9Ze3otkd+5CLAHEsFK0+rYvqrhfHP\njh46SyANv8qTYzht7k00ijZLOftfDw98wUDTUc+8GQ6O/UZPtDuEdPHpUGVz0G9/\nJZqiMFcFCBMc5gCrc8UYGeQzTVAfFlx6B/2rbTVDCND3huMZO0pIt+/QM1xJmtuA\ns/6lUMyJAuK23A+qIjcvhHvzGu196384WGMlr43N85j2Git+u6hEa5xv8aWxO1ne\nFkS1pb1s153EGqH4V849hJHI+v0nyOz7Ex7mjjl8tUdbfaIgXgWWVDJQCZ4airwk\n3PcK53bXSO1gxqhAUDKSLK2AYLtyu9fdhDLfZyqQhOHzKaHms+me111LAgMBAAGj\nggLtMIIC6TAvBgkrBgEEAYI3FAIEIh4gAEQAbwBtAGEAaQBuAEMAbwBuAHQAcgBv\nAGwAbABlAHIwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMA4GA1UdDwEB\n/wQEAwIFoDB4BgkqhkiG9w0BCQ8EazBpMA4GCCqGSIb3DQMCAgIAgDAOBggqhkiG\n9w0DBAICAIAwCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBLTALBglghkgBZQMEAQIw\nCwYJYIZIAWUDBAEFMAcGBSsOAwIHMAoGCCqGSIb3DQMHMB0GA1UdDgQWBBSuJVQB\nyLox1hotAXeKwWOg1ZOPgTAfBgNVHSMEGDAWgBSue+W/t+6CQmrn/6+ySlpXnNu7\npjCByQYDVR0fBIHBMIG+MIG7oIG4oIG1hoGybGRhcDovLy9DTj11cy1TTEMxME5U\nWS1DQSxDTj1zbGMxMG50eSxDTj1DRFAsQ049UHVibGljJTIwS2V5JTIwU2Vydmlj\nZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1pcGYsREM9Y29tP2Nl\ncnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0\ncmlidXRpb25Qb2ludDCBvAYIKwYBBQUHAQEEga8wgawwgakGCCsGAQUFBzAChoGc\nbGRhcDovLy9DTj11cy1TTEMxME5UWS1DQSxDTj1BSUEsQ049UHVibGljJTIwS2V5\nJTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1pcGYs\nREM9Y29tP2NBQ2VydGlmaWNhdGU/YmFzZT9vYmplY3RDbGFzcz1jZXJ0aWZpY2F0\naW9uQXV0aG9yaXR5MEIGA1UdEQQ7MDmgHwYJKwYBBAGCNxkBoBIEEE/w10Ud3xFB\nlF4D6wUf4FeCFnNsYzEwbnR5LnVzLm9yYWNsZS5jb20wDQYJKoZIhvcNAQEFBQAD\nggEBAFIjY72T7aoGYliW+ZTuGC/Js07cuwB4LYgjO+MKz82sTJyb9AYhfzmmr1fq\nsVz6hCWz6OmDHX9oDRxa21kq4e3aJmGqQ4NbW+z4hEtBWWWrW7uG4p6CDuB0aAF2\np5IIscXqQpqH0yJC5aABUHCQWJ2225joNPBeR8vLpa0Wx3raV6GbDhczlxAVWdcA\nGpSkKgajj0MPnhLGHtMvjSJbwcEqw1si6bg5yYUTOEsURaxk2YMRKu/5GXGCX0RR\n30b/3Cu9HJap3Gw4a+4bK4zN11qybZqbwLzyloS4I3IMvAA1BD3wMo3D3JDU1xfQ\nzt+1lcqqaXJ9iuD2/UwJYR7uFI4=\n-----END CERTIFICATE-----"

java -cp /u01/oracle/idmradius/oracleradiusagent.jar -DORACLE_RADIUS_AGENT_COMMON_DIR=/u01/oracle/user_projects oracle.idm.radius.util.ORACli resetLdapConfig -oldLdapUrl "ldap://slc14xzv.us.oracle.com:1389" -newLdapUrl "ldaps://slc10nty.us.oracle.com:636"  -truststore "/u01/oracle/cert/orakeystore.p12" -truststoreType "PKCS12" -truststorePassword welcome

HTTPSシークレット・ストア・パスワードの出力

printHTTPSSecretStorePasswordオプションは、HTTPS自己署名シークレット・ストア・パスワードを出力します。

java -cp /u01/oracle/idmradius/oracleradiusagent.jar -DORACLE_RADIUS_AGENT_COMMON_DIR=/u01/oracle/user_projects oracle.idm.radius.util.ORACli printHTTPSSecretStorePassword

ブートストラップ・シークレット・ストア・パスワードの出力

printBootstrapSecretStorePasswordオプションは、ブートストラップ・シークレット・ストア・パスワードを出力します。

java -cp /u01/oracle/idmradius/oracleradiusagent.jar -DORACLE_RADIUS_AGENT_COMMON_DIR=/u01/oracle/user_projects oracle.idm.radius.util.ORACli printBootstrapSecretStorePassword

ブートストラップ・シークレット・ストア・パスワードのリセット

resetBootstrapSecretStorePasswordオプションは、ブートストラップ・シークレット・ストア・パスワードをリセットします。新しいパスワードを引数として指定する必要があります。

java -cp /u01/oracle/idmradius/oracleradiusagent.jar -DORACLE_RADIUS_AGENT_COMMON_DIR=/u01/oracle/user_projects oracle.idm.radius.util.ORACli resetBootstrapSecretStorePassword <new_password>

4.3 既知の問題

トピック:

4.3.1 グローバル構成とアプリケーション構成の更新

共有構成を持つコンテナが複数あり、コンテナのいずれかが実行時に共有構成を追加、更新または削除した場合、他のコンテナに対する暗黙的なリフレッシュは行われません。最新の変更を取得するには、他のコンテナを再起動するか、他のコンテナの構成を再ロードします。再ロードを実行するには、https://<hostname.domain>/radius-config/v1/configurations/reloadへのGETリクエストを実行します。詳細は、Oracle RADIUS Agent REST APIガイドを参照してください。

4.3.2 LDAP構成の変更

LDAP構成を変更すると、LDAP接続プールが再起動されます。