2.4.1 コンプライアンス・フレームワーク(Oracle OrachkおよびOracle Exachk)の前提条件

Oracle OrachkおよびOracle Exachkを実行するための前提条件のリストを確認します。

2.4.1.1 SSH接続およびアクセス

クラスタ化されたデータベース環境では、Oracle OrachkおよびOracle Exachkによって、単一のノードでコンプライアンス・チェックが実行されて、他のすべてのクラスタ・ノードでリモートで実行されます。

ノート:

これは、非rootとしてインストールされている場合、またはストレージ・サーバーを使用している場合にのみ必要です。かわりに、Oracle Trace File Analyzerのセキュア・ソケットが使用されます。

この変更は、rootがリモート・データベース・ノードでチェックを実行するために、パスワードなしのSSHユーザー等価を構成する必要がないことを意味します。クラスタ・インストールでは、ユーザーの等価性は引き続き必要ですが、複数のスタンドアロン・インストールを実行し、tfactl syncnodesを実行することでスキップできます。Oracle OrachkおよびOracle Exachkでは、引き続きSSHを使用してストレージ・サーバーに接続します。

クラスタ・ノードでのコンプライアンス・チェックのリモート実行には、パスワードを指定せずに、ターゲットとの間でファイルをリモートでコピーし、コマンドを実行することが含まれます。

セキュリティ制限によってブロックされる場合、一部のコマンドの実行に失敗します。これらのコマンドを正常に実行するには、代替計画を作成します。

データベース・サーバーから他のすべてのクラスタ・ノードでコンプライアンス・チェックをリモートで実行するには、次のようにします。

  • データベース・サーバーでOracle OrachkおよびOracle Exachkを実行する各クラスタ・ノードで、同じユーザーに対してパスワードなしのSSH等価を構成します

ノート:

パスワードなしのSSHが環境で構成されていない場合、Oracle OrachkまたはOracle Exachkによって、環境で永続的または一時的なパスワードなしのSSHを構成する必要があるかどうかのプロンプトが表示されます。

または

  • リモート・ノードの秘密キー・ファイルを提供するか、Oracle OrachkまたはOracle Exachkがリモート・ノードの秘密キー・ファイルを自動生成することを許可します。

Oracle OrachkOracle Exachkが秘密キーを生成するために使用するプロセスは次のとおりです:

  1. 目的のユーザーとしてリモート・ノードにSSHで接続し、パスワードを入力してシステムをSSHのknown_hostsファイルに追加します。
    次のように表示されます。
    The authenticity of host '<hostname> (<ip>)' can't be established.
    RSA key fingerprint is fb:78:d1:6a:5c:62:ea:c4:85:20:76:f6:a9:01:1e:b4.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'hostname>,<ip>' (RSA) to the list of known hosts.
  2. リモート・ノードにログインし、厳密に次のようにして、リモート・ノードで秘密キーと公開キーのペアを生成します。

    hostnameおよびusernameを実際のホスト名および目的のユーザー名に置き換えます。

    ssh-keygen -f $HOME/.ssh/id_dsa.host.user -N ''

    たとえば、リモート・ノードがcehaovmsp1080で、目的の実行ユーザーがrootの場合、そのホストにログインして次を実行します。

    ssh-keygen -f $HOME/.ssh/id_dsa.cehaovmsp1080.root -N ''

    コマンドを実行すると、$HOME/.sshディレクトリに2つのファイルが作成されます。

    ls -ltr
    total 8
    -rw-------. 1 root root 1675 May 9 12:27 id_dsa.cehaovmsp1080.root
    -rw-r--r--. 1 root root 400 May 9 12:27 id_dsa.cehaovmsp1080.root.pub
  3. リモート・ノードの.ssh/authorized_keysファイルに公開キーの内容をコピーし、リモート・ノードから公開キーを削除します。
    cat $HOME/.ssh/id_dsa.hostname.username.pub >> $HOME/.ssh/authorized_keys
    rm -rf $HOME/.ssh/id_hostname.username.pub

    たとえば:

    cat $HOME/.ssh/id_dsa.cehaovmsp1080.root.pub >> $HOME/.ssh/authorized_keys
    # rm -rf $HOME/.ssh/id_dsa.cehaovmsp1080.root.pub
  4. リモート・ノードの秘密キー$HOME/.ssh/id_dsa.hostname.usernameを、Oracle Orachkを実行するローカル・ノードの$HOME/.sshディレクトリにコピーします。
  5. SSHを使用してテストします。
    ssh -i $HOME/.ssh/id_dsa.hostname.username hostname date
  6. テストが成功した場合は、Oracle Orachkデーモンを実行します。
    export RAT_SSH_IDENTITY=$HOME/.ssh
    orachk -d start
