Kerberosセキュリティ・プロパティ
Kerberosセキュリティ・プロパティを設定する場合、ログイン・ファイルまたはKVStoreConfig
クラスを使用して設定できます。
Kerberosの設定に必要な最小限の構成には、次のプロパティが含まれます。
-
oracle.kv.auth.username
Oracle NoSQL DatabaseでKerberosユーザー名を指定します。KDCでのプリンシパル名、およびデータベースで作成されたKerberosユーザーアカウント名と一致する必要があります。クライアントでは、このオプションの値を使用して、クライアントとサーバー間の認証に使用される資格証明を作成します。プリンシパルの短縮名がこのフィールドで指定されている場合は、
oracle.kv.auth.kerberos.realm
も指定する必要があります。KerberosCredentialsを使用しない場合、このフィールドは、ログイン・ファイルまたはKVStoreConfigのセキュリティ・プロパティ・フィールドで指定する必要があります。
-
oracle.kv.auth.kerberos.services
各ヘルパー・ホストに関連付けられているサービスのKerberosプリンシパルを指定します。推奨されているとおり、各ホストで独自のプリンシパル名を含む異なるプリンシパルを使用する場合に、このプロパティの設定が必要になります。すべてのプリンシパルで、同じサービスとレルムを指定する必要があります。このプロパティが設定されていない場合、クライアントでは、すべてのヘルパー・ホストのサービスにプリンシパル名として
oraclenosql
を使用します。各エントリでは、ヘルパー・ホスト名の後にKerberosサービス名、さらにオプションでインスタンス名とレルム名を指定する必要があります。各エントリはカンマで区切られ、空白は無視されます。いずれかのエントリでレルムが指定されていない場合、各エントリでは、Kerberos構成ファイルに指定されているデフォルト・レルムを使用します。いずれかのエントリにレルム名が指定されている場合、すべてのエントリで同じ名前を指定する必要があります。構文は次のとおりです。
host:service[:instance[@realm]][, host:service[:instance[@realm]]]*
次に例を示します。
host37:nosql/host37@EXAMPLE.COM, host53:nosql/host53@EXAMPLE.COM
-
oracle.kv.auth.kerberos.keytab
キータブ・ファイルのデフォルトの場所は、Kerberos構成ファイルで指定されます。そこでキータブが指定されていない場合は、ファイル
user.home/krb5.keytab
が検索されます。 -
oracle.kv.auth.kerberos.realm
クライアントのログイン・プリンシパルを指定する際に短縮名を使用する場合は、ユーザー・プリンシパルのKerberosレルムを指定します。
-
oracle.kv.auth.kerberos.ccache
Kerberosチケット・キャッシュのパスを指定します。このフィールドはオプションです。デフォルトのチケットキャッシュは、/tmp/krbcc_<uid>です。資格証明キャッシュが見つからない場合は、ファイルuser.home/krb5cc_user.nameが検索されます。独自のチケット・キャッシュを使用する場合は、このフィールドをチケット・キャッシュのパスに設定します。
-
oracle.kv.auth.kerberos.mutualAuth
クライアントで相互認証を使用するかどうかを指定します。この値がtrueに設定されている場合、クライアントはログイン結果でサーバーのIDを認証します。
デフォルト値は
false
であるため、相互認証は無効になっています。
セキュリティ・ログイン・ファイルでのセキュリティ・プロパティの設定
セキュリティ・ファイルにプロパティを設定する場合は、oracle.kv.security
Javaシステム・プロパティを設定して、ログイン・ファイルの場所を指定します。次に例を示します。
java -Doracle.kv.security=kerberoslogin.txt HelloWorld
ここで、ファイルkerberoslogin.txtは、Kerberos認証用に追加のプロパティ設定が含まれる、client.securityファイルのコピーである必要があります。このファイルには次のような内容が含まれます。
oracle.kv.auth.username=krbuser@EXAMPLE.COM
oracle.kv.auth.external.mechanism=kerberos
oracle.kv.auth.kerberos.keytab=/kerberos/krb5.keytab
oracle.kv.auth.kerberos.services=
node01:oraclenosql/node01.example.com@EXAMPLE.COM
oracle.kv.auth.kerberos.mutualAuth=false
java.security.krb5.conf
Javaシステム・プロパティを指定して、Kerberos構成ファイルの場所を指定できます。次に例を示します。
java -Djava.security.krb5.conf=/kerberos/krb5.conf \
-Doracle.kv.security=kerberoslogin.txt HelloWorld
java.security.krb5.realm
を使用して、デフォルト・レルムを設定することもできます。デフォルトのKDCを設定するには、java.security.krb5.kdc
を使用します。
注意:
レルムとKDCの両方のJavaシステム・プロパティを設定するか、またはどちらも設定しません。これらのプロパティは、krb5.conf
ファイルで指定されたデフォルトのレルムとKDCの値より優先されます。
KVStoreConfigによるセキュリティ・プロパティの設定
KVStoreConfig
を使用して、セキュリティ・プロパティを設定することもできます。次に例を示します。
Properties securityProps = new Properties();
securityProps.setProperty("oracle.kv.auth.username",
"krbuser@EXAMPLE.COM");
securityProps.setProperty("oracle.kv.auth.external.mechanism",
"kerberos");
securityProps.setProperty("oracle.kv.auth.kerberos.keytab",
"/kerberos/krb5.keytab");
securityProps.setProperty("oracle.kv.auth.kerberos.services",
"node01:oraclenosql/node01.example.com@EXAMPLE.COM");
securityProps.setProperty("oracle.kv.auth.kerberos.ccache",
"/kerberos/krbcc_501");
securityProps.setProperty("oracle.kv.auth.kerberos.mutualAuth",
"false");
KVStoreConfig kvConfig = new KVStoreConfig("mystore", "node01:5000");
kvConfig.setSecurityProperties(securityProps);
セキュリティ・プロパティを使用したログイン
セキュリティ・プロパティを使用してOracle NoSQL Databaseにログインする場合は、資格証明キャッシュ、キータブ・ファイルまたはプリンシパル・パスワードを使用できます。
注意:
管理CLIを使用して接続する際に、資格証明キャッシュまたはキータブ・ログインの試行に失敗した場合、Oracle NoSQL Databaseにより、プリンシパルのパスワードを入力するよう求められます。
資格証明キャッシュの使用方法
資格証明キャッシュを使用してOracle NoSQL Databaseにログインするには、次のようにします。
-
kinit
Kerberosツールを実行して、資格証明キャッシュに資格証明を保存します。たとえば、クライアント・プリンシパル
krbuser@EXAMPLE.COM
をKDCに対して認証するには、次のようにします。kinit krbuser@EXAMPLE.COM Password for krbuser@EXAMPLE.COM: ********
付与されたチケット発行チケット(TGT)は、後で認証できるようにデフォルトの資格証明キャッシュに保存されます。
-
個別のキャッシュを生成することもできます。これを行うには、次のコマンドを実行します。
kinit krbuser@EXAMPLE.COM -c krbcc_krbuser
-
セキュリティ・ログイン・ファイルで
oracle.kv.auth.kerberos.ccache
を指定するか、KVStoreConfig
を使用して、ログインを実行します。この場合は、セキュリティ・ログイン・ファイルが使用されます。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.ccache=/kerberos/krbcc_krbuser 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にログインします。
資格証明キャッシュの使用方法
資格証明キャッシュを使用してOracle NoSQL Databaseにログインするには、次のようにします。
-
kinit
Kerberosツールを実行して、資格証明キャッシュに資格証明を保存します。たとえば、クライアント・プリンシパルkrbuser@EXAMPLE.COMをKDCに対して認証するには、次のようにします。
kinit krbuser@EXAMPLE.COM Password for krbuser@EXAMPLE.COM: ********
付与されたチケット発行チケット(TGT)は、後で認証できるようにデフォルトの資格証明キャッシュに保存されます。
-
個別のキャッシュを生成することもできます。これを行うには、次のコマンドを実行します。
kinit krbuser@EXAMPLE.COM -c krbcc_krbuser
-
セキュリティ・ログイン・ファイルで
oracle.kv.auth.kerberos.ccache
を指定するか、KVStoreConfig
を使用して、ログインを実行します。この場合は、セキュリティ・ログイン・ファイルが使用されます。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.ccache=/kerberos/krbcc_krbuser 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にログインします。
キータブの使用方法
キータブを使用してOracle NoSQL Databaseにログインするには、次のようにします。
-
kinit
Kerberosツールを実行して、キータブを抽出します。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
クラスを使用して、各クライアントで設定します。この例では、セキュリティ・ファイル(ログイン)が使用されます。ログインするには、
oracle.kv.auth.kerberos.keytab
を使用してキータブの場所を指定します。oracle.kv.auth.username
を使用して、ユーザー名を指定する必要もあります。たとえば、ログイン・ファイルには次のようなコンテンツが含まれます。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セキュリティ・プロパティを参照してください。