複数ノードのセキュア・デプロイメント

次の各例では、Oracle NoSQL Databaseの新規または既存の複数ホスト・デプロイメントにセキュリティを追加する方法を説明します。

新規インストールへのセキュリティの追加

Oracle NoSQL Databaseの3ノードのcapacity=3 (3x3)セキュア・デプロイメントをインストールするには、次のようにします。

  1. makebootconfigユーティリティを-store-securityオプションとともに実行して、セキュリティを備えた基本ストア構成を設定します。

    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar makebootconfig \
    -root KVROOT -port 5000 \
    -host node01 -harange 5010,5020 \
    -store-security configure -pwdmgr wallet -capacity 3
  2. この例では、-store-security configureが使用されるため、security configurationユーティリティがmakebootconfigプロセスの一部として実行され、キーストア・ファイルに使用するパスワードの入力が求められます。

    Enter a password for the Java KeyStore: 
  3. ストアのパスワードを入力してから、検証のために再入力します。たとえば、ウォレットを使用している場合、securityconfigツールによって次のセキュリティ関連ファイルが自動生成されます。

    Enter a password for the Java KeyStore: ***********
    Re-enter the KeyStore password for verification: ***********
    Created files:
    security/security.xml
    security/store.keys
    security/store.trust
    security/store.wallet/cwallet.sso
    security/client.security
    security/client.trust 
  4. マルチホスト・ストア環境では、securityディレクトリおよびここに含まれるすべてのファイルを、最初のノードから、ストレージ・ノードをホストする各サーバーにコピーし、内部クラスタ認証を設定する必要があります。たとえば、次のコマンドでは、現在のノード(node01)で別のノードを表示したりアクセスできることを前提としています。

    cp -R node01/KVROOT/security node02/KVROOT/
    cp -R node01/KVROOT/security node03/KVROOT/ 

    ノート:

    現在のノードで別のノードのファイルが表示されない場合にコピーを実行するには、scpなどのリモート・コピー・コマンドの使用が必要な場合があります。

  5. -store-security enableコマンドを使用して、他の2つのノードのセキュリティを有効化します。

    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar makebootconfig \
    -root KVROOT \
    -host node02 \
    -port 6000 \
    -harange 6010,6020 \
    -capacity 3 \
    -store-security enable \
    -pwdmgr wallet
    
    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar makebootconfig \
    -root KVROOT \
    -host node03 \
    -port 7000 \
    -harange 7010,7020 \
    -capacity 3 \
    -store-security enable \
    -pwdmgr wallet
  6. 各ノードでストレージ・ノード・エージェント(SNA)を起動します。

    ノート:

    SNAを開始する前に、環境変数MALLOC_ARENA_MAX1に設定します。MALLOC_ARENA_MAX1に設定すると、メモリー使用量が指定されたヒープ・サイズに制限されます。

    nohup java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar start -root KVROOT&
  7. KVStoreサーバー・ホスト(node01)上で、runadminをセキュリティ・モードで起動します。このためには、次のコマンドを使用します。

    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar \
    runadmin -port 5000 -host node01 \
    -security KVROOT/security/client.security
    Logged in admin as anonymous
  8. configure -nameコマンドを使用すると、構成するKVStoreの名前を指定できます。

    kv-> configure -name mystore
    Store configured: mystore 
  9. 管理ユーザーを作成します。パスワードは、パスワードの複雑度ポリシーに記載されているセキュリティ・ポリシーに準拠する必要があります。この場合、ユーザーrootが定義されます。

    kv-> plan create-user -name root -admin -wait
    Enter the new password: ********
    Re-enter the new password: ********
    Executed plan 6, waiting for completion...
    Plan 6 ended successfully  

    ユーザーの作成および管理の詳細は、「ユーザー管理」を参照してください。

  10. ウォレットを作成し、管理ユーザー(root)のクライアント資格証明を有効化します。

    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar securityconfig \
    wallet create -dir KVROOT/security/login.wallet
    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar securityconfig wallet secret \
    -dir KVROOT/security/login.wallet -set -alias root
    Enter the secret value to store: ********
    Re-enter the secret value for verification: ********
    Secret created
    

    ノート:

    パスワードは、前のステップで管理用に設定したパスワードと一致する必要があります。

  11. この時点では、rootユーザーとしてストアに接続できます。ログインするには、-username <user> runadmin引数を使用するか、セキュリティ・ファイルに"oracle.kv.auth.username"プロパティを指定します。

    この例では、セキュリティ・ファイル(adminlogin.txt)が使用されます。ログインするには、次のコマンドを使用します。

    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar runadmin -port 5000 \
    -host localhost -security adminlogin
    Logged in admin as root

    ファイルadminlogin.txtは、認証用に追加のプロパティ設定が含まれる、client.securityファイルのコピーである必要があります。このファイルには次のような内容が含まれます。

    oracle.kv.auth.username=root
    oracle.kv.auth.wallet.dir=KVROOT/security/login.wallet
    oracle.kv.transport=ssl
    oracle.kv.ssl.trustStore=KVROOT/security/client.trust
    oracle.kv.ssl.protocols=TLSv1.2,TLSv1.1,TLSv1
    oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL) 

    詳細は、「ユーザー・ログイン」を参照してください。

  12. 管理でログインした後は、何人かのユーザーを作成できます。

    kv-> plan create-user -name user1 -wait
    Enter the new password: ********
    Re-enter the new password: ********
    Executed plan 7, waiting for completion...
    Plan 7 ended successfully 
    kv-> plan create-user -name user2 -wait
    Enter the new password: ********
    Re-enter the new password: ********
    Executed plan 8, waiting for completion...
    Plan 8 ended successfully 
  13. ウォレットを作成し、各ユーザーのクライアント資格証明を有効化します。通常、すべての一般ユーザーについてこのウォレットを再利用します。

    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar securityconfig \
    wallet create -dir KVROOT/security/users.wallet
    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar securityconfig wallet secret \
    -dir KVROOT/security/users.wallet -set -alias user1
    Enter the secret value to store: ********
    Re-enter the secret value for verification: ********
    Secret created
    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar securityconfig wallet secret \
    -dir KVROOT/security/users.wallet -set -alias user2
    Enter the secret value to store: ********
    Re-enter the secret value for verification: ********
    Secret created 

    ノート:

    各パスワードは、前のステップでユーザーごとに設定したパスワードと一致する必要があります。このウォレットは、管理ウォレットとは無関係です。同じウォレットを使用して管理/ユーザー・パスワードを格納できます。

  14. この時点では、ユーザーとしてストアに接続できます。ログインするには、-username <user> runadmin引数を使用するか、セキュリティ・ファイルに"oracle.kv.auth.username"プロパティを指定します。

    この例では、セキュリティ・ファイル(userlogin.txt)が使用されます。ログインするには、次のコマンドを使用します。

    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar runadmin -port 5000 \
    -host localhost -security userlogin
    Logged in admin as user1

    ファイルuserlogin.txtは、認証用に追加のプロパティ設定が含まれる、client.securityファイルのコピーである必要があります。このファイルには次のような内容が含まれます。

    oracle.kv.auth.username=user1
    oracle.kv.auth.wallet.dir=KVROOT/security/users.wallet
    oracle.kv.transport=ssl
    oracle.kv.ssl.trustStore=KVROOT/security/client.trust
    oracle.kv.ssl.protocols=TLSv1.2,TLSv1.1,TLSv1
    oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL) 

    詳細は、「ユーザー・ログイン」を参照してください。