独自の秘密キー・ファイルを生成する場合は、リモート・マシンで次のコマンドを使用します。
ssh-keygen -f $HOME/.ssh/id_dsa.host.user -N ''
たとえば:
ssh-keygen -f $HOME/.ssh/id_dsa.myhost67.root -N ''
このコマンドを実行すると、$HOME/.ssh/ディレクトリに次のキー・ペアが生成されます。
id_dsa.myhost67.root (private key / Identity file)
id_dsa.myhost67.root.pub (Public key)
パスワードなしのSSHを構成できない場合や秘密キー・ファイルを使用できない場合は、次のようにします
  1. -localonlyコマンドライン・オプションを使用して、クラスタ内の各データベース・サーバーでコンプライアンス・チェックを実行します。
  2. -mergeコマンドライン・オプションを使用して結果をマージします。

2.4.1.1.1 SSHアクセスを拒否するように構成されたストレージ・サーバー

次の説明は、Oracle Exadataストレージ・サーバーを使用するOracle Engineered Systemに適用されます。

オプションで、SSHアクセスを禁止できます(ロックまたはロック状態とも呼ばれます)。ロック状態のストレージ・サーバーに関連するすべてのOracle Exachk関数は、Oracle Exachkが起動されるデータベース・サーバーから、標準のexacliコマンドで実行されます。Oracle Exachkによってロック状態と認識されたストレージ・サーバーのロックを一時的に解除するには、ストレージ・サーバーをロック/ロック解除するようにexacliを構成したユーザー名および資格証明を指定します。

『Exadata System Softwareユーザーズ・ガイド』の「Oracle Exadata System Softwareのセキュリティの構成」を参照してください。

Oracle Exachkは、ストレージ・サーバー属性accessLevelPermに対して動作しません。Oracle Exachkの実行前にその属性をremoteLoginDisabledに設定しておくと、Oracle Exachkの実行中および実行後に変更されません。

Oracle Exachkは、ストレージ・サーバー属性accessLevelTempに対してのみ動作します。たとえば、remoteLoginDisabledでロックされたストレージ・サーバーから開始します。
ssh randomceladm01
ssh: connect to host randomceladm01 port 22: Connection refused

ssh randomceladm02
ssh: connect to host randomceladm02 port 22: Connection refused

ssh randomceladm03
ssh: connect to host randomceladm03 port 22: Connection refused

exachk -unlockcells all
Enter exacli user name: celluser
Is EXACLI password same on all Storage Servers?[y/n][y] y
Enter password for EXACLI user celluser to unlock Storage Server 192.168.178.225:
.  .  .  .  .  .  .  .  .  .  . 
Storage cell 192.168.178.225 successfully unlocked
Storage cell 192.168.178.226 successfully unlocked
Storage cell 192.168.178.227 successfully unlocked

ssh randomceladm03
Last login: Tue Mar  6 12:32:36 2018 from randomadm01.us.oracle.com

ssh randomceladm02
Last login: Tue Mar  6 12:32:09 2018 from randomadm01.us.oracle.com

ssh randomceladm01
Last login: Tue Mar  6 12:18:57 2018 from randomadm01.us.oracle.com

exacli -c celluser@randomceladm01
Password: ************
exacli celluser@randomceladm01> list cell attributes accessLevelPerm,accessLevelTemp
remoteLoginDisabled ((accesslevel=remoteLoginEnabled,starttime=2018-03-06T13:49:15-08:00,
endtime=2018-03-06T14:39:15-08:00,duration=50m,reason=Running Exachk))

As can be seen from the example, Oracle EXAchk implements a temporary window 
with a default expiration time of 50 minutes, to cover the period that Oracle EXAchk 
may be executing on the storage server.  
In normal operation, this temporary window is closed with "-lockcells" during the exachk cleanup routine.  
If exachk is blocked from the cleanup routine, say because of "kill -9", 
the temporary window will expire in it's own good time.

