4 Oracle Exadata System Softwareのセキュリティ構成

この章は、Oracle Exadata System Softwareのセキュリティを構成する方法について説明します。

この章のトピックは、次のとおりです:

4.1 Oracle Exadata Storage Serverのオペレーティング・システムのセキュリティの理解

Oracle Exadata Storage Server上のオペレーティング・システムのセキュリティは次のとおりです。

  • セキュリティ・ポリシーの強制

  • セルへのネットワーク・アクセス・パスの保護

  • オペレーティング・システム・レベルのアクティビティの監視

Oracle Exadata System Softwareには、オペレーティング・システムやOracle Exadata Storage Serverへのネットワーク・アクセスを安全にするための機能が含まれています。

4.1.1 Oracle Exadata Storage Serverのセキュリティ・ポリシー

オペレーティング・システムへのユーザー・アクセスは、安全で固定化されたパスワードの使用により安全を保証できます。

Oracle Exadata System Softwareを管理するオペレーティング・システム・ユーザーのパスワードは、Oracle Exadata Deployment Assistant (OEDA)によって実施されるセキュリティ・ガイドラインに準拠しています。詳細は、OEDAで実施されるデフォルト・セキュリティ設定に関する項を参照してください。

4.1.1.1 パスワードの変更

パスワードの期限が切れる7日前に、ユーザーにはパスワードを変更する必要があることが通知されます。パスワードを変更するには、次のコマンドを使用します。

passwd username

このコマンドのusernameはユーザー名です。このコマンドの例を次に示します。

passwd celladmin
4.1.1.2 セキュリティ・ポリシーの有効化

/opt/oracle.cellos/RESECURED_NODEファイルによって、セキュリティ・ポリシーが有効化されます。

ファイルが存在しない場合は、次の手順を実行してすべてのオペレーティング・システム・ユーザーのセキュリティ・ポリシーをリセットできます。

  1. すべてのデータベース・サーバー上のOracle Grid Infrastructureサービスをシャットダウンします。
  2. セルのサービスを停止します。
    cellcli -e alter cell shutdown services all
    
  3. セキュリティ・ポリシーをリセットするにはharden_passwords_reset_root_sshスクリプトを使用します。

    注意:

    harden_passwords_reset_root_sshスクリプトはセルを再起動します。
    /opt/oracle.SupportTools/harden_passwords_reset_root_ssh
    
  4. すべてのオペレーティング・システム・ユーザーは、次回ログイン時に新しいパスワードを設定する必要があります。
4.1.1.3 失敗したパスワード試行の表示

pam_tally2オペレーティング・システム・ユーティリティを使用して、不正なパスワードによるログイン試行を表示します。

/sbin/pam_tally2ユーティリティを使用して失敗したパスワード試行を表示します。

# /sbin/pam_tally2
Login           Failures Latest failure     From
celladmin           1    09/18/18 11:17:18  dhcp-10-154-xxx-xxx.example.com
4.1.1.4 ロックされたユーザー・アカウントのリセット

ログイン試行に5回失敗したユーザー・アカウントはロックされます。

アカウントをリセットするには、次のコマンドを使用します。

/sbin/pam_tally2 --user username --reset

このコマンドでは、usernameはアカウントをロックしたユーザー名です。

4.1.1.5 データベース・サーバーのパスワード・ポリシーの変更

パスワード・ポリシーは、データベース・サーバーの場合のみ変更できます。

  1. データベース・サーバーで、/etc/login.defsファイルの設定を変更して、次の例のように経過ポリシーを変更します。
    PASS_MAX_DAYS 90
    PASS_MIN_DAYS 1
    PASS_MIN_LEN 8
    PASS_WARN_AGE 7
    
  2. /etc/pam.d/system-authファイルのminパラメータの値を変更することにより、文字クラスの制限を変更します。
    Exadataファクトリのデフォルト設定は、5,5,5,5,5です。5,5,5,5,5と設定すると、パスワードの最小文字数を5文字にすることができ、文字クラスの制限が削除されます。/opt/oracle.SupportTools/harden_passwords_reset_root_sshスクリプトを実行する場合、デフォルト設定はmin=disabled,disabled,16,12,8です。
  3. データベース・サーバーを再起動します。