既存のインストールへのセキュリティの追加

既存の3ノードのcapacity=3 (3x3) Oracle NoSQL Databaseインストールにセキュリティを追加するには、次のようにします。

  1. 各ノードのKVStoreインスタンスを停止します。

    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar stop \
    -root KVROOT
  2. securityconfigユーティリティを実行し、セキュリティを備えた基本ストア構成を設定します。

    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar securityconfig
  3. config createコマンドを-pwdmgrオプションとともに使用して、ストアへのアクセスに必要なパスワードの保持に使用されるメカニズムを指定します。この場合、Oracle Walletが使用されます。

    config create -pwdmgr wallet -root KVROOT
    Enter a password for the Java KeyStore:
  4. ストアのパスワードを入力してから、検証のために再入力します。構成ツールによって、いくつかのセキュリティ関連ファイルが自動生成されます。

    Enter a password for the Java KeyStore: ***********
    Re-enter the KeyStore password for verification: ***********
    Created files:
    security/security.xml
    security/store.keys
    security/store.trust
    security/store.wallet/cwallet.sso
    security/client.security
    security/client.trust  
  5. マルチホスト・ストア環境では、securityディレクトリおよびここに含まれるすべてのファイルを、最初のノードから、ストレージ・ノードをホストする各サーバーにコピーし、内部クラスタ認証を設定する必要があります。たとえば、次のコマンドでは、現在のノード(node01)で別のノードを表示したりアクセスできることを前提としています。

    cp -R node01/KVROOT/security node02/KVROOT/
    cp -R node01/KVROOT/security node03/KVROOT/ 

    ノート:

    現在のノードで別のノードのファイルが表示されない場合にコピーを実行するには、scpなどのリモート・コピー・コマンドの使用が必要な場合があります。

  6. 各ノードでconfig add-securityコマンドを使用して、作成したセキュリティ構成を追加します。

    security-> config add-security -root KVROOT -secdir security 

    ノート:

    このコマンドの実行中、securityconfigツールにより参照先ファイルの存在が検証され、セキュリティ構成を参照するために指定のブートストラップ構成ファイルが更新されます。このプロセスは通常、KVStoreインスタンスが停止した状態で実行されるものであり、ストアの各ストレージ・ノード上で実行される必要があります。

  7. 各ノードでストレージ・ノード・エージェント(SNA)を起動します。

    ノート:

    SNAを開始する前に、環境変数MALLOC_ARENA_MAX1に設定します。MALLOC_ARENA_MAX1に設定すると、メモリー使用量が指定されたヒープ・サイズに制限されます。

    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar start -root KVROOT&
  8. KVStoreサーバー・ホスト(node01)上で、runadminをセキュリティ・モードで起動します。このためには、次のコマンドを使用します。

    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar \
    runadmin -port 5000 -host node01 \
    -security KVROOT/security/client.security 

    このコマンドにより、SSLが接続メソッドとして設定され、生成されたトラストストア・ファイル(client.security)のコピーが指定されます。SSLプロパティの詳細は、「SSL通信プロパティ」を参照してください。

  9. 管理ユーザーを作成します。パスワードは、パスワードの複雑度ポリシーに記載されているセキュリティ・ポリシーに準拠する必要があります。この場合、ユーザーrootが定義されます。

    kv-> plan create-user -name root -admin -wait
    Enter the new password: ********
    Re-enter the new password: ********
    Executed plan 8, waiting for completion...
    Plan 8 ended successfully 

    ユーザーの作成および管理の詳細は、「ユーザー管理」を参照してください。

  10. ウォレットを作成し、管理ユーザー(root)のクライアント資格証明を有効化します。

    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar securityconfig \
    wallet create -dir KVROOT/security/login.wallet
    java -Xmx64m -Xms64m \
    -jar KVHOME/lib/kvstore.jar securityconfig wallet secret \
    -dir KVROOT/security/login.wallet -set -alias root
    Enter the secret value to store: ********
    Re-enter the secret value for verification: ********
    Secret created
    

    ノート:

    パスワードは、前のステップで管理用に設定したパスワードと一致する必要があります。

  11. この時点では、rootユーザーとしてストアに接続できます。ログインするには、-username <user> runadmin引数を使用するか、セキュリティ・ファイルに"oracle.kv.auth.username"プロパティを指定します。

    この例では、oracle.kv.securityプロパティが使用されます。ログインするには、次のコマンドを使用します。

    java -Xmx64m -Xms64m \
    -Doracle.kv.security=adminlogin \
    -jar KVHOME/lib/kvstore.jar runadmin -port 5000 -host localhost
    Logged in admin as root >

    ファイルadminlogin.txtは、認証用に追加のプロパティ設定が含まれる、client.securityファイルのコピーである必要があります。このファイルには次のような内容が含まれます。

    oracle.kv.auth.username=root
    oracle.kv.auth.wallet.dir=KVROOT/security/login.wallet
    oracle.kv.transport=ssl
    oracle.kv.ssl.trustStore=KVROOT/security/client.trust
    oracle.kv.ssl.protocols=TLSv1.2,TLSv1.1,TLSv1
    oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL) 

    詳細は、「ユーザー・ログイン」を参照してください。