複数ノードのセキュア・デプロイメント
次の各例では、Oracle NoSQL Databaseの新規または既存の複数ホスト・デプロイメントにセキュリティを追加する方法を説明します。
新規インストールへのセキュリティの追加
Oracle NoSQL Databaseの3ノードのcapacity=3 (3x3)セキュア・デプロイメントをインストールするには、次のようにします。
-
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
-
この例では、
-store-security configure
が使用されるため、security configuration
ユーティリティがmakebootconfigプロセスの一部として実行され、キーストア・ファイルに使用するパスワードの入力が求められます。Enter a password for the Java KeyStore:
-
ストアのパスワードを入力してから、検証のために再入力します。たとえば、ウォレットを使用している場合、
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
-
マルチホスト・ストア環境では、securityディレクトリおよびここに含まれるすべてのファイルを、最初のノードから、ストレージ・ノードをホストする各サーバーにコピーし、内部クラスタ認証を設定する必要があります。たとえば、次のコマンドでは、現在のノード(node01)で別のノードを表示したりアクセスできることを前提としています。
cp -R node01/KVROOT/security node02/KVROOT/ cp -R node01/KVROOT/security node03/KVROOT/
ノート:
現在のノードで別のノードのファイルが表示されない場合にコピーを実行するには、scpなどのリモート・コピー・コマンドの使用が必要な場合があります。
-
-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
-
各ノードでストレージ・ノード・エージェント(SNA)を起動します。
ノート:
SNAを開始する前に、環境変数
MALLOC_ARENA_MAX
を1
に設定します。MALLOC_ARENA_MAX
を1
に設定すると、メモリー使用量が指定されたヒープ・サイズに制限されます。nohup java -Xmx64m -Xms64m \ -jar KVHOME/lib/kvstore.jar start -root KVROOT&
-
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
-
configure -name
コマンドを使用すると、構成するKVStoreの名前を指定できます。kv-> configure -name mystore Store configured: mystore
-
管理ユーザーを作成します。パスワードは、パスワードの複雑度ポリシーに記載されているセキュリティ・ポリシーに準拠する必要があります。この場合、ユーザー
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
ユーザーの作成および管理の詳細は、「ユーザー管理」を参照してください。
-
ウォレットを作成し、管理ユーザー(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
ノート:
パスワードは、前のステップで管理用に設定したパスワードと一致する必要があります。
-
この時点では、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)
詳細は、「ユーザー・ログイン」を参照してください。
-
管理でログインした後は、何人かのユーザーを作成できます。
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
-
ウォレットを作成し、各ユーザーのクライアント資格証明を有効化します。通常、すべての一般ユーザーについてこのウォレットを再利用します。
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
ノート:
各パスワードは、前のステップでユーザーごとに設定したパスワードと一致する必要があります。このウォレットは、管理ウォレットとは無関係です。同じウォレットを使用して管理/ユーザー・パスワードを格納できます。
-
この時点では、ユーザーとしてストアに接続できます。ログインするには、
-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インストールにセキュリティを追加するには、次のようにします。
-
各ノードのKVStoreインスタンスを停止します。
java -Xmx64m -Xms64m \ -jar KVHOME/lib/kvstore.jar stop \ -root KVROOT
-
securityconfig
ユーティリティを実行し、セキュリティを備えた基本ストア構成を設定します。java -Xmx64m -Xms64m \ -jar KVHOME/lib/kvstore.jar securityconfig
-
config create
コマンドを-pwdmgr
オプションとともに使用して、ストアへのアクセスに必要なパスワードの保持に使用されるメカニズムを指定します。この場合、Oracle Walletが使用されます。config create -pwdmgr wallet -root KVROOT Enter a password for the Java KeyStore:
-
ストアのパスワードを入力してから、検証のために再入力します。構成ツールによって、いくつかのセキュリティ関連ファイルが自動生成されます。
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
-
マルチホスト・ストア環境では、securityディレクトリおよびここに含まれるすべてのファイルを、最初のノードから、ストレージ・ノードをホストする各サーバーにコピーし、内部クラスタ認証を設定する必要があります。たとえば、次のコマンドでは、現在のノード(node01)で別のノードを表示したりアクセスできることを前提としています。
cp -R node01/KVROOT/security node02/KVROOT/ cp -R node01/KVROOT/security node03/KVROOT/
ノート:
現在のノードで別のノードのファイルが表示されない場合にコピーを実行するには、scpなどのリモート・コピー・コマンドの使用が必要な場合があります。
-
各ノードで
config add-security
コマンドを使用して、作成したセキュリティ構成を追加します。security-> config add-security -root KVROOT -secdir security
ノート:
このコマンドの実行中、
securityconfig
ツールにより参照先ファイルの存在が検証され、セキュリティ構成を参照するために指定のブートストラップ構成ファイルが更新されます。このプロセスは通常、KVStoreインスタンスが停止した状態で実行されるものであり、ストアの各ストレージ・ノード上で実行される必要があります。 -
各ノードでストレージ・ノード・エージェント(SNA)を起動します。
ノート:
SNAを開始する前に、環境変数
MALLOC_ARENA_MAX
を1
に設定します。MALLOC_ARENA_MAX
を1
に設定すると、メモリー使用量が指定されたヒープ・サイズに制限されます。java -Xmx64m -Xms64m \ -jar KVHOME/lib/kvstore.jar start -root KVROOT&
-
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通信プロパティ」を参照してください。
-
管理ユーザーを作成します。パスワードは、パスワードの複雑度ポリシーに記載されているセキュリティ・ポリシーに準拠する必要があります。この場合、ユーザー
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
ユーザーの作成および管理の詳細は、「ユーザー管理」を参照してください。
-
ウォレットを作成し、管理ユーザー(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
ノート:
パスワードは、前のステップで管理用に設定したパスワードと一致する必要があります。
-
この時点では、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)
詳細は、「ユーザー・ログイン」を参照してください。