The following example shows the typical Oracle EXAchk execution sequence starting with the storage servers locked.  
You can see by the commands at the end that "remoteLoginDisabled" is still set and there is no temporary window:

exachk -c X4-2 -profile storage
...
...
Copying plug-ins
. .
Enter exacli user name: celluser
Is EXACLI password same on all Storage Servers?[y/n][y]
Enter password for EXACLI user celluser to unlock Storage Server 192.168.178.225:
.  .  .  .  .  .  .  .  .  .  .  .  . 
Node randomcel01 is configured for ssh user equivalency for root user
Node randomcel02 is configured for ssh user equivalency for root user
Node randomcel03 is configured for ssh user equivalency for root user
.  .  .  .  .  .  .  .  .  .  .  .  .
...
...
Starting to run root privileged commands in background on STORAGE SERVER randomcel01 (192.168.178.225)
Starting to run root privileged commands in background on STORAGE SERVER randomcel02 (192.168.178.226)
Starting to run root privileged commands in background on STORAGE SERVER randomcel03 (192.168.178.227)
Collections from STORAGE SERVER:
------------------------------------------------------------
Collecting - Exadata Critical Issue EX10
...
...
Detailed report (html) -  /root/vern_wagman/exachk_122014/production/lock_doc/exachk_randomclient01_030618_140319/exachk_randomclient01_030618_140319.html
UPLOAD [if required] - /root/vern_wagman/exachk_122014/production/lock_doc/exachk_randomclient01_030618_140319.zip

ssh randomceladm01
ssh: connect to host randomceladm01 port 22: Connection refused

exacli -c celluser@randomceladm01
Password: ************
exacli celluser@randomceladm01> list cell attributes accessLevelPerm,accessLevelTemp
         remoteLoginDisabled

2.4.1.2 rootパスワードの処理

rootパスワードの処理は、Expectユーティリティがインストールされているかどうかによって異なります。

Expectによって、Telnet、FTP、passwd、fsck、rlogin、tipなどの対話型アプリケーションが自動化されます。

rootパスワードを処理するには:

  1. Expectユーティリティをインストールした場合は、コンプライアンス・チェックを初めて実行するときにrootパスワードを指定します。

    Expectユーティリティによって、パスワードが保存されて、後続のセッションで保存されたパスワードが使用されます。

    Expectユーティリティによって、データベースやスイッチなどのすべてのリモート・コンポーネントで、rootパスワードが同じであるかどうかを確認するよう求められます。

  2. すべてのコンポーネントに同じrootパスワードを構成している場合は、そのパスワードを1回のみ指定します。

    一部のコンポーネントでrootパスワードが異なる場合は、Expectユーティリティによって、コンプライアンス・チェックを実行するたびにrootパスワードを検証するよう求められます。

    パスワードを誤って入力したり、入力したときから使用するまでの間にパスワードが変更されると、Oracle Autonomous Health Frameworkによって次の処理が行われます。

    • 通知

    • 関連するチェックのスキップ

  3. 問題を解決したら、コンプライアンス・チェックを実行します。

    Oracle Autonomous Health Frameworkでいずれかのコンプライアンス・チェックがスキップされると、ツールによって、スキップされたチェックの詳細がレポート出力に記録されます。

2.4.1.3 Oracle OrachkおよびOracle Exachkを実行するユーザーの決定

コンプライアンス・チェックをrootとして実行します。また、Oracle Databaseホーム所有者またはOracle Grid Infrastructureホーム所有者としてコンプライアンス・チェックを実行します。

ほとんどのコンプライアンス・チェックでは、rootアクセスは必要ありません。ただし、コンプライアンス・チェックのサブセットを実行するにはroot権限が必要です。

root権限チェックを実行するには、Oracle Orachkではスクリプトroot_orachk.shを使用し、Oracle Exachkではスクリプトroot_exachk.shを使用します。

デフォルトでは、root_orachk.shスクリプトとroot_exachk.shスクリプトは、Oracle OrachkおよびOracle Exachkで使用される$HOMEディレクトリに作成されます。環境変数RAT_ROOT_SH_DIRを設定して、ディレクトリを変更します。

次のように、sudoリモート・アクセスの場所を指定します:
export RAT_ROOT_SH_DIR=/mylocation
次のように、/etc/sudoers内にエントリを追加します。
oracle ALL=(root) NOPASSWD:/mylocation/root_orachk.sh

セキュリティ上の理由から、rootスクリプトは、標準の一時ディレクトリの外部のカスタム・ディレクトリ内に作成します。

Oracle OrachkおよびOracle Exachkを実行するユーザーを決定するには:

  1. RAT_ROOT_SH_DIR環境変数を使用して、カスタム・ディレクトリを指定します。
    export RAT_ROOT_SH_DIR=/orahome/oradb/
  2. sudoリモート・アクセスの場所を指定します。
    export RAT_ROOT_SH_DIR=/mylocation
  3. /etc/sudoersファイルにエントリを追加します。
    oracle ALL=(root) NOPASSWD:/mylocation/root_orachk.sh

    ノート:

    /etc/sudoersファイルには、エントリのフルパスを指定します。環境変数は使用しないでください。

  4. (推奨) Oracle OrachkおよびOracle Exachkrootとして実行します。

    rootユーザー資格証明を使用して、Oracle OrachkおよびOracle Exachkを実行します。

    rootとして実行されるOracle OrachkおよびOracle Exachkのプロセスによって、Oracle DatabaseホームおよびOracle Grid Infrastructureホームを所有するユーザーのユーザー参照が実行されます。rootアクセスが不要な場合、Oracle OrachkおよびOracle Exachkプロセスは、suコマンドを使用して、該当するOracle Databaseホーム・ユーザーまたはOracle Grid Infrastructureホーム・ユーザーとしてコンプライアンス・チェックを実行します。より低い権限のアカウントは、rootアクセスが必要なコンプライアンス・チェックを実行するための昇格アクセス権を持つことができません。

    rootとしてのコンプライアンス・チェックの実行には、ロール別の環境またはセキュリティがより制限される環境におけるメリットがあります。

  5. Oracle Databaseホーム所有者またはOracle Grid Infrastructureホーム所有者としてOracle OrachkおよびOracle Exachkを実行します:

    Oracle Databaseホーム所有者またはOracle Grid Infrastructureホーム所有者の資格証明を使用して、Oracle OrachkおよびOracle Exachkを実行します。

    rootアクセスが必要なコンプライアンス・チェックを実行するには、Oracle OrachkおよびOracle Exachkを実行するユーザーに、rootとしての昇格アクセス権が必要です。

    Oracle Databaseホーム所有者またはOracle Grid Infrastructureホーム所有者としてコンプライアンス・チェックを実行する場合は、ロール別の環境で複数回実行する必要があります。セキュリティ要件がより制限的である場合、昇格アクセス権は許可されません。

    他にいくつかオプションがあります。

    • rootアクセスが必要なチェックをスキップします。
    • プロンプトが表示されたら、rootのユーザーIDおよびパスワードを指定します。
    • sudoを構成します。

      sudoを使用している場合は、コンプライアンス・チェックを実行しているユーザーに対応する/etc/sudoersファイルに、$HOMEにあるrootスクリプトのエントリを追加します。

      $HOMEの設定内容を確認するには、echo $HOMEコマンドを実行します。

      たとえば:
      user ALL=(root) NOPASSWD:/root/root_orachk.sh
      user ALL=(root) NOPASSWD:/root/root_exachk.sh
    • パスワードなしのSSH接続を事前構成します。

2.4.1.4 データ入力の端末に関する考慮事項

サポートされている任意のUNIXおよびLinux端末タイプ(文字モード端末、ILOM、VNCサーバー)を使用して、Oracle Autonomous Health Frameworkを実行します。

対話型実行中またはデーモンの構成中にプロンプトに応答します。

各端末タイプには長所と短所があります。削除されたネットワーク接続の影響は、使用される端末タイプによって異なります。

たとえば、文字モード端末を使用した対話型実行で、ネットワークの削除の前にすべてのプロンプトに応答した場合、ネットワーク接続が削除された場合でも、実行中のプロセスは正常に完了します。すべての入力プロンプトに応答する前にネットワーク接続が削除された場合、実行中のすべてのプロセスがハングします。ネットワーク接続がリストアされたときに、ハングしているプロセスを手動でクリーン・アップします。

Oracle Autonomous Health Frameworkが実行されているデータベースで実行されているVNCサーバーへのリモート接続を使用すると、ネットワーク削除の中断が最小限になります。

VNCサーバーの使用を禁止するアクセシビリティ・ソフトウェアまたはデバイスを使用し、ネットワーク障害が発生した場合は、ネットワーク・チームおよびシステム管理者と協力して根本原因を特定し、必要に応じて環境を調整する必要があります。

たとえば、アクセシビリティ製品によって、停止が挿入され、Oracle Autonomous Health Frameworkを実行する対話型プロセスが再起動される場合があります。これにより、端末の非アクティブ状態が原因でオペレーティング・システムのタイムアウトが発生する場合は、コマンドを実行する前に環境の非アクティブ・タイムアウトを増やします。

端末の非アクティブ状態が原因でオペレーティング・システム・レベルで支援ツールによって発生したタイムアウトは、Oracle Autonomous Health Frameworkに特有のものではありません。タイムアウトは、アシスティブ・テクノロジで管理されるプロセスに対して発生する可能性があります。

2.4.1.5 Oracle ExadataおよびZero Data Loss Recovery ApplianceでのOracle Exachkの実行

Oracle ExadataおよびZero Data Loss Recovery ApplianceでOracle Exachkを実行するための追加の前提条件のリストを確認します。

2.4.1.5.1 ストレージ・サーバー

データベースで、Oracle Autonomous Health Frameworkを起動したユーザーのパスワードなしのSSH等価を各ストレージ・サーバーのrootユーザーに構成すると、Oracle Autonomous Health FrameworkはSSH等価資格証明を使用してストレージ・サーバー・チェックを実行します。

データベースからストレージ・サーバーへのSSH接続がない場合は、Oracle Exadataストレージ・サーバーからOracle Autonomous Health Frameworkを実行できます。

セルをロックおよびロック解除するには、Oracle ExadataおよびZero Data Loss Recovery Applianceに対して–unlockcellsオプションおよび–lockcellsオプションを使用します。
exachk -unlockcells all | -cells [comma-delimited list of cell names or cell IPs]
exachk -lockcells all | -cells [comma-delimited list of cell names or cell IPs]

セルのロックが解除された後は、デフォルトのタイムアウトである50分以内に再度ロックされていない場合、自動的に再度ロックされます。タイムアウト期間は、RAT_CELLUNLOCK_TIMEOUT環境変数を使用して調整できます。

たとえば、タイムアウトを2時間に変更するには、次のようにします。

export RAT_CELLUNLOCK_TIMEOUT=120m
exachk -unlockcells all

2.4.1.5.2 InfiniBandスイッチ

データベースで、Oracle Autonomous Health Frameworkを起動したユーザーのパスワードなしのSSH等価を各InfiniBandスイッチのnm2userユーザーに構成すると、Oracle Autonomous Health FrameworkはSSH等価資格証明を使用してInfiniBandスイッチ・チェックを実行します。

パスワードなしのSSH等価を構成していない場合、Oracle Autonomous Health Frameworkによって、各InfiniBandスイッチのnm2userユーザー・パスワードの入力を求められます。

2.4.1.6 英語以外の環境でのOracle Autonomous Health Frameworkの実行

英語以外の環境でOracle Autonomous Health Frameworkを実行するには、グローバリゼーション環境変数を設定します。

Oracle Autonomous Health Frameworkでは、英語のみがサポートされています。ただし、グローバリゼーション環境変数を設定することで、Oracle Autonomous Health Frameworkを実行できます。
  1. 英語以外の環境でOracle Autonomous Health Frameworkを実行するには、環境変数NLS_LANGAMERICAN_AMERICA.[NLS_CHARACTERSET]に設定します。

    たとえば:

    export NLS_LANG=AMERICAN_AMERICA.JA16SJISTILDE

    グローバリゼーション環境変数の設定の詳細は、Oracle Databaseグローバリゼーション・サポート・ガイドグローバリゼーション・サポート環境の設定を参照してください。