認証
セキュリティ・ログイン
セキュリティ・ログインには次のURLを使用します。
/V0/nosql/admin/login
ノート:
管理Webサービスにアクセスするには、admin-web-port
を構成し、管理Webサービスを起動する必要があります。Oracle NoSQL Database管理者ガイドでmakebootconfigを参照してください。
認可ヘッダーにおいて、base64
でエンコードされた基本ログイン情報を指定する必要があります。ここで接頭辞としてBasic
が使用されていることに注意してください。
Authorization:Basic base64_encode(user_name:password)
ログイン・インタフェースによって、認証情報の検証後に新しいセキュリティ・セッションが作成され、ログイン・トークンが返されます。
{
"operation" : "login"
"returnCode" : "5000"
"description" : "Operation ended successfully"
"returnValue" : {
"token" : "login_token_in_hex_string"
}
}
ログイン・トークンのセキュリティ
前述の返されたログイン・トークンはユーザー資格証明に相当します。トークンは、ログアウトするか有効期限をすぎると失効します。未許可アクセスから守るためにログイン・トークンをその有効期間の間保護する必要があります。
ログイン・トークンを取得した後、管理Webサービス上でリクエストを実行する前に、認可ヘッダーにおいてそのトークンを設定する必要があります。ここで接頭辞としてBearer
が使用されていることに注意してください。
Authorization:Bearer login_token_in_hex_string
管理Webサービスでは、すべてのユーザー・リクエストのアクセス制御のために、認証および認可が確認されます。
データ暗号化
データ暗号化が必ず実行されるようにするには、保護された管理Webサービスへのアクセス時に、client.trust
ファイルから取得した証明書情報を提供する必要があります。client.trust
ファイルは、ストレージ・ノードのsecurity
フォルダの下に作成されます。具体的に述べると、このファイルは、クライアントがKVStoreにアクセスするためのものです。
次に、client.trust
ファイルから取得した証明書情報の使用例を示します。
keytool -exportcert -rfc -keystore KVROOT/security/client.trust -alias mykey \
-file /tmp/client_security_dir/security/client.pem
cURLコマンドではデフォルトのホスト名検証機能が使用されるため、client.pem
ファイル内のホスト名エンティティは、デフォルトではNoSQL
になります。cURL、またはカスタマイズされたホスト名検証機能を設定できないその他のツールを使用している場合は、/etc/hosts
を、ターゲットNoSQLサーバー・マシンのホスト名がNoSQL
と一致するよう変更する必要があります。次に例を示します。
#/etc/hosts file
127.0.0.1 localhost NoSQL
/etc/hosts
ファイルを変更した後、cURLコマンドを次のように使用します。
curl -i "https://NoSQL:30000/V0/nosql/admin/login" -u username:password \
--cacert /tmp/client_security_dir/security/client.pem --tlsv1
管理サービスが実行されているマシンから匿名でログインする場合は、次のようにcURLコマンドを使用します。
curl -i "https://NoSQL:30000/V0/nosql/admin/login" \
--cacert /tmp/client_security_dir/security/client.pem --tlsv1
セキュリティ・セッション
管理Webサービスでは、RMIベースの既存のNoSQLセキュリティ・パラメータと同じセキュリティ・セッション・パラメータが使用されます。セキュリティ・セッションのタイムアウトは、次のパラメータで制御します。
sessionTimeout = 24 hours
ログアウト
ログアウトするには、次のURLを使用します。
/V0/nosql/admin/logout
既存のセッションからログアウトするには、Bearer
接頭辞内でログイン・トークンを指定します。次に例を示します。
curl -i "https://NoSQL:30000/V0/nosql/admin/logout" \
--cacert /tmp/client_security_dir/security/client.pem \
-H "Authorization:Bearer login_token_in_hex_string" --tlsv1
ワークフロー
以下に、ログインし、ログイン・トークンを使用してセキュリティ・リソースにアクセスし、ログアウトする方法の例を示します。
-
KVStoreによって提供されている
client.trust
ファイルを使用して、pem
形式で証明書ファイルを作成します。keytool -exportcert -rfc -keystore KVROOT/security/client.trust -alias mykey \ -file /tmp/client_security_dir/security/client.pem
-
ターゲットNoSQLサーバー・マシンのホスト名が
NoSQL
と一致するように、/etc/hosts
ファイルを変更します。#/etc/hosts file 127.0.0.1 localhost NoSQL
-
admin-web-port
が構成されており管理Webサービスが起動していることを確認します。次のように、ログイン・トークンを取得するためにログイン・インタフェースにアクセスします。$ curl -i "https://NoSQL:20001/V0/nosql/admin/login" -u userName:password \ --cacert "/tmp/client_security_dir/security/client.pem" --tlsv1 HTTP/1.1 200 OK access-control-allow-origin: * content-type: application/json content-length: 221 { "operation" : "login", "returnCode" : 5000, "description" : "Operation ends successfully", "returnValue" : { "token" : "login_token_in_hex_string" } }
-
次のように、ログイン・トークンを使用して
show topology
リクエストを実行します。$ curl -i -X POST "https://NoSQL:20001/V0/nosql/admin/topology" \ -d '{"command":"show"}' --cacert "/tmp/client_security_dir/security/client.pem" \ -H "Authorization:Bearer login_token_in_hex_string" --tlsv1 HTTP/1.1 200 OK access-control-allow-origin: * content-type: application/json content-length: 1001 { "operation" : "show topology", "returnCode" : 5000, "description" : "Operation ends successfully", "returnValue" : { "storeName" : "mystore", "numPartitions" : 20, "sequenceNumber" : 24, "zns" : [ { "resourceId" : "zn1", "name" : "1", "repFactor" : 1, "type" : "PRIMARY", "allowArbiters" : false, "masterAffinity" : false } ], "sns" : [ { "resourceId" : "sn1", "hostname" : "localhost", "registryPort" : 20000, "zone" : { "resourceId" : "zn1", "name" : "1", "repFactor" : 1, "type" : "PRIMARY", "allowArbiters" : false, "masterAffinity" : false }, "capacity" : "1", "rns" : [ { "resourceId" : "rg1-rn1" } ], "ans" : [ ] } ], "shards" : [ { "resourceId" : "rg1", "numPartitions" : 20, "rns" : [ { "resourceId" : "rg1-rn1", "snId" : "sn1" } ], "ans" : [ ] } ] } }
-
リクエストの実行後、セッションからログアウトします。
$ curl -i "https://NoSQL:30000/V0/nosql/admin/logout" \ --cacert /tmp/client_security_dir/security/client.pem \ -H "Authorization:Bearer login_token_in_hex_string" --tlsv1 { "operation" : "logout", "returnCode" : 5000, "description" : "Operation ends successfully", "returnValue" : null }