KerberosによるOracle NoSQL Databaseのセキュア・インストールの実行
Kerberosは、新規または既存のOracle NoSQL Databaseセキュア・インストールに追加できます。
高いレベルで、Kerberosを使用するようにOracle NoSQL Databaseインストールを構成するには、まず、Oracle NoSQL DatabaseをKDCのサービス・プリンシパルとして登録し、各データベース・サーバー・ノードに対応するキータブ・ファイルを抽出する必要があります。次に、クライアントのログインを許可するには、ユーザー・プリンシパルをKDCに追加し、プリンシパルと同じ名前のマップ済ユーザー・アカウントをデータベースに作成する必要があります。最後に、CLIまたはkvclientドライバを介してログインを実行できます。
新規インストールへのKerberosの追加
Oracle NoSQL DatabaseをKerberos認証を使用してインストールするには、次のようにします。
ノート:
次の例では、KDC上に管理/管理プリンシパルを構成し、そのキータブ(kadm5.keytab)をOracle NoSQL Databaseストレージ・ノードに配布したことを前提としています。詳細は、Kerberos管理ユーティリティの構成を参照してください。
-
Kerberosセキュリティを使用して基本ストア構成を設定するには、
-store-security configure
フラグおよび-external-auth kerberos
フラグを指定してmakebootconfig
ユーティリティを実行します。java -Xmx64m -Xms64m \ -jar KVHOME/lib/kvstore.jar makebootconfig \ -root KVROOT -port 5000 \ -host node01 -harange 5010,5020 \ -capacity 3 \ -store-security configure \ -external-auth kerberos \ -instance-name node01.example.com \ -kadmin-keytab /kerberos/kadm5.keytab \ -admin-principal admin/admin
-
この例では、
-store-security configure
が使用されるため、security configuration
ユーティリティがmakebootconfigプロセスの一部として実行され、キーストア・ファイルに使用するパスワードの入力が求められます。Enter a password for the Java KeyStore:
-
ストアのパスワードを入力してから、検証のために再入力します。この場合、Oracle Walletが使用されます。Oracle WalletおよびKerberosのサポートは、Oracle NoSQL Database EEバージョンでのみ使用できます。
Enter a password for the Java KeyStore: *********** Re-enter the KeyStore password for verification: ***********
-
この場合、
-kadmin-keytab
は、前に配布した管理/管理キータブ・ファイルを指します。認証されると、構成ツールによって、いくつかのセキュリティ関連ファイルが自動生成されます。Login Kerberos admin via keytab /kerberos/kadm5.keytab Adding principal oraclenosql/node01.example.com@EXAMPLE.COM Authenticating as principal admin/admin with keytab /kerberos/kadm5.keytab Extracting keytab KVROOT/security/store.keytab Created files: security/security.xml security/store.keys security/store.trust security/store.wallet/cwallet.sso security/store.keytab security/client.security security/client.trust
-
マルチホスト・ストア環境では、securityディレクトリおよびここに含まれるすべてのファイルを、最初のノードから、ストレージ・ノードをホストする各サーバーにコピーし、内部クラスタ認証を設定する必要があります。たとえば、次のコマンドでは、現在のノード(node01)で別のノードを表示したりアクセスできることを前提としています。
cp -R node01/KVROOT/security node02/KVROOT/ cp -R node01/KVROOT/security node03/KVROOT/
ノート:
現在のノードで別のノードのファイルが表示されない場合にコピーを実行するには、セキュア・コピー・プロトコル(SCP)などのリモート・コピー・コマンドの使用が必要になる場合があります。
-
他の2つのノードでmakebootconfigを実行します。
-
Kerberosを追加し、個別のサービス・プリンシパルとキータブを作成します。
java -Xmx64m -Xms64m \ -jar KVHOME/lib/kvstore.jar makebootconfig \ -root KVROOT -port 6000 \ -host node02 -harange 6010,6020 \ -capacity 3 \ -store-security configure \ -external-auth kerberos \ -instance-name node02.example.com \ -kadmin-keytab /kerberos/kadm5.keytab \ -admin-principal admin/admin
java -Xmx64m -Xms64m \ -jar KVHOME/lib/kvstore.jar makebootconfig \ -root KVROOT -port 7000 \ -host node03 -harange 7010,7020 \ -capacity 3 \ -store-security configure \ -external-auth kerberos \ -instance-name node03.example.com \ -kadmin-keytab /kerberos/kadm5.keytab \ -admin-principal admin/admin
ノート:
node2とnode3のサービス・プリンシパル名は、同じサービス名oraclenosqlを使用していますが、インスタンス名が異なります。これらのキータブ・ファイルは異なり、プリンシパルoraclenosql/node2.example.comおよびoraclenosql/node3.example.comのキーがそれぞれ含まれています。
-
ストアがすべてのノードで同じサービス・プリンシパルを使用している場合にKerberos認証を有効にするには、次のようにします。
java -Xmx64m -Xms64m \ -jar KVHOME/lib/kvstore.jar makebootconfig \ -root KVROOT -port 6000 \ -host node02 -harange 6010,6020 \ -capacity 3 \ -store-security enable
java -Xmx64m -Xms64m \ -jar KVHOME/lib/kvstore.jar makebootconfig \ -root KVROOT -port 6000 \ -host node03 -harange 6010,6020 \ -capacity 3 \ -store-security enable
ノート:
ステップ1で作成されたサービス・プリンシパルはoraclenosql/node01.example.comです。インスタンス名は、nosqlのような、より一般的なものに置き換えることができます。前述の例では、node02とnode03はすべて、新しいファイルを個別に作成することなく、同じサービス・プリンシパルとキータブ・ファイルを使用しています。
-
-
各ノードでストレージ・ノード・エージェント(SNA)を起動します。
ノート:
SNAを開始する前に、環境変数
MALLOC_ARENA_MAX
を1
に設定します。MALLOC_ARENA_MAX
を1
に設定すると、メモリー使用量が指定されたヒープ・サイズに制限されます。nohup java -Xmx64m -Xms64m \ -jar KVHOME/lib/kvstore.jar start -root KVROOT&
セキュアな構成の新規作成されたストアの初回起動時には、アクセスを認証するための使用可能なユーザー定義がありません。不正アクセスのリスクを抑えるために、管理によって許可されるのは実行中のホストからの接続のみとなります。このセキュリティ手段は、不正アクセスに対する完全な予防策にはなりません。KVStoreが動作するマシンへのローカル・アクセスを可能にしないことが重要です。また、完全認証なしで管理にアクセスできる期間を最小限にするために、このステップの直後に次のステップを実行する必要があります。セキュアなストアの保守の詳細は、「構成の保護ガイドライン」を参照してください。
-
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
- KDCでユーザー・プリンシパルを登録します。これを行うには、
kadmin
またはkadmin.local
を使用します。kadmin.local: addprinc krbuser@EXAMPLE.COM Enter password for principal: "krbuser@EXAMPLE.COM": *********** Re-enter password for principal: "krbuser@EXAMPLE.COM": **********
-
KDCでユーザー・プリンシパルを登録した後、そのユーザーをOracle NoSQL Databaseで作成します。ユーザー名は、KDCでの完全なプリンシパル名と一致する必要があります(レルム名を含む)。この場合、ユーザー
krbuser
が定義されます。kv-> execute 'CREATE USER "krbuser@EXAMPLE.COM" IDENTIFIED EXTERNALLY'
ユーザーの作成および管理の詳細は、「ユーザー管理」を参照してください。
-
この時点では、krbuserとしてストアに接続できます。ログインするには、資格証明キャッシュまたはキータブ・ファイルを使用するか、プリンシパル・パスワードを入力します。
この例では、キータブ・ファイルが使用されます。これを行うには、まず、
kadmin.local
を使用して、KDCホスト上のプリンシパルkrbuser@EXAMPLE.COMのキータブを抽出します。kadmin.local: ktadd -k /tmp/mykeytab krbuser@EXAMPLE.COM Entry for principal krbuser@EXAMPLE.COM added to keytab WRFILE:/tmp/mykeytab.
-
krbuser@EXAMPLE.COMプリンシパルを使用してOracle NoSQL Databaseに自動的にログインするクライアント・マシンに、キータブ・ファイルをコピーします。
-
Kerberosセキュリティ・プロパティ(キータブ・ファイルの場所を含む)を、セキュリティ・ファイルに指定するか、または
KVStoreConfig
クラスを使用して、各クライアントで設定します。この例では、セキュリティ・ファイル(mylogin.txt)が使用されます。ログインするには、
oracle.kv.securityプロパティ
を使用して、ファイルの場所を指定します。次に例を示します。java -Xmx64m -Xms64m \ -Doracle.kv.security=mylogin.txt \ -jar KVHOME/lib/kvstore.jar runadmin -port 5000 -host localhost Logged in admin as krbuser
ファイル
mylogin.txt
は、Kerberos認証用に追加のプロパティ設定が含まれる、client.security
ファイルのコピーである必要があります。このファイルには次のような内容が含まれます。oracle.kv.auth.kerberos.keytab = kerberos/mykeytab oracle.kv.auth.username = krbuser@EXAMPLE.COM oracle.kv.auth.external.mechanism=kerberos oracle.kv.auth.kerberos.services= node01:oraclenosql/node01.example.com@EXAMPLE.COM oracle.kv.auth.kerberos.mutualAuth=false
この場合、Oracle NoSQL Databaseではキータブを読み取り、パスワードを必要とせずにKerberosにログインします。
Kerberosセキュリティ・プロパティの詳細は、Kerberosセキュリティ・プロパティを参照してください。
既存のセキュア・インストールへのKerberosの追加
既存のOracle NoSQL Databaseセキュア・インストールにKerberosを追加するには、次のようにします。
ノート:
次の例では、KDC上に管理/管理プリンシパルを構成し、そのキータブ(kadm5.keytab)をOracle NoSQL Databaseストレージ・ノードに配布したことを前提としています。詳細は、Kerberos管理ユーティリティの構成を参照してください。
ノート:
Kerberosインストール/キータブが強力な暗号化タイプ(256ビットのキーによるAESなど)を使用するように構成される場合は、JCE Unlimited Strength Jurisdiction Policy Filesを取得して、JDK/JREにインストールする必要があります。これらのファイルはインストール内にすでに存在している場合があることに注意してください。その場合は、更新する必要があります。
-
KVStoreインスタンスを停止します。
java -Xmx64m -Xms64m \ -jar KVHOME/lib/kvstore.jar stop \ -root KVROOT
-
config add-kerberos
コマンドを使用して、Kerberos認証を追加します。java -Xmx64m -Xms64m \ -jar KVHOME/lib/kvstore.jar securityconfig \ config add-kerberos -root KVROOT \ -secdir security \ -admin-principal admin/admin Adding principal oraclenosql@EXAMPLE.COM Password for admin/admin: ******* Created files: security/store.keytab Updated Kerberos configuration
ノート:
このコマンドの実行中、
securityconfig
ツールにより参照先ファイルの存在が検証され、セキュリティ構成を参照するために指定のブートストラップ構成ファイルが更新されます。このプロセスは通常、KVStoreインスタンスが停止した状態で実行されるものであり、ストアの各ストレージ・ノード上で実行される必要があります。 -
各ノードでストレージ・ノード・エージェント(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.
このコマンドにより、SSLが接続メソッドとして設定され、生成されたトラストストア・ファイル(client.security)のコピーが指定されます。SSLプロパティの詳細は、「SSL通信プロパティ」を参照してください。
- KDCでユーザー・プリンシパルを登録します。これを行うには、
kadmin
またはkadmin.local
を使用します。kadmin.local: addprinc krbuser@EXAMPLE.COM Enter password for principal: "krbuser@EXAMPLE.COM": *********** Re-enter password for principal: "krbuser@EXAMPLE.COM": **********
-
KDCでユーザー・プリンシパルを登録した後、そのユーザーをOracle NoSQL Databaseで作成します。ユーザー名は、KDCでの完全なプリンシパル名と一致する必要があります(レルム名を含む)。この場合、ユーザー
krbuser
が定義されます。kv-> execute 'CREATE USER "krbuser@EXAMPLE.COM" IDENTIFIED EXTERNALLY'
ユーザーの作成および管理の詳細は、「ユーザー管理」を参照してください。
-
この時点では、krbuserとしてストアに接続できます。ログインするには、資格証明キャッシュまたはキータブ・ファイルを使用するか、プリンシパル・パスワードを入力します。
この例では、キータブ・ファイルが使用されます。これを行うには、まず、
kadmin.local
を使用して、KDCホスト上のプリンシパルkrbuser@EXAMPLE.COMのキータブを抽出します。kadmin.local: ktadd -k /tmp/mykeytab krbuser@EXAMPLE.COM Entry for principal krbuser@EXAMPLE.COM added to keytab WRFILE:/tmp/mykeytab.
-
krbuser@EXAMPLE.COMプリンシパルを使用してOracle NoSQL Databaseに自動的にログインする任意のクライアント・マシンに、キータブ・ファイルをコピーします。
-
Kerberosセキュリティ・プロパティ(キータブ・ファイルの場所を含む)を、セキュリティ・ファイルに指定するか、または
KVStoreConfig
クラスを使用して、各クライアントで設定します。この例では、セキュリティ・ファイル(mylogin.txt)が使用されます。ログインするには、
oracle.kv.securityプロパティ
を使用して、ファイルの場所を指定します。次に例を示します。java -Xmx64m -Xms64m \ -Doracle.kv.security=mylogin.txt \ -jar KVHOME/lib/kvstore.jar runadmin -port 5000 -host localhost Logged in admin as krbuser
ファイル
mylogin.txt
は、Kerberos認証用に追加のプロパティ設定が含まれる、client.security
ファイルのコピーである必要があります。このファイルには次のような内容が含まれます。oracle.kv.auth.kerberos.keytab = kerberos/mykeytab oracle.kv.auth.username = krbuser@EXAMPLE.COM oracle.kv.auth.external.mechanism=kerberos oracle.kv.auth.kerberos.services= node01:oraclenosql/node01.example.com@EXAMPLE.COM oracle.kv.auth.kerberos.mutualAuth=false
この場合、Oracle NoSQL Databaseではキータブを読み取り、パスワードを必要とせずにKerberosにログインします。
Kerberosセキュリティ・プロパティの詳細は、Kerberosセキュリティ・プロパティを参照してください。