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にログインするには、次のようにします。

  1. kinit  Kerberosツールを実行して、資格証明キャッシュに資格証明を保存します。

    たとえば、クライアント・プリンシパルkrbuser@EXAMPLE.COMをKDCに対して認証するには、次のようにします。

    kinit krbuser@EXAMPLE.COM
    Password for krbuser@EXAMPLE.COM: ******** 

    付与されたチケット発行チケット(TGT)は、後で認証できるようにデフォルトの資格証明キャッシュに保存されます。

  2. 個別のキャッシュを生成することもできます。これを行うには、次のコマンドを実行します。

    kinit krbuser@EXAMPLE.COM -c krbcc_krbuser
  3. セキュリティ・ログイン・ファイルで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にログインするには、次のようにします。

  1. kinit Kerberosツールを実行して、資格証明キャッシュに資格証明を保存します。

    たとえば、クライアント・プリンシパルkrbuser@EXAMPLE.COMをKDCに対して認証するには、次のようにします。

    kinit krbuser@EXAMPLE.COM
    Password for krbuser@EXAMPLE.COM: ******** 

    付与されたチケット発行チケット(TGT)は、後で認証できるようにデフォルトの資格証明キャッシュに保存されます。

  2. 個別のキャッシュを生成することもできます。これを行うには、次のコマンドを実行します。

    kinit krbuser@EXAMPLE.COM -c krbcc_krbuser
  3. セキュリティ・ログイン・ファイルで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にログインするには、次のようにします。

  1. kinit Kerberosツールを実行して、キータブを抽出します。

    kadmin.local:  ktadd -k /tmp/mykeytab krbuser@EXAMPLE.COM
    Entry for principal krbuser@EXAMPLE.COM added to 
    keytab WRFILE:/tmp/mykeytab. 
  2. krbuser@EXAMPLE.COMプリンシパルを使用してOracle NoSQL Databaseに自動的にログインする任意のクライアント・マシンに、キータブ・ファイルをコピーします。

  3. 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セキュリティ・プロパティを参照してください。