関連項目:

詳細は、login.defsおよびpasswdqc.confマニュアル・ページを参照してください

4.1.2 Oracle Exadata Storage Serverへのネットワーク・アクセス

Oracle Exadata System Softwareには、各セルにファイアウォールを実装するセルウォール・サービスが含まれています。このサービスは/etc/init.d/cellwallディレクトリにあり、セル上にiptablesファイアウォールを実装します。さらに、SSHサーバーは管理ネットワーク(NET0)およびInfiniBandネットワーク(BONDIB0)上のみでの接続リクエストに応答するよう構成されています。

ファイアウォール・ルールを確認するには、次のコマンドをrootユーザーとして実行します。

iptables --list

注意:

データベース・サーバーに自動的に構成されるファイアウォールはありません。Oracle Exadata Database Machineの現在のネットワーク要件を満たすように、データベース・サーバー上にiptablesのセットを実装します。

4.1.3 Oracle Exadata Storage Server上でのオペレーティング・システム・アクティビティの監視

各Oracle Exadata Storage Serverは、システム・レベルのアクティビティを監査するようにauditdで構成されています。

監査を管理してレポートを生成するには、auditctlコマンドを使用します。監査ルールは/etc/audit/audit.rulesファイルにあります。パッチ・セットを適用すると、変更は保持されません。

Oracle Exadata System Softwareリリース19.1.0およびOracle Linux 7以降、Oracle Exadata Database Machineに固有の監査ルールは/etc/audit/rules.d/01-exadata_audit.rulesファイルに格納されます。

auditdサービスが起動すると、augenrulesユーティリティが実行されます。このユーティリティは、監査ルール・ディレクトリ/etc/audit/rules.dにあるすべてのコンポーネント監査ルール・ファイルをマージし、マージされた結果を/etc/audit/audit.rulesファイルに配置します。コンポーネント監査ルール・ファイルは、augenrulesによって処理されるには、.rulesで終わる必要があります。/etc/audit/rules.dディレクトリ内の他のすべてのファイルは無視されます。ファイルは、自然ソート順に基づいて連結され、空の行およびコメント(#)行は削除されます。Oracle Exadata Database Machineに固有の監査ルールは、/etc/audit/rules.dディレクトリ(/etc/audit/rules.d/20-customer_audit.rulesなど)内の個別の監査ルール・ファイルに配置する必要があります。

以前のリリースのOracle Exadata System Softwareと同様に、監査ルールは不変です。監査ルールに対する変更を有効にするには、再起動が必要です。

4.2 Exadataソフトウェア・ユーザーおよびロールの作成

ロールに権限を付与し、ユーザーにロールを付与することで、ユーザーが実行できるOracle Exadata System Softwareコマンドを制御できます。

たとえば、ユーザーにLIST GRIDDISKコマンドを実行可能にしALTER GRIDDISKを実行不可にするよう指定できます。このレベルの制御は、システムへの完全なアクセスをごく少数のユーザーにのみ許可するクラウド環境で役立ちます。

Oracle Exadata System Softwareユーザーは、オンプレミスまたはOracle Cloud環境でExaCLIを実行する場合に必要です。ExaCLIでは、計算ノードからリモートでセルを管理できます。計算ノード上でExaCLIを実行するときに、セル・ノードへの接続に使用するユーザー名を指定する必要があります。管理サーバー(MS)により、ユーザーの資格証明が認証され、そのユーザーによって発行されるコマンドの許可チェックが実行されます。そのユーザーがコマンドを実行する適切な権限を持っていない場合、MSによりエラーが返されます。

パスワードのセキュリティ・キーは、HMAC-SHA1とパスワード・ベース鍵導出関数2 (PBKDF2)を使用して暗号化されています。

ユーザーおよびロールを設定するには、次の手順を実行します。

  1. CREATE ROLEコマンドを使用してロールを作成します。
  2. GRANT PRIVILEGEコマンドを使用してロールに権限を付与します。
  3. CREATE USERコマンドを使用してユーザーを作成します。
  4. GRANT ROLEコマンドを使用してユーザーにロールを付与します。

REVOKE PRIVILEGEコマンドを使用して、ロールから権限を取り消すこともできます。ユーザーからロールを取り消すには、REVOKE ROLEコマンドを使用します。

4.2.1 ロールの作成およびロールに関する情報の取得

CREATE ROLEコマンドを使用して、Oracle Exadata System Softwareユーザーのロールを作成します。

たとえば、管理者のロールを作成するには、次のコマンドを使用します。

CellCLI> CREATE ROLE admin

ロールを作成した後、GRANT PRIVILEGEコマンドを使用してロールに権限を付与できます。次の例のように、ロールをユーザーに付与することもできます。

CellCLI> GRANT PRIVILEGE ALL ACTIONS ON ALL OBJECTS TO ROLE admin

CellCLI> GRANT ROLE admin TO USER username

ロールに関する詳細情報を取得するには、LIST ROLEコマンドを使用します。次のコマンドはadminロールのすべての属性を返します。

CellCLI> LIST ROLE admin DETAIL
         name:                   admin
         privileges:             object=all objects, verb=all actions, 
attributes=all attributes, options=all options

関連項目

4.2.2 権限の付与および取消し

GRANT PRIVILEGEコマンドを使用して、Oracle Exadata System Softwareユーザーのロールに権限を付与します。

  • GRANT PRIVILEGEコマンドを使用してロールに権限を付与します。
    • 次の例は、adminロールを持つOracle Exadata System Softwareユーザーにすべての権限を付与しています。

      CellCLI> GRANT PRIVILEGE ALL ACTIONS ON ALL OBJECTS TO ROLE admin
      
    • 個々のコマンド権限をロールに付与することもできます。

      CellCLI> GRANT PRIVILEGE list ON griddisk TO ROLE diskmonitor
      
      CellCLI> GRANT PRIVILEGE list ON griddisk TO ROLE diskmonitor
    • 特定のオブジェクトに対するすべてのコマンド権限をロールに付与することもできます。

      GRANT PRIVILEGE ALL ON griddisk TO ROLE diskadmin
  • REVOKE PRIVILEGEコマンドを使用して、ロールから権限を取り消すことができます。
    CellCLI> REVOKE PRIVILEGE ALL ON griddisk FROM ROLE diskadmin

4.2.3 ユーザーの作成

CREATE USERコマンドを使用して、Oracle Exadata System Softwareユーザーを作成します。

新しく作成したユーザーは、何も権限を持っていません。Oracle Exadata System Softwareユーザーには、ユーザーに付与されたロールを介して権限が付与されます。

  1. CREATE USERコマンドを使用してユーザーを作成し、初期パスワードを割り当てます。

    次のコマンドは、パスワードchangeME123fredというユーザーを作成します。

    CellCLI> CREATE USER fred PASSWORD = "changeME123"
  2. 新しいユーザーfredに権限を付与するには、すでに構成されているロールにGRANT ROLEコマンドを使用します。

4.2.4 サーバーにリモートにアクセスするユーザーのパスワードの有効期限の構成

CELL属性を構成して、ユーザー・パスワードを期限切れにできます。

Oracle Exadata System Softwareリリース19.1.0では、REST APIまたはExaCLIなど、リモートでOracle Exadata System Softwareサーバーにアクセスするユーザーにパスワード・セキュリティを構成するための新しいCELL属性があります。これらの属性によって、ユーザーがリモートでパスワードを変更できるかどうか、ユーザー・パスワードが期限切れになるまでの時間、およびパスワード有効期限の前にユーザーが警告メッセージを受け取る日数が決まります。デフォルトの構成では、ユーザー・パスワードは期限切れになりません。

注意:

パスワードの有効期限用のCELL属性は、Oracle Exadata System Softwareで作成されたユーザーにのみ適用されます。パスワードの有効期限は、LIST USERコマンドで表示されるユーザーにのみ適用され、celladminoracleなどのオペレーティング・システム・ユーザーには適用されません。
  • ユーザーがリモートでパスワードを変更できるようにするには、ALTER CELLコマンドを使用してremotePwdChangeAllowed属性をtrueに設定します。
    値をfalseに設定すると、ユーザーは、サーバー管理者に連絡してパスワードを変更する必要があることを通知するメッセージを受け取ります。
    CellCLI> ALTER CELL remotePwdChangeAllowed=true
  • ユーザー・パスワードが期限切れになるまでの時間の長さを変更するには、ALTER CELLコマンドを使用してpwdExpInDays属性を変更します。
    この値nを、パスワードの期限が切れるまでの日数に設定します。pwdExpInDaysが0 (デフォルト値)に設定されている場合、ユーザー・パスワードは期限切れになりません。
    CellCLI> ALTER CELL pwdExpInDays=n
  • パスワードの期限が切れる前に警告期間の長さを構成するには、ALTER CELLコマンドを使用してpwdExpWarnInDays属性を変更します。
    nをパスワードの期限が切れる前にユーザーに警告する日数に設定します。デフォルトのユーザー・アカウントのパスワードの有効期限の警告時間は7日間です。
    CellCLI> ALTER CELL pwdExpWarnInDays=n
  • ユーザー・パスワードの期限が切れた後にユーザー・アカウントがロックされるまでの時間を指定するには、ALTER CELLコマンドを使用してaccountLockInDays属性を変更します。
    この値nを、ユーザー・アカウントがロックされるまでの日数に設定します。デフォルトのユーザー・アカウントのロック時間は7日間です。
    CellCLI> ALTER CELL accountLockInDays=n

4.2.5 ロールの付与と取消し

GRANT ROLEコマンドを使用して、Oracle Exadata System Softwareユーザーにロールを作成します。

コマンド権限がロールに付与され、そのロールがユーザーに付与されます。コマンド権限は、Oracle Exadata System Softwareユーザーに直接付与されません。
  • ユーザーにロールを付与するには、GRANT ROLEコマンドを使用します。

    次の例は、ユーザーfredadminロールを付与しています。

    CellCLI> GRANT ROLE admin TO USER fred
    
  • REVOKE ROLEコマンドを使用して、ユーザーからロールを取り消すことができます。

関連項目

4.3 ストレージ・サーバーでのSSHの無効化

デフォルトでは、ストレージ・サーバーでSSHが有効化されています。必要に応じて、SSHアクセスをブロックするためにストレージ・サーバーを「lock」できます。その場合でも、計算ノード上で実行され、httpsおよびREST APIを使用してセル上で実行されているWebサービスと通信するexacliを使用して、セルの操作は実行できます。

セルへのログインを必要とする操作を実行するときは、一時的にセルのロックを解除できます。操作が完了したら、再びセルをロックできます。

次の2つの新しいセル属性によりセルのロックを制御します。

  • accessLevelPerm : この属性は、セルがデフォルトで実行されるアクセス・レベルを指定します。それは、remoteLoginEnabledまたはremoteLoginDisabledのいずれかです。

    • remoteLoginEnabled: SSHサービスは有効です。sshまたはexacliを使用してセルにアクセスできます。これが、accessLevelPermのデフォルト値です。

    • remoteLoginDisabled: SSHサービスは無効です。exacliを介してのみ、セルにアクセスできます。

  • accessLevelTemp: 指定された期間、一時的にアクセス・レベルを変更できます。期限が切れると、アクセス・レベルはaccessLevelPermの値に戻ります。通常、セルでソフトウェアの更新を必要とするときに、セルのアクセス・レベルを変更します。

このアクセス・レベルは、セルの再起動後も維持されます。

4.3.1 セルのロック

セルをロックするには、そのaccessLevelPerm属性をremoteLoginDisabledに設定します。

accessLevelPerm属性を変更する権限を持つユーザーを使用する必要があります。

  1. 必要な権限をユーザーに付与します。

    ストレージ・サーバーで、次のコマンドを実行します。

    cellcli> create role administrator
    cellcli> grant privilege all actions on all objects all attributes with all options to role administrator
    cellcli> create user celladministrator password=*
    cellcli> grant role administrator to user celladministrator
    
  2. celladministratorユーザーとしてExaCLIを実行し、ALTER CELLコマンドを実行します。
    $ exacli -l celladministrator -c exam08cel01
    Password=********
    
    exacli> alter cell accessLevelPerm = remoteLoginDisabled
    

4.3.2 セルの一時的なロック解除

セルへのSSHログインを必要とするメンテナンスやアップグレードなどの操作を実行するため、短時間、ロックされたセルのロックを解除できます。この「一時的なアクセス・ウィンドウ」の開始時間および持続時間は、セルのaccessLevelTemp属性を設定することで指定できます。この属性には、次のプロパティがあります。

表4-1 accessLevelTempのプロパティ

プロパティ 説明

accessLevel

SSHの有効(remoteLoginEnabled)または無効(remoteLoginDisabled)のいずれかを指定します。

この値は、指定する必要があります。デフォルト値はありません。

startTime

指定されたアクセス・レベルの開始時間を指定します。この時間は、ISO 8601形式の「yyyy-MM-ddTHH:mm:ssZ」で指定します。

また、指定のアクセス・レベルをすぐに開始することを示すため、キーワード「now」を指定することもできます。

デフォルト値: now

duration

アクセス・レベルの継続時間を指定します。継続時間は、次の形式で指定します。

[任意の桁数の数字、それに続くd (日数)]

[任意の桁数の数字、それに続くh (時間数)]

[任意の桁数の数字、それに続くm (分数)]

例:

1時間を指定: 1h

90分を指定: 90m

1日を指定: 1d

1日と12時間を指定: 1d12h

デフォルト値: 2h (2時間)

reason

アクセス・レベルを変更する理由を指定します(たとえば、アップグレードを実行する)。

デフォルト値: "none"

例:

1. 次の例では、2015年6月20日午前1:01に開始される、2時間の一時的なアクセス・ウィンドウを作成します。

exacli> alter cell accessLevelTemp=((accessLevel="remoteLoginEnabled", -
        startTime="2015-06-20T01:01:00-07:00",                         -
        duration="2h",                                                 -
        reason="Quarterly maintenance"))

2. 次の例では、即時に開始される、2時間の一時的なアクセス・ウィンドウを作成します。このコマンドは、開始時間および継続時間のデフォルト値を使用します。

exacli> alter cell accessLevelTemp=((accessLevel="remoteLoginEnabled", -
        reason="Quarterly maintenance"))

3. 次の例では、即時に開始される、30分間の一時的なアクセス・ウィンドウを作成します

exacli> alter cell accessLevelTemp=((accessLevel="remoteLoginEnabled", -
        startTime="now",                                               -
        duration="30m",                                                -
        reason="Quarterly maintenance"))

4. 次の例では、2015年6月20日午前1:01に開始される、2時間の一時的なアクセス・ウィンドウを作成します。このコマンドは、継続時間のデフォルト値を使用します。

exacli> alter cell accessLevelTemp=((accessLevel="remoteLoginEnabled", -
        startTime="2015-06-20T01:01:00-07:00",                         -
        reason="Quarterly maintenance"))

5. 次の例では、前述の例4で作成した一時的なアクセス・ウィンドウを5時間に拡張します。調整するウィンドウと開始時間が一致しなければならないことに注意してください。

exacli> alter cell accessLevelTemp=((accessLevel="remoteLoginEnabled", -
        startTime="2015-06-20T01:01:00-07:00",                         -
        duration="5h",                                                 -
        reason="Quarterly maintenance window extended to 5 hrs - Joe"))

6. 次の例では、一時的なアクセス・ウィンドウを削除します。一時的なアクセス・ウィンドウが現在アクティブである場合は、ただちにそれが閉じられ、アクセス・レベルが永続的なアクセス・レベルに戻されます。一時的なアクセス・ウィンドウが予定されていて、まだアクティブでない場合は、キャンセルされます。

exacli> alter cell accessLevelTemp=''

 

次の点に注意してください。

  • いつの時点でも、一時的なアクセス・ウィンドウは、1つのみ許可されます。すでに1つが有効であるときに、新しい一時的なアクセス・ウィンドウを作成しようとすると、エラー・メッセージが表示されます。

    一時的なアクセス・ウィンドウがまだアクティブではなく、予定されている場合は、予定されているものが新しく作成された一時的なアクセス・ウィンドウで置き換えられます。

  • 予定されていて、まだアクティブではない一時的なアクセス・ウィンドウを変更するには、単に新しい値で再び「alter cell」コマンドを実行します。

  • すでに進行中の一時的なアクセス・ウィンドウを変更(たとえば、継続時間の延長や理由の変更)するには、更新した継続時間または理由(あるいはその両方)で、再び「alter cell」コマンドを実行します。このコマンドでは、変更する既存の一時的なアクセス・ウィンドウの正確な開始時間を指定する必要があります。(開始時間 + 継続時間)は、将来の時刻にする必要があります。

4.3.3 現在のアクセス・レベルのチェック

現在のアクセス・レベルが何かを確認するには、次のコマンドを実行します。

exacli> list cell detail

accessLevelPermおよびaccessLevelTemp属性の値を確認します。

また、次のコマンドを実行できます。

exacli> list cell attributes accessLevelPerm

exacli> list cell attributes accessLevelTemp

4.3.4 管理サーバーからのアラート

accessLevelPerm属性が変更されたときに、ステートレス・アラートが生成されます。

accessLevelTempウィンドウが作成されたときに、ステートフル・アラートが生成されます。accessLevelTempウィンドウがアクティブになったときに、アラート電子メールが送信されます。ウィンドウの有効期限が切れたときに、アラートがクリアされます。

4.4 Oracle Exadata Storage Serverのデータ・セキュリティの構成

Oracle Exadata System Softwareデータのセキュリティは、ストレージ・セル上の特定のグリッド・ディスクにアクセスできるOracle Automatic Storage Management (Oracle ASM)クラスタおよびOracle Databaseクライアントを制御することにより実装されます。デフォルトでは、すべてのOracle DatabaseおよびOracle ASMインスタンスでストレージ・セルのすべてのグリッド・ディスクにアクセスできます。

  • Oracle ASMクラスタのすべてのデータベース・クライアントで特定のグリッド・ディスクにアクセスできるようにセキュリティを設定するには、ASMを有効範囲にしたセキュリティを構成します。

  • Oracle ASMクラスタの特定のデータベース・クライアントで特定のグリッド・ディスクにアクセスできるようにセキュリティを設定するには、DBを有効範囲にしたセキュリティを構成します。

セキュリティの一貫性を確保するには、次を確認します。

  • 混乱やエラーを回避するために、同じOracle ASMディスク・グループに属するすべてのグリッド・ディスクに、同じセル側のグリッド・ディスク・セキュリティが定義されていること。

  • Oracle ASMクラスタ内のOracle Real Application Clusters (Oracle RAC)のすべてのサーバーに、Oracle ASMcellkey.oraファイルの同じ内容、所有権およびセキュリティがあること。

  • Oracle RACクラスタのすべてのデータベース・サーバーに、データベースのcellkey.oraファイルの同じ内容、所有権およびセキュリティがあること。

  • DBを有効範囲にしたセキュリティが実装されている場合は、グリッド・ディスクにアクセスするすべてのデータベースに実装されていることを確認します。

  • ASMを有効範囲にしたセキュリティDBを有効範囲にしたセキュリティを混在しないようにしてください。

セキュリティを設定する場合は、セル間で同じ構成にする必要があります。dcliユーティリティを使用することにより、構成を変更した場合でもユーザーによるエラーの可能性を排除できるため、一貫性が確保されます。

詳細は、『Oracle Exadata Database Machineセキュリティ・ガイド』Exadata Storage Serverのデータ・セキュリティの構成に関する項を参照してください。