13 Oracle Graph Server and Clientのインストール
この章では、グラフ・サーバーとグラフ・クライアントをインストールするステップについて説明します。
- 始める前に
Oracle Property Graphsの使用を開始する前に、Oracle Graph Server and Clientをインストールするためのワークフローを理解する必要があります。 - Oracle Graph Serverのインストール
グラフ問合せおよび分析をグラフ・サーバー(PGX)で実行するには、Oracle Graph Serverをインストールする必要があります。 - Oracle Graph Clientのインストール
クライアントCLIおよびグラフ・ビジュアライゼーションWebクライアントを使用して、様々なグラフ機能を操作できます。 - トランスポート層セキュリティの設定
グラフ・サーバー(PGX)は、デフォルトで、トランスポート層セキュリティ(TLS)を使用する暗号化された接続のみを許可します。TLSでは、サーバーがクライアントにサーバー証明書を提示する必要があり、クライアントはその証明書の発行者を信頼するように構成されている必要があります。
13.1 始める前に
Oracle Property Graphsの使用を開始する前に、Oracle Graph Server and Clientをインストールするためのワークフローを理解する必要があります。
表13-1 Oracle Graph Server and Clientをインストールするためのワークフロー
順序 | タスク | 説明 | 詳細情報 |
---|---|---|---|
1 | Oracle Databaseの要件の確認 | Oracle Databaseのバージョンが12.2以上であることを確認します。 | データベースの互換性の確認 |
2 | Oracle Graph Server and Clientのダウンロード | Oracle Software Delivery CloudまたはOracle Technology NetworkからOracle Graph Server and Clientをダウンロードします。 | Oracle Graph Server and Clientのダウンロード |
3 | Oracle DatabaseでのPL/SQLパッチのインストール | Oracle DatabaseでPL/SQL Graphパッケージをアップグレードします。 | Oracle DatabaseでのPL/SQLパッケージのインストール |
4 | Oracle Graph Serverのインストール | ダウンロード可能な個別のパッケージとして使用可能なOracle Graph Serverをインストールします。 | Oracle Graph Serverのインストール |
5 | Oracle Graph Clientのインストール | グラフ・クライアント(グラフ・シェルCLIやグラフ・ビジュアライゼーション・アプリケーションなど)をインストールして、プロパティ・グラフを操作します。 | Oracle Graph Clientのインストール |
6 | トランスポート層セキュリティの設定 | 自己署名証明書を信頼するようにグラフ・サーバーおよびクライアントを構成します。 | トランスポート層セキュリティの設定 |
7 | グラフを公開する権限の追加 | グラフを公開する権限を付与します。 | グラフを公開する権限の追加 |
- データベースの互換性の確認
- Oracle Graph Server and Clientのダウンロード
- Oracle DatabaseでのPL/SQLパッケージのインストール
Oracle Graph Server and Clientは、Oracle Database 12.2以降と連携して機能します。ただし、Oracle Graph Server and Clientのダウンロードに含まれる更新されたPL/SQLパッケージをインストールする必要があります。
13.1.1 データベースの互換性の確認
Oracle Graph Server and Clientは、オンプレミス環境とクラウド環境の両方でOracle Database 12.2以降と連携して機能します。クラウド環境には、すべてのバージョンのOracle Autonomous Database ServerlessおよびOracle Autonomous Database Dedicatedの操作が組み込まれています。
ただし、PGQLのINSERT
、UPDATE
またはDELETE
問合せを使用したプロパティ・グラフの変更は、Oracle Database 12.2ではサポートされていません。
親トピック: 始める前に
13.1.2 Oracle Graph Server and Clientのダウンロード
Oracle Graph Server and Clientは、Oracle Software Delivery CloudまたはOracle Technology Networkからダウンロードできます。
表13-2に、Oracle Graph Server and Clientデプロイメントに含まれるすべてのファイルの概要を示します。
表13-2のファイル名に示されている<ver>
は、ダウンロードされたOracle Graph Server and Clientのバージョンを反映しています。
表13-2 Oracle Graph Server and Clientデプロイメントのコンポーネント
ファイル | コンポーネント | 説明 |
---|---|---|
oracle-graph-<ver>.rpm |
Oracle Graph Server | Oracle Graph Serverをデプロイするためのrpmファイル。 |
oracle-graph-client-<ver>.zip |
Oracle Graph Client | Oracle Graph Clientを含むzipファイル。 |
oracle-graph-hdfs-connector-<ver>.zip |
Oracle Graph HDFS Connector | Oracle Graph ServerをApache Hadoop Distributed Filesystem (HDFS)に接続するためのライブラリを含むzipファイル。 |
oracle-graph-sqlcl-plugin-<ver>.zip |
Oracle Graph PGQL Plugin for SQLcl | SQLclでPGQL問合せを実行するためのSQLcl用のプラグイン。 |
oracle-graph-webapps-<ver>.zip |
Oracle Graph Web Applications | アプリケーション・サーバーにグラフ・サーバーをデプロイするための.war ファイルを含むzipファイル。
|
oracle-graph-plsql-<ver>.zip |
Oracle Graph PL/SQL Patch | PL/SQLパッケージを含むzipファイル。これらのパッケージを使用してデータベース内のPL/SQL Graphパッケージを更新することをお薦めします。手順は、README ファイルに記載されています。
|
oracle-graph-visualization-library-<ver>.zip |
Oracle Graph Visualization Library | グラフ・ビジュアライゼーション・アプリケーション用のJavaスクリプト・ライブラリが含まれるzipファイル。 |
親トピック: 始める前に
13.1.3 Oracle DatabaseでのPL/SQLパッケージのインストール
Oracle Graph Server and Client は、Oracle Database 12.2以降と連携して機能します。ただし、Oracle Graph Server and Clientのダウンロードに含まれる更新されたPL/SQLパッケージをインストールする必要があります。
ノート:
Graph Server and ClientをOracle Autonomous Databaseとともに使用している場合は、このセクションをスキップできます。必要なことは、認証にOracle Databaseを使用するための基本ステップでステップ5およびステップ6を実行することにより、ロールを作成し権限を割り当てることのみです。これらのステップは、Oracle Cloud Infrastructureコンソールの「データベース・アクション」を使用して実行できます。
親トピック: 始める前に
13.2 Oracle Graph Serverのインストール
グラフ問合せおよび分析をグラフ・サーバー(PGX)で実行するには、Oracle Graph Serverをインストールする必要があります。
次の各項では、Oracle Graph Serverをスタンドアロン・モードでインストールするステップ、あるいはOracle WebLogic ServerまたはApache Tomcatを使用して、サーバーをWebアプリケーションとしてデプロイするステップについて説明します。
- RPMインストールの使用
ダウンロードしたRPMファイルを実行して、Oracle Graph Serverをインストールできます。 - WebサーバーへのOracle Graph Serverのデプロイ
Oracle Graph Serverは、Apache TomcatまたはOracle WebLogic Serverにデプロイできます。 - ユーザーの認証および認可
Oracle Graph Server (PGX)では、Oracle Databaseをアイデンティティ・マネージャとして使用します。ユーザー名およびパスワード・ベースの認証とKerberosベースの認証の両方がサポートされています。
関連トピック
13.2.1 RPMインストールの使用
ダウンロードしたRPMファイルを実行して、Oracle Graph Serverをインストールできます。
- Oracle Graph Serverのインストールの前提条件
- Oracle Graph Serverのインストール
- Oracle Graph Serverのアンインストール
- Oracle Graph Serverのアップグレード
親トピック: Oracle Graph Serverのインストール
13.2.1.1 Oracle Graph Serverのインストールの前提条件
Oracle Graph Serverをインストールするには、システムが特定の前提条件を満たしている必要があります。
- 次のシステム要件を満たしていることを確認してください。
- Oracle Linux 7または8 x64、あるいはRedHatなどの同様のLinuxディストリビューション
- Oracle JDK 8、JDK 11またはJDK 17
ノート:
- Open JDKに不具合があるため、次のOracle JDKバージョンは使用しないようにすることをお薦めします。
- JDK 11.0.9
- JDK 11.0.10
- JDK 11.0.11
- JDK 11.0.12
詳細は、このノートを参照してください。
- PGXアルゴリズムAPIを使用したカスタム・グラフ・アルゴリズムのコンパイルは、Oracle JDK 17ではサポートされていません。
- Open JDKに不具合があるため、次のOracle JDKバージョンは使用しないようにすることをお薦めします。
- 次のコマンドを実行して、グラフ・サーバーのインストール済バージョンがすでにあるかどうかを確認します。
sudo rpm -q oracle-graph [sudo] password for oracle: oracle-graph-23.2.0-0.x86_64
インストールがすでに存在する場合は、グラフ・サーバーのインストールでエラーがスローされる可能性があります。その場合は、「Oracle Graph Serverのアップグレード」を参照して、新しいバージョンにアップグレードします。
親トピック: RPMインストールの使用
13.2.1.2 Oracle Graph Serverのインストール
systemctl status pgx
- グラフ・サーバーが正常に起動した場合、レスポンスは次のように表示されます。
● pgx.service - Oracle Graph In-Memory Server Loaded: loaded (/etc/systemd/system/pgx.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2021-01-27 10:06:06 EST; 33s ago Main PID: 32127 (bash) CGroup: /system.slice/pgx.service ├─32127 /bin/bash start-server └─32176 java -Dlogback.configurationFile=/etc/oracle/graph/logback-server.xml -Doracle.jdbc.fanEnabled=false -cp /opt/oracle/graph/pgx/bin/../../pgx/server/lib/jackson-databind...
これで、グラフ・サーバーでリクエストを受け入れる準備が整いました。
- グラフ・サーバーが起動していない場合は、
/var/log/oracle/graph
にあるログ・ファイルでエラーを確認する必要があります。さらに、次のコマンドを実行して、systemd
エラーを表示することもできます。sudo journalctl -u pgx.service
特定のユースケースでは、次のような追加のインストール操作が必要になります。
- Pythonを使用してプロパティ・グラフを分析します(「グラフ・サーバーおよびクライアント・ダウンロードからのPythonクライアントのインストール」を参照)。
- Oracle WebLogic Serverを使用してグラフ・サーバーをWebアプリケーションとしてデプロイする(Oracle WebLogic Serverへのデプロイを参照)。
- Oracle WebLogic ServerでGraphVizをデプロイする(Oracle WebLogic Serverでのグラフ・ビジュアライゼーション・アプリケーションのデプロイを参照)。
- Apache Tomcatを使用してグラフ・サーバーをWebアプリケーションとしてデプロイする(Apache Tomcatへのデプロイを参照)。
Oracle WebLogic ServerまたはApache Tomcatでグラフ・サーバーをデプロイする手順は、次を参照してください。
ロード・バランサの背後にグラフ・サーバーをデプロイすることもできます。詳細は、ロード・バランサの背後でのOracle Graph Serverのデプロイを参照してください。
親トピック: RPMインストールの使用
13.2.1.3 Oracle Graph Serverのアンインストール
親トピック: RPMインストールの使用
13.2.1.4 Oracle Graph Serverのアップグレード
親トピック: RPMインストールの使用
13.2.2 WebサーバーへのOracle Graph Serverのデプロイ
Oracle Graph Serverは、Apache TomcatまたはOracle WebLogic Serverにデプロイできます。
次に、Webサーバーへのデプロイメントの手順について説明します:
- Apache Tomcatへのデプロイ
このトピックの例では、Apache Tomcatでグラフ・サーバーをWebアプリケーションとしてデプロイする方法について説明します。 - Oracle WebLogic Serverへのデプロイ
このトピックの例では、Oracle WebLogic Serverでグラフ・サーバーをWebアプリケーションとしてデプロイする方法について説明します。
親トピック: Oracle Graph Serverのインストール
13.2.2.1 Apache Tomcatへのデプロイ
このトピックの例では、Apache Tomcatでグラフ・サーバーをWebアプリケーションとしてデプロイする方法について説明します。
グラフ・サーバーは、Apache Tomcat 9.0.xで動作します。
- Oracle Software Delivery CloudからOracle Graph Webapps zipファイルをダウンロードします。このファイルには、すぐにデプロイできるJava Webアプリケーション・アーカイブ(
.war
ファイル)が含まれます。ファイル名は、oracle-graph-webapps-<version>.zip
のようになります - 選択したディレクトリに、このファイルを解凍します。
- ネーミング・パターン(
graph-server-<version>-pgx<version>.war
)に従う.war
ファイルを見つけます。 - グラフ・サーバーを構成します。
- Webアプリケーション・アーカイブ内の
WEB-INF/classes/pgx.conf
ファイルを変更して、認証およびその他のサーバー設定を変更します。詳細は、ユーザーの認証および認可のセクションを参照してください。 - 必要に応じて、Webアプリケーション・アーカイブ内の
WEB-INF/classes/logback.xml
ファイルを変更して、ロギング設定を変更します。 - 必要に応じて、Webアプリケーション・アーカイブ内の
WEB-INF/web.xml
ファイルを変更して、その他のサーブレット固有のデプロイメント・ディスクリプタを変更します。
- Webアプリケーション・アーカイブ内の
.war
ファイルをTomcatのwebapps
ディレクトリにコピーします。たとえば:cp graph-server-<version>-pgx<version>.war $CATALINA_HOME/webapps/pgx.war
ノート:
Tomcatwebapps
ディレクトリ内のwarファイルに指定する名前によって、グラフ・サーバー・アプリケーションのコンテキスト・パスが決まります。warファイルにpgx.war
という名前を付けることをお薦めします。- TLS/暗号化の正しい使用など、Tomcat固有の設定を構成します
- ポート8080がすでに使用されていないことを確認します。
- Tomcatを起動します。
cd $CATALINA_HOME ./bin/startup.sh
これで、グラフ・サーバーは、
localhost:8080/pgx
でリスニングします。次のコマンドを実行すると、JShellからサーバーに接続できます。
$ <client_install_dir>/bin/opg4j --base_url https://localhost:8080/pgx -u <graphuser>
関連トピック
13.2.2.2 Oracle WebLogic Serverへのデプロイ
このトピックの例では、Oracle WebLogic Serverでグラフ・サーバーをWebアプリケーションとしてデプロイする方法について説明します。
この例では、Oracle WebLogic Serverを使用してグラフ・サーバーをデプロイする方法を示します。グラフ・サーバーでは、WebLogic Serverバージョン12.1.xおよび12.2.x.をサポートしています。
- Oracle Software Delivery CloudからOracle Graph Webapps zipファイルをダウンロードします。このファイルには、すぐにデプロイできるJava Webアプリケーション・アーカイブ(
.war
ファイル)が含まれます。ファイル名は、oracle-graph-webapps-<version>.zip
のようになります - 選択したディレクトリに、このファイルを解凍します。
- ネーミング・パターン(
graph-server-<version>-pgx<version>.war
)に従う.war
ファイルを見つけます。 - グラフ・サーバーを構成します。
- Webアプリケーション・アーカイブ内の
WEB-INF/classes/pgx.conf
ファイルを変更して、認証およびその他のサーバー設定を変更します。 - 必要に応じて、Webアプリケーション・アーカイブ内の
WEB-INF/classes/logback.xml
ファイルを変更して、ロギング設定を変更します。 - 必要に応じて、Webアプリケーション・アーカイブ内の
WEB-INF/web.xml
ファイルを変更して、その他のサーブレット固有のデプロイメント・ディスクリプタを変更します。 - 必要に応じて、Webアプリケーション・アーカイブ内の
WEB-INF/weblogic.xml
ファイルを変更して、その他のWebLogic Server固有のデプロイメント・ディスクリプタを変更します。
- Webアプリケーション・アーカイブ内の
- TLS/暗号化の正しい使用など、WebLogic固有の設定を構成します
- WebLogic Serverに
.war
ファイルをデプロイします。次の例では、コマンドラインからこれを実行する方法を示します。. $MW_HOME/user_projects/domains/mydomain/bin/setDomainEnv.sh . $MW_HOME/wlserver/server/bin/setWLSEnv.sh java weblogic.Deployer -adminurl http://localhost:7001 -username <username> -password <password> -deploy -source <path-to-war-file>
13.2.2.2.1 Oracle WebLogic Serverのインストール
Oracle WebLogic Serverの最新バージョンをダウンロードし、インストールするには、次を参照してください
http://www.oracle.com/technetwork/middleware/weblogic/documentation/index.html
親トピック: Oracle WebLogic Serverへのデプロイ
13.2.3 ユーザーの認証および認可
Oracle Graph Server (PGX)では、Oracle Databaseをアイデンティティ・マネージャとして使用します。ユーザー名およびパスワード・ベースの認証とKerberosベースの認証の両方がサポートされています。
グラフ・サーバーで実行できる操作は、Oracle Databaseで付与されているロールによって有効化される権限によって決まります。
- Oracle Databaseの権限とロール
グラフを操作するすべてのデータベース・ユーザーに、データベースにおけるCREATE SESSION
権限が必要です。 - 認証にOracle Databaseを使用するための基本ステップ
このセクションで説明するステップに従って、ユーザーをグラフ・サーバー(PGX)に対して認証できます。 - データベース認証のためのグラフ・サーバーの準備
インストールのpgx.conf
ファイルを見つけます。 - キーストアへのデータベース・パスワードの格納
- グラフを公開する権限の追加
グラフ・ビジュアライゼーション・アプリケーションでグラフ・サーバー(PGX)セッション内のグラフを表示するには、2つの方法があります。 - トークンの有効期限
デフォルトでは、トークンは1時間有効です。 - 拡張アクセス構成
pgx.conf
ファイルのpgx_realm
ブロック内の次のフィールドをカスタマイズして、ログイン動作をカスタマイズできます。 - ロールおよび権限のカスタマイズ
ロールを追加および削除し、ロールの権限を指定することで、ロール・マッピングに対する権限を全面的にカスタマイズできます。ロールのかわりに個々のユーザーを認可することもできます。 - グラフ・サーバーへのアクセス権の取消し
ユーザーがグラフ・サーバーにアクセスできることを取り消すには、pgx.confファイルでアクセス・ルールを定義した方法に応じて、データベースからユーザーを削除するか、ユーザーから対応するロールを取り消します。 - カスタム認可ルールの例
開発者にカスタム認可ルールを定義できます。 - グラフ・サーバー(PGX)に対するKerberos対応の認証
グラフ・サーバー(PGX)では、Kerberosがアイデンティティ・プロバイダとして有効になっているOracle Databaseを使用してユーザーを認証できます。
親トピック: Oracle Graph Serverのインストール
13.2.3.1 Oracle Databaseの権限とロール
グラフを操作するすべてのデータベース・ユーザーに、データベースにおけるCREATE SESSION
権限が必要です。
グラフを操作するために作成されるロールを表13-3に示します。これらのロールは、ターゲット・データベースにOracle Graph Server and ClientディストリビューションのPL/SQLパッケージをインストールするときに作成されます。
表13-3 Oracle Databaseの権限とロール
ロール | このロールで有効な操作 | 使用者 |
---|---|---|
PGX_SESSION_CREATE |
ServerInstance.createSession APIを使用して新しいPGXセッションを作成します。 | グラフ開発者およびグラフ・ユーザー |
PGX_SERVER_GET_INFO |
管理APIを使用してPGXインスタンスのステータス情報を取得します。 | PGXを管理するユーザー |
PGX_SERVER_MANAGE (PGX_SERVER_GET_INFOを含む) |
管理APIを使用してPGXインスタンスを管理して、PGXを停止または再起動します。 | PGXを管理するユーザー |
PGX_SESSION_NEW_GRAPH |
構成ファイルを使用してデータベースからロードするか、PGQLのCREATE PROPERTY GRAPH文を使用するか、別のグラフからサブグラフを作成することにより、PGXに新しいグラフを作成します。 | グラフ開発者およびグラフ・ユーザー |
PGX_SESSION_GET_PUBLISHED_GRAPH |
別のユーザーによってパブリック・ネームスペースに公開されたグラフを問い合せて表示します。 | グラフ開発者およびグラフ・ユーザー |
PGX_SESSION_ADD_PUBLISHED_GRAPH (PGX_SESSION_GET_PUBLISHED_GRAPHを含む) |
グラフをパブリック・ネームスペースに公開します。 | グラフ開発者 |
PGX_SESSION_COMPILE_ALGORITHM |
PGXアルゴリズムAPIを使用してアルゴリズムをコンパイルします。 | グラフ開発者 |
PGX_SESSION_READ_MODEL |
PgxMLを使用してMLモデルをロードおよび使用します。 | グラフ開発者 |
PGX_SESSION_MODIFY_MODEL |
PgxMLを使用してMLモデルを作成、トレーニングおよび格納します。 | グラフ開発者 |
複数のロールをグループ化するために、いくつかの追加ロールも作成されます。これらを使用すると、データベース・ユーザーに複数のロールを簡単に付与できます。これらの追加ロールの詳細は、グラフ・サーバー・ロールのデフォルト権限へのマッピングを参照してください。
ロールの追加と削除および個々のユーザーの権限の定義の説明に従って、アプリケーションに有用な追加グループを作成できます。
親トピック: ユーザーの認証および認可
13.2.3.2 認証にOracle Databaseを使用するための基本ステップ
このセクションで説明するステップに従うと、グラフ・サーバー(PGX)に対してユーザーを認証できます。
親トピック: ユーザーの認証および認可
13.2.3.3 データベース認証のためのグラフ・サーバーの準備
インストールのpgx.conf
ファイルを見つけます。
RPMを使用してグラフ・サーバーをインストールした場合、ファイルは/etc/oracle/graph/pgx.conf
にあります。
webapps
パッケージを使用してTomcatまたはWebLogic Serverにデプロイする場合、pgx.conf
ファイルは、Webアプリケーション・アーカイブ・ファイル(WARファイル)内のWEB-INF/classes/pgx.conf
にあります。
vim graph-server-<version>-pgx<version>.war
pgx.conf
ファイル内で、レルム・オプションのjdbc_url
行を見つけます。
...
"pgx_realm": {
"implementation": "oracle.pg.identity.DatabaseRealm",
"options": {
"jdbc_url": "<REPLACE-WITH-DATABASE-URL-TO-USE-FOR-AUTHENTICATION>",
"token_expiration_seconds": 3600,
...
前のステップで構成したデータベースを指すJDBC URLにテキストを置き換えます。たとえば:
...
"pgx_realm": {
"implementation": "oracle.pg.identity.DatabaseRealm",
"options": {
"jdbc_url": "jdbc:oracle:thin:@myhost:1521/myservice",
"token_expiration_seconds": 3600,
...
次に、root
ユーザーとして、またはsudo
を使用して次のコマンドを実行して、グラフ・サーバーを起動します。
sudo systemctl start pgx
Autonomous Databaseに接続するためのグラフ・サーバー(PGX)の準備
Autonomous Databaseインスタンスに接続するようにグラフ・サーバー(PGX)を構成できます。
グラフ・サーバー(PGX)インスタンスがオンプレミスで実行されているか、Oracle Cloud Infrastructure (OCI)で実行されているかに関係なく、次のステップを実行してAutonomous Databaseインスタンスに接続するためのサービス名を特定し、/etc/oracle/graph/pgx.conf
ファイルのJDBC URLを更新することができます。
- Oracle Cloud Infrastructure (OCI)コンソールからAutonomous Databaseインスタンスのウォレットをダウンロードして保存します。詳細は、クライアント資格証明(ウォレット)のダウンロードを参照してください。
- ウォレットを
/etc/oracle/graph/wallets/<dbname>
の新しいサブディレクトリに解凍し、次のようにグループ権限を変更します。sudo unzip Wallet_<dbname>.zip -d /etc/oracle/graph/wallets/<dbname> sudo chgrp -R oraclegraph /etc/oracle/graph/wallets/<dbname>
/etc/oracle/graph/wallets/<dbname>
ディレクトリのtnsnames.ora
ファイルから接続識別子を特定します。たとえば、エントリは次のようになります。graphdb_low = description= (retry_count=20)(retry_delay=3) (address= (protocol=tcps)(port=1522) (host=adwc.example.oraclecloud.com) ) (connect_data=(service_name=graphdb_low.adwc.oraclecloud.com)) (security=(ssl_server_cert_dn="CN=adwc.example.oraclecloud.com, OU=Oracle BMCS US, O=Oracle Corporation, L=Redwood City, ST=California, C=US")) )
前述の例では、
graphdb_low
が接続識別子です。/etc/oracle/graph/pgx.conf
ファイルのJDBC URLを、前のステップで特定した接続識別子と解凍したウォレット・ファイルへのディレクトリ・パスを使用して更新します。たとえば:... "pgx_realm": { "implementation": "oracle.pg.identity.DatabaseRealm", "options": { "jdbc_url": "jdbc:oracle:thin:@graphdb_low?TNS_ADMIN=/etc/oracle/graph/wallets/<dbname>", "token_expiration_seconds": 3600, ...
- 最後に、次のように、グラフ・サーバーを再起動します。
sudo systemctl restart pgx
親トピック: ユーザーの認証および認可
13.2.3.4 キーストアへのデータベース・パスワードの格納
PGXでは、データベースからメモリーにデータを読み込むためにデータベース・アカウントが必要です。アカウントは、権限の低いアカウントである必要があります(グラフ・データを使用したセキュリティのベスト・プラクティスを参照)。
Oracle Databaseからグラフ・サーバー(PGX)へのグラフの読込みで説明されているように、トークンがそのデータベース・ユーザーに対して有効であるかぎり、追加の認証を指定しなくてもデータベースからグラフ・サーバーにデータを読み込むことができます。ただし、別のユーザーからグラフにアクセスする場合は、そのユーザーのパスワードが保護のためにJavaキーストア・ファイルに格納されているかぎり、それは可能です。
JDKにバンドルされたkeytool
コマンドを使用して、そのようなキーストア・ファイルをコマンドラインで生成できます。例として次のスクリプトを参照してください。
# Add a password for the 'database1' connection
keytool -importpass -alias database1 -keystore keystore.p12
# 1. Enter the password for the keystore
# 2. Enter the password for the database
# Add another password (for the 'database2' connection)
keytool -importpass -alias database2 -keystore keystore.p12
# List what's in the keystore using the keytool
keytool -list -keystore keystore.p12
Javaバージョン8以下を使用している場合は、前述の例のkeytoolコマンドに追加パラメータ-storetype pkcs12
を渡す必要があります。
複数のパスワードを1つのキーストア・ファイルに格納できます。各パスワードは、指定された別名を使用して参照できます。
PGXグラフ構成ファイルの作成による、リレーショナル表からのグラフの直接ロード
次の例では、HRサンプル・データのサブセットをリレーショナル表からPGXにグラフとして直接ロードします。構成ファイルでは、頂点およびエッジ・プロバイダの概念を使用して、リレーショナル形式からグラフ形式へのマッピングを指定します。
ノート:
vertex_providers
プロパティおよびedge_providers
プロパティを指定すると、データがグラフの最適化表現にロードされます。
{
"name":"hr",
"jdbc_url":"jdbc:oracle:thin:@myhost:1521/orcl",
"username":"hr",
"keystore_alias":"database1",
"vertex_id_strategy": "no_ids",
"vertex_providers":[
{
"name":"Employees",
"format":"rdbms",
"database_table_name":"EMPLOYEES",
"key_column":"EMPLOYEE_ID",
"key_type": "string",
"props":[
{
"name":"FIRST_NAME",
"type":"string"
},
{
"name":"LAST_NAME",
"type":"string"
},
{
"name":"EMAIL",
"type":"string"
},
{
"name":"SALARY",
"type":"long"
}
]
},
{
"name":"Jobs",
"format":"rdbms",
"database_table_name":"JOBS",
"key_column":"JOB_ID",
"key_type": "string",
"props":[
{
"name":"JOB_TITLE",
"type":"string"
}
]
},
{
"name":"Departments",
"format":"rdbms",
"database_table_name":"DEPARTMENTS",
"key_column":"DEPARTMENT_ID",
"key_type": "string",
"props":[
{
"name":"DEPARTMENT_NAME",
"type":"string"
}
]
}
],
"edge_providers":[
{
"name":"WorksFor",
"format":"rdbms",
"database_table_name":"EMPLOYEES",
"key_column":"EMPLOYEE_ID",
"source_column":"EMPLOYEE_ID",
"destination_column":"EMPLOYEE_ID",
"source_vertex_provider":"Employees",
"destination_vertex_provider":"Employees"
},
{
"name":"WorksAs",
"format":"rdbms",
"database_table_name":"EMPLOYEES",
"key_column":"EMPLOYEE_ID",
"source_column":"EMPLOYEE_ID",
"destination_column":"JOB_ID",
"source_vertex_provider":"Employees",
"destination_vertex_provider":"Jobs"
},
{
"name":"WorkedAt",
"format":"rdbms",
"database_table_name":"JOB_HISTORY",
"key_column":"EMPLOYEE_ID",
"source_column":"EMPLOYEE_ID",
"destination_column":"DEPARTMENT_ID",
"source_vertex_provider":"Employees",
"destination_vertex_provider":"Departments",
"props":[
{
"name":"START_DATE",
"type":"local_date"
},
{
"name":"END_DATE",
"type":"local_date"
}
]
}
]
}
データの読取り
ここで、次のいずれかの方法を使用して、キーストアと構成ファイルの両方をPGXに渡すことにより、データベースに接続してデータを読み取るようPGXに指示できます。
- グラフ・シェルで対話的に
グラフ・シェルを使用している場合は、
--secret_store
オプションで起動します。キーストア・パスワードを入力し、現在のセッションにキーストアをアタッチするよう要求されます。たとえば:cd /opt/oracle/graph ./bin/opg4j --secret_store /etc/my-secrets/keystore.p12 enter password for keystore /etc/my-secrets/keystore.p12:
シェルの内部では、通常のPGX APIを使用し、
readGraphWithProperties
APIに書き込んだJSONファイルを渡すことで、グラフをメモリーに読み込むことができます。opg4j> var graph = session.readGraphWithProperties("config.json") graph ==> PgxGraph[name=hr,N=215,E=415,created=1576882388130]
- PGXの事前ロード済グラフとしてサーバー管理者として、サーバー起動時にメモリーにグラフをロードするようPGXに指定できます。そのためには、
/etc/oracle/graph/pgx.conf
にあるPGX構成ファイルを変更し、グラフ構成ファイルのパスをpreload_graphs
セクションに追加します。たとえば:{ ... "preload_graphs": [{ "name": "hr", "path": "/path/to/config.json" }], "authorization": [{ "pgx_role": "GRAPH_DEVELOPER", "pgx_permissions": [{ "preloaded_graph": "hr", "grant": "read" }] }, .... ] }
rootユーザーとして、/etc/systemd/system/pgx.service
にあるサービス・ファイルを編集し、ExecStart
コマンドを変更してパスワードを含むキーストアの場所を指定します。ExecStart=/bin/bash start-server --secret-store /etc/keystore.p12
ノート:
これを機能させるため、/etc/keystore.p12
をパスワードで保護しないでください。かわりに、oraclegraph
ユーザーのみが読取り可能なファイル・システム権限によってファイルを保護します。ファイルを編集したら、次を使用して変更をリロードします。sudo systemctl daemon-reload
最後に、サーバーを起動します。sudo systemctl start pgx
- Javaアプリケーション
キーストアをJavaアプリケーションに登録するには、
PgxSession
オブジェクトでregisterKeystore()
APIを使用します。たとえば:import oracle.pgx.api.*; class Main { public static void main(String[] args) throws Exception { String baseUrl = args[0]; String keystorePath = "/etc/my-secrets/keystore.p12"; char[] keystorePassword = args[1].toCharArray(); String graphConfigPath = args[2]; ServerInstance instance = Pgx.getInstance(baseUrl); try (PgxSession session = instance.createSession("my-session")) { session.registerKeystore(keystorePath, keystorePassword); PgxGraph graph = session.readGraphWithProperties(graphConfigPath); System.out.println("N = " + graph.getNumVertices() + " E = " + graph.getNumEdges()); } } }
前述のサンプル・プログラムは、Oracle Graphクライアント・パッケージを使用してコンパイルおよび実行できます。たとえば:cd $GRAPH_CLIENT // create Main.java with above contents javac -cp 'lib/*' Main.java java -cp '.:conf:lib/*' Main http://myhost:7007 MyKeystorePassword path/to/config.json
グラフ・クライアント・アプリケーションのセキュア・コーディングのヒント
グラフ・クライアント・アプリケーションを作成する場合は、いずれのファイルまたはコードにもパスワードやその他のシークレットをクリア・テキストで格納しないでください。
コマンドライン引数からパスワードやその他のシークレットを受け入れないでください。かわりに、JDKからConsole.html#readPassword()
を使用してください。
親トピック: ユーザーの認証および認可
13.2.3.5 グラフを公開する権限の追加
グラフ・ビジュアライゼーション・アプリケーションでグラフ・サーバー(PGX)セッション内のグラフを表示するには、2つの方法があります。
ブラウザでグラフ・ビジュアライゼーション・ツールにログインすると、JShellセッションまたはアプリケーション・セッションとは異なるセッションになります。グラフ・ビジュアライゼーション・セッションで、JShellセッションまたはアプリケーション・セッションで作業しているグラフを視覚化するには、次の2つのステップのいずれかを実行します。
親トピック: ユーザーの認証および認可
13.2.3.6 トークンの有効期限
デフォルトでは、トークンは1時間有効です。
内部的には、グラフ・クライアントは30分未満で期限が切れるトークンを自動的に更新します。これは、データベースで資格証明を再認証することでも構成できます。デフォルトでは、トークンは最大で24回だけ自動的に更新できるため、その後は再度ログインする必要があります。
GraphServer#reauthenticate (instance, "<user>", "<password>")
APIを使用すると、セッション・データを失うことなく再度ログインできます。
ノート:
再認証前にセッションがタイムアウトした場合、セッション・データが失われる可能性があります。たとえば:
opg4j> var graph = session.readGraphWithProperties(config) // fails because token cannot be renewed anymore
opg4j> GraphServer.reauthenticate(instance, "<user>", "<password>".toCharArray()) // log in again
opg4j> var graph = session.readGraphWithProperties(config) // works now
親トピック: ユーザーの認証および認可
13.2.3.7 拡張アクセス構成
pgx.conf
ファイルのpgx_realm
ブロック内の次のフィールドをカスタマイズして、ログイン動作をカスタマイズできます。
表13-4 拡張アクセス構成のオプション
フィールド名 | 説明 | デフォルト |
---|---|---|
token_expiration_seconds |
生成されたベアラー・トークンが期限切れになるまでの秒数。 | 3600 (1時間) |
refresh_time_before_token_expiry_seconds |
トークンが期限切れになる前に自動的にリフレッシュされるまでの秒数。この値は常にtoken_expiration_seconds 値よりも小さくする必要があります。
|
1800 |
connect_timeout_milliseconds |
指定したJDBC URLへの接続試行がタイムアウトになり、ログイン試行が拒否されるまでの時間(ミリ秒)。 | 10000 |
max_pool_size |
各ユーザーに許可される最大JDBC接続数。この数に達すると、現行ユーザーのデータベースからの読取り試行は失敗します。 | 64 |
max_num_users |
許容するアクティブなサインイン済ユーザーの最大数。この数に達すると、グラフ・サーバーはログイン試行を拒否します。 | 512 |
max_num_token_refresh |
トークンを自動的にリフレッシュできる最大回数。この回数を超えると、ログインが再度要求されます。 | 24 |
ノート:
前述のオプションは、レルムの実装がoracle.pg.identity.DatabaseRealm
に構成されている場合にのみ機能します。
親トピック: ユーザーの認証および認可
13.2.3.8 ロールおよび権限のカスタマイズ
ロールを追加および削除し、ロールの権限を指定することで、ロール・マッピングに対する権限を全面的にカスタマイズできます。ロールのかわりに個々のユーザーを認可することもできます。
このトピックでは、権限マッピングをカスタマイズする方法の例を示します。
- APIを使用したグラフ権限のチェック
- ロールの追加と削除
認可リストを変更することで、新しいロール権限マッピングを追加したり、既存のマッピングを削除できます。 - 個々のユーザーの権限の定義
ロールの権限の定義に加えて、個々のユーザーの権限を定義できます。 - カスタム・グラフ・アルゴリズムを使用する権限の定義
開発者がカスタム・グラフ・アルゴリズムをコンパイルできるよう、権限を定義できます。
親トピック: ユーザーの認証および認可
13.2.3.8.1 APIを使用したグラフ権限のチェック
次のPGX APIメソッドを使用して、ロールおよびグラフ権限を確認できます。
表13-5 グラフ権限をチェックするためのAPI
クラス | メソッド | 説明 |
---|---|---|
ServerInstance |
getPgxUsername() |
現行ユーザーの名前 |
ServerInstance |
getPgxUserRoles() |
現行ユーザーのロール名 |
ServerInstance |
getPgxGenericPermissions() |
現行ユーザーのグラフ以外の(システム)権限:
|
PgxGraph |
getPermission() |
現行ユーザーのグラフ・インスタンスに対する権限 |
次に示すように、JShellのAPIを使用して、すべての権限関連の情報を取得できます。
/bin/opg4j -b "https://<host>:<port>" -u "<graphuser>"
opg4j> instance
instance ==> ServerInstance[embedded=false,baseUrl=https://<host>:<port>,serverVersion=null]
opg4j>instance.getPgxUsername()
$2 ==> "ORACLE"
opg4j>instance.getPgxUserRoles()
$3 ==> [GRAPH_DEVELOPER]
opg4j>instance.getPgxGenericPermissions()
$4 ==> [PGX_SESSION_CREATE, PGX_SESSION_READ_MODEL, PGX_SESSION_ADD_PUBLISHED_GRAPH, PGX_SESSION_NEW_GRAPH, PGX_SESSION_GET_PUBLISHED_GRAPH, PGX_SESSION_MODIFY_MODEL]
opg4jvar g = session.readGraphWithProperties("bank_graph_analytics.json")
g ==> PgxGraph[name=bank_graph_analytics,N=1000,E=5001,created=1625697341555]
opg4j>g.getPermission() // To get graph permissions
$9 ==> MANAGE
import oracle.pg.rdbms.*;
import java.sql.Connection;
import java.sql.Statement;
import oracle.pg.rdbms.pgql.PgqlConnection;
import oracle.pg.rdbms.pgql.PgqlStatement;
import oracle.pgx.api.*;
import oracle.ucp.jdbc.PoolDataSourceFactory;
import oracle.ucp.jdbc.PoolDataSource;
import java.nio.file.Files;
import java.nio.file.Path;
/**
* This example shows how to get all permissions.
*/
public class GetPermissions
{
public static void main(String[] args) throws Exception
{
int idx=0;
String host = args[idx++];
String port = args[idx++];
String sid = args[idx++];
String user = args[idx++];
String password = args[idx++];
String graph = args[idx++];
Connection conn = null;
PgxPreparedStatement stmt = null;
try {
// Get a jdbc connection
PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setURL("jdbc:oracle:thin:@"+host+":"+port +"/"+sid);
pds.setUser(user);
pds.setPassword(password);
conn = pds.getConnection();
conn.setAutoCommit(false);
ServerInstance instance = GraphServer.getInstance("http://localhost:7007", user, password.toCharArray());
PgxSession session = instance.createSession("my-session");
var statement = Files.readString(Path.of("/media/sf_Linux/Java/create-pg.pgql"));
stmt = session.preparePgql(statement);
stmt.execute();
PgxGraph g = session.getGraph(graph);
System.out.println("Graph: "+ g);
String userName = instance.getPgxUsername();
var userRoles = instance.getPgxUserRoles();
var genericPermissions = instance.getPgxGenericPermissions();
String graphPermission = g.getPermission().toString();
System.out.println("Username is " + userName);
System.out.println("User Roles are " + userRoles);
System.out.println("Generic permissions are " + genericPermissions);
System.out.println("Graph permission is " + graphPermission);
}
finally {
// close the sql statment
if (stmt != null) {
stmt.close();
}
// close the connection
if (conn != null) {
conn.close();
}
}
}
}
実行すると、コードの出力は次のようになります。
Graph: PgxGraph[name=BANK_GRAPH_PG,N=1000,E=5001,created=1625731370402]
Username is ORACLE
User Roles are [GRAPH_DEVELOPER]
Generic permissions are [PGX_SESSION_MODIFY_MODEL, PGX_SESSION_CREATE, PGX_SESSION_NEW_GRAPH, PGX_SESSION_READ_MODEL, PGX_SESSION_ADD_PUBLISHED_GRAPH, PGX_SESSION_GET_PUBLISHED_GRAPH]
Graph permission is MANAGE
親トピック: ロールおよび権限のカスタマイズ
13.2.3.8.2 ロールの追加と削除
認可リストを変更することで、新しいロール権限マッピングを追加したり、既存のマッピングを削除できます。
たとえば:
CREATE ROLE MY_CUSTOM_ROLE_1
GRANT PGX_SESSION_CREATE TO MY_CUSTOM_ROLE1
GRANT PGX_SERVER_GET_INFO TO MY_CUSTOM_ROLE1
GRANT MY_CUSTOM_ROLE1 TO SCOTT
親トピック: ロールおよび権限のカスタマイズ
13.2.3.8.3 個々のユーザーの権限の定義
ロールの権限の定義に加えて、個々のユーザーの権限を定義できます。
たとえば:
GRANT PGX_SESSION_CREATE TO SCOTT GRANT PGX_SERVER_GET_INFO TO SCOTT
親トピック: ロールおよび権限のカスタマイズ
13.2.3.8.4 カスタム・グラフ・アルゴリズムを使用する権限の定義
開発者がカスタム・グラフ・アルゴリズムをコンパイルできるよう、権限を定義できます。
親トピック: ロールおよび権限のカスタマイズ
13.2.3.9 グラフ・サーバーへのアクセス権の取消し
ユーザーがグラフ・サーバーにアクセスできることを取り消すには、pgx.confファイルでアクセス・ルールを定義した方法に応じて、データベースからユーザーを削除するか、ユーザーから対応するロールを取り消します。
たとえば:
REVOKE graph_developer FROM scott
グラフの権限の取消し
グラフに対するMANAGE権限を持っている場合は、PgxGraph#revokePermission
APIを使用して、ユーザーまたはロールからグラフ・アクセス権を取り消すことができます。たとえば:
PgxGraph g = ...
g.revokePermission(new PgxRole("GRAPH_DEVELOPER")) // revokes previously granted role access
g.revokePermission(new PgxUser("SCOTT")) // revokes previously granted user access
親トピック: ユーザーの認証および認可
13.2.3.10 カスタム認可ルールの例
開発者にカスタム認可ルールを定義できます。
例13-1 開発者によるグラフの公開の許可
他のユーザーとのグラフの共有は、可能な場合にはOracle Databaseで行ってください。データベース表でGRANT文を使用して、他のユーザーが表からグラフを作成できるようにします。
グラフ・サーバー(PGX)では、次の権限を使用して、すでにメモリー内にあるグラフをグラフ・サーバーに接続している他のユーザーと共有できます。
表13-6 許可された権限
権限 | この権限によって有効になる操作 |
---|---|
READ |
|
MANAGE |
|
EXPORT |
|
グラフの作成者は、グラフに付与されたMANAGE権限を自動的に取得します。MANAGE権限を持っている場合は、グラフに対するREADまたはEXPORT権限を他のロールまたはユーザーに付与できます。グラフには、MANAGEを付与できません。次のuserAというユーザーの例に、その方法を示します。
import oracle.pgx.api.*
import oracle.pgx.common.auth.*
PgxSession session = GraphServer.getInstance("<base-url>", "<userA>", "<password-of-userA").createSession("userA")
PgxGraph g = session.readGraphWithProperties("examples/sample-graph.json", "sample-graph")
g.grantPermission(new PgxRole("GRAPH_DEVELOPER"), PgxResourcePermission.READ)
g.publish()
PgxSession session = GraphServer.getInstance("<base-url>", "<userB>", "<password-of-userB").createSession("userB")
PgxGraph g = session.getGraph("sample-graph")
g.queryPgql("select count(*) from match (v)").print().close()
同様に、次の例に示すように、グラフはロールではなく個々のユーザーと共有できます。
g.grantPermission(new PgxUser("OTHER_USER"), PgxResourcePermission.EXPORT)
OTHER_USERは、グラフg
に対するEXPORT権限を受け取るユーザーのユーザー名です。
例13-2 開発者による事前ロード済グラフへのアクセスの許可
開発者が事前にロードされたグラフ(グラフ・サーバーの起動時にロードされたグラフ)にアクセスできるようにするには、pgx.confファイルで事前にロードされたグラフに対する読取り権限を付与します。たとえば:
"preload_graphs": [{
"path": "/data/my-graph.json",
"name": "global_graph"
}],
"authorization": [{
"pgx_role": "GRAPH_DEVELOPER",
"pgx_permissions": [{
"preloaded_graph": "global_graph"
"grant": "read"
},
...
READ、EXPORTまたはMANAGE権限を付与できます。
例13-3 開発者によるHadoop分散ファイル・システム(HDFS)またはローカル・ファイル・システムへのアクセスの許可
開発者がHDFSからファイルを読み取れるようにするには、まずHDFSディレクトリを宣言してから、読取りまたは書込み権限にマップする必要があります。たとえば:
CREATE OR REPLACE DIRECTORY pgx_file_location AS 'hdfs:/data/graphs'
GRANT READ ON DIRECTORY pgx_file_location TO GRAPH_DEVELOPER
同様に、GRANT WRITE
を使用して別の権限を追加し、書込みアクセスを許可できます。グラフをエクスポートするには、このような書込みアクセス権が必要です。
ローカル・ファイル・システム(グラフ・サーバーが実行されている場所)へのアクセス権は、同じ方法で付与できます。唯一の違いは、場所がhdfs:
接頭辞のない絶対ファイル・パスになります。たとえば:
CREATE OR REPLACE DIRECTORY pgx_file_location AS '/opt/oracle/graph/data'
前述の構成に加えて、グラフ・サーバー・プロセスを実行するオペレーティング・システム・ユーザーには、これらのディレクトリへの実際の読取りまたは書込みに対応するディレクトリ権限が必要です。
例13-4 Autonomous Databaseでのディレクトリへのアクセスの許可
開発者がOracle Autonomous Databaseのファイルから読取りおよび書込みできるようにするには、次のステップを実行する必要があります。
- SQLベースのOracle Databaseツールのいずれかを使用するか、Webベースの組込みインタフェースであるデータベース・アクションを使用して、ADMINユーザーとしてAutonomous Databaseインスタンスに接続します。
- 次のように、
graph:
接頭辞を使用してディレクトリへのパスを指定して、ディレクトリを作成します。CREATE OR REPLACE DIRECTORY pgx_file_location AS 'graph:/opt/oracle/graph/data'
- 目的のロールにディレクトリに対する読取り権限または書込み権限を付与します。たとえば:
GRANT READ ON DIRECTORY pgx_file_location TO GRAPH_DEVELOPER
親トピック: ユーザーの認証および認可
13.2.3.11 グラフ・サーバー(PGX)に対するKerberos対応の認証
グラフ・サーバー(PGX)では、Kerberosがアイデンティティ・プロバイダとして有効になっているOracle Databaseを使用してユーザーを認証できます。
Kerberosチケットを使用してグラフ・サーバーにログインでき、グラフ・サーバーで実行できるアクションは、Oracle Databaseで付与されているロールによって決まります。
親トピック: ユーザーの認証および認可
13.2.3.11.1 前提条件
グラフ・サーバー(PGX)でKerberos認証を有効にするには、次のシステム要件を満たす必要があります。
- データベースでKerberos認証が有効になっている必要があります。詳細は、Kerberos認証の構成を参照してください。
- グラフ・サーバーが実行されるホストからデータベースとKerberos認証サーバーの両方に到達可能である必要があります。
- データベースがグラフ・サーバー認証用に準備されています。つまり、関連するグラフ・ロールが、グラフ・サーバーにログインするユーザーに付与されています。
13.3 Oracle Graph Clientのインストール
クライアントCLIおよびグラフ・ビジュアライゼーションWebクライアントを使用して、様々なグラフ機能を操作できます。
次の各項では、各種クライアントをインストールするステップについて説明します:
- グラフ・クライアント
Oracle Graphクライアントのインストールでは、JavaおよびPythonクライアントがサポートされています。 - グラフ・ビジュアライゼーションWebクライアント
グラフ・ビジュアライゼーションWebアプリケーションは、スタンドアロン・モードで実行することも、Webコンテナにデプロイすることもできます。
関連トピック
13.3.1 グラフ・クライアント
Oracle Graphクライアントのインストールでは、JavaおよびPythonクライアントがサポートされています。
次の各項では、クライアントをインストールするステップについて説明します:
- Oracle Graph Javaクライアント
Oracle Graph Server and Clientに付属しているoracle-graph-client-23.2.0.zip
ファイルからJavaクライアントをインストールしたり、Maven CentralでJavaクライアントを使用できます。 - Oracle Graph Pythonクライアント
Pythonクライアントをインストールするには、Oracle Graph Server and Clientに付属しているoracle-graph-client-23.2.0.zip
ファイルをダウンロードするか、PyPIからダウンロードします。
親トピック: Oracle Graph Clientのインストール
13.3.1.1 Oracle Graph Javaクライアント
Oracle Graph Server and Clientに付属しているoracle-graph-client-23.2.0.zip
ファイルからJavaクライアントをインストールしたり、Maven CentralでJavaクライアントを使用できます。
- グラフ・サーバーおよびクライアント・ダウンロードからのJavaクライアントのインストール
Oracle Graph Client 23.2.0のzipファイルをダウンロードし、Javaクライアントをインストールできます。 - Maven CentralでのOracle Graph Java Clientの使用
Maven Centralからプロパティ・グラフJavaクライアントを取得できます。
親トピック: グラフ・クライアント
13.3.1.1.1 グラフ・サーバーおよびクライアント・ダウンロードからのJavaクライアントのインストール
Oracle Graph Client 23.2.0のzipファイルをダウンロードし、Javaクライアントをインストールできます。
- Unixベースのオペレーション・システム(Linuxなど)またはmacOSやMicrosoft Windows
- Oracle JDK 11またはJDK 17
ノート:
- JDK 11.0.9
- JDK 11.0.10
- JDK 11.0.11
- JDK 11.0.12
親トピック: Oracle Graph Javaクライアント
13.3.1.1.2 Maven CentralでのOracle Graph Java Clientの使用
Maven Centralからプロパティ・グラフJavaクライアントを取得できます。
- グループ名: com.oracle.database.graph
- アーティファクト名: opg-client
- バージョン: 23.20
次のステップを実行して、Maven CentralからグラフJavaクライアントを使用できます。
親トピック: Oracle Graph Javaクライアント
13.3.1.2 Oracle Graph Pythonクライアント
Pythonクライアントをインストールするには、Oracle Graph Server and Clientに付属しているoracle-graph-client-23.2.0.zip
ファイルをダウンロードするか、PyPIからダウンロードします。
あるいは、Pythonクライアントを埋込みモードでインストールすることもできます。
- Pythonクライアントのインストールの前提条件
- グラフ・サーバーおよびクライアント・ダウンロードからのPythonクライアントのインストール
Graph Server and Clientのダウンロードからoracle-graph-client-23.2.0
のzipファイルをダウンロードして、Pythonクライアントをインストールできます。 - PyPIからのPythonクライアントのインストール
PyPIからプロパティ・グラフのPythonクライアントを取得できます。 - 埋込みモードでのPythonクライアントのインストール
埋込みモードでPythonクライアントをインストールして操作できます。 - Pythonクライアントのアンインストール
このセクションでは、Pythonクライアントをアンインストールする方法について説明します。
親トピック: グラフ・クライアント
13.3.1.2.1 Pythonクライアントをインストールするための前提条件
親トピック: Oracle Graph Pythonクライアント
13.3.1.2.2 グラフ・サーバーおよびクライアント・ダウンロードからのPythonクライアントのインストール
Graph Server and Clientのダウンロードからoracle-graph-client-23.2.0
のzipファイルをダウンロードして、Pythonクライアントをインストールできます。
Pythonクライアントをインストールする前に、システムが必要な前提条件をすべて満たしていることを確認してください。
次のステップを実行して、Pythonクライアントを使用してインストールおよび接続できます:
親トピック: Oracle Graph Pythonクライアント
13.3.1.2.3 PyPIからのPythonクライアントのインストール
PyPIからプロパティ・グラフPythonクライアントを取得できます。
- オペレーティング・システム: Linux、WindowsまたはmacOS (M1またはM2プロセッサ)
- Oracle JDK 8以上
- Python 3.7、3.8または3.9
JAVA_HOME
環境変数を設定していることを確認します。- プロキシがある場合は、
https_proxy
環境変数をプロキシ・サーバーに設定します。
次のように、Pythonクライアントのインストールをインストールおよび検証できます:
親トピック: Oracle Graph Pythonクライアント
13.3.1.2.4 埋込みモードでのPythonクライアントのインストール
埋込みモードでPythonクライアントをインストールして操作できます。
埋込みPythonクライアントをインストールするには:
親トピック: Oracle Graph Pythonクライアント
13.3.1.2.5 Pythonクライアントのアンインストール
このセクションでは、Pythonクライアントをアンインストールする方法について説明します。
Pythonクライアントをアンインストールするには、次のコマンドを実行します。
pip3 uninstall pypgx
親トピック: Oracle Graph Pythonクライアント
13.3.2 グラフ・ビジュアライゼーションWebクライアント
グラフ・ビジュアライゼーションWebアプリケーションは、スタンドアロン・モードで実行することも、Webコンテナにデプロイすることもできます。
- スタンドアロン・モードでのグラフ・ビジュアライゼーション・アプリケーションの実行
グラフ・サーバーのrpm
ファイルをインストールすると、PGXサーバーを起動したときにグラフ・ビジュアライゼーション・アプリケーションがデフォルトで起動します。 - グラフ・ビジュアライゼーション・アプリケーションのデプロイ
oracle-graph-webapps-<version>.zip
パッケージをダウンロードし、Webアプリケーション・アーカイブ(WAR
)ファイルをOracle Weblogic 12.2 (以降)またはApache Tomcat (9.x以降)のWebコンテナにデプロイする必要があります。 - PGQLドライバ選択のための拡張オプションの構成
グラフ・ビジュアライゼーション・アプリケーションは、グラフ・サーバー(PGX)またはOracle Databaseと通信するように構成できます。
親トピック: Oracle Graph Clientのインストール
13.3.2.1 スタンドアロン・モードでのグラフ・ビジュアライゼーション・アプリケーションの実行
グラフ・サーバーのrpm
ファイルをインストールすると、PGXサーバーを起動したときにグラフ・ビジュアライゼーション・アプリケーションがデフォルトで起動します。
詳細は、Oracle Graph Serverのインストールを参照してください。
親トピック: グラフ・ビジュアライゼーションWebクライアント
13.3.2.2 グラフ・ビジュアライゼーション・アプリケーションのデプロイ
oracle-graph-webapps-<version>.zip
パッケージをダウンロードし、Webアプリケーション・アーカイブ(WAR
)ファイルをOracle Weblogic 12.2 (以降)またはApache Tomcat (9.x以降)のWebコンテナにデプロイする必要があります。
- Apache Tomcatへのグラフ・ビジュアライゼーション・アプリケーションのデプロイ
- Oracle WebLogic Serverでのグラフ・ビジュアライゼーション・アプリケーションのデプロイ
次の手順は、Oracle WebLogic Server 12.2.1.3にグラフ・ビジュアライゼーション・アプリケーションをデプロイするためのものです。必要に応じて、異なるバージョンのWeblogic Serverに対してわずかな変更を加える必要がある場合があります。
親トピック: グラフ・ビジュアライゼーションWebクライアント
13.3.2.2.1 Apache Tomcatへのグラフ・ビジュアライゼーション・アプリケーションのデプロイ
13.3.2.2.2 Oracle WebLogic Serverでのグラフ・ビジュアライゼーション・アプリケーションのデプロイ
次の手順は、Oracle WebLogic Server 12.2.1.3にグラフ・ビジュアライゼーション・アプリケーションをデプロイするためのものです。必要に応じて、異なるバージョンのWeblogic Serverに対してわずかな変更を加える必要がある場合があります。
- Oracle Software Delivery CloudからOracle Graph Webapps zipファイルをダウンロードします。このファイルには、すぐにデプロイできるJava Webアプリケーション・アーカイブ(.warファイル)が含まれます。ファイル名は、
oracle-graph-webapps-<version>.zip
のようになります - WebLogic Serverを起動します。
# Start Server cd $MW_HOME/user_projects/domains/base_domain ./bin/startWebLogic.sh
- トンネリングを有効にします。
グラフ・ビジュアライゼーション・アプリケーションWARファイルをHTTP経由でデプロイできるようにするには、最初にトンネリングを有効にする必要があります。WebLogic管理コンソール(デフォルトでは
http://localhost:7001/console
)に移動します。「環境」(左パネル)→「サーバー」(左パネル)を選択します。グラフ・ビジュアライゼーションを実行するサーバーをクリックします(メイン・パネル)。選択し(上部タブ・バー)、「トンネリングの有効化」を選択して「保存」をクリックします。 graphviz-<version>-pgviz<graphviz-version>-wls.war
ファイルをデプロイします。WAR
ファイルをWebLogic Serverにデプロイするには、次のコマンドを使用して、<<...>>
マーカーを、インストールに一致する値に置き換えます。cd $MW_HOME/user_projects/domains/base_domain source bin/setDomainEnv.sh java weblogic.Deployer -adminurl <<admin-console-url>> -username <<admin-user>> -password <<admin-password>> -deploy -upload <<path/to>>/graphviz-<<version>>-pgviz<<graphviz-version>>.war
アンデプロイするには、次のコマンドを使用できます。
java weblogic.Deployer -adminurl <<admin-console-url>> -username <<admin-user>> -password <<admin-password>> -name <<path/to>>/graphviz-<<version>>-pgviz<<graphviz-version>>.war -undeploy
デプロイメントをテストするには、ブラウザを使用して
https://<<fqdn-ip>>:<<port>>/ui
にナビゲートします。図13-1に示すように、グラフ・ビジュアライゼーションのログイン画面が表示されます。
- データベース資格証明を入力し、必要なPGQLドライバを構成します。
詳細は、PGQLドライバ選択のための拡張オプションの構成を参照してください。
- 「送信」をクリックします。
これでログインしたので、グラフ・ビジュアライゼーション問合せユーザー・インタフェース(UI)が表示され、PGXからグラフが取得されます。
問合せのビジュアライゼーション・ページのタイトル・バーには、関連するURLとともに接続モードが表示されます。
13.3.2.3 PGQLドライバ選択のための拡張オプションの構成
グラフ・ビジュアライゼーション・アプリケーションは、グラフ・サーバー(PGX)またはOracle Databaseと通信するように構成できます。
必要な構成は、グラフ・ビジュアライゼーションのログイン・ページの拡張オプション設定を使用して、ログイン時に適用できます。
必要に応じて適切な手順に従って、PGQLドライバを動的に変更および構成できます。
親トピック: グラフ・ビジュアライゼーションWebクライアント
13.3.2.3.1 グラフ・サーバー(PGX)でのPGQL用のグラフ・ビジュアライゼーション・アプリケーションの構成
親トピック: PGQLドライバ選択のための拡張オプションの構成
13.3.2.3.2 データベースでのPGQL用のグラフ・ビジュアライゼーション・アプリケーションの構成
親トピック: PGQLドライバ選択のための拡張オプションの構成
13.4 トランスポート層セキュリティの設定
グラフ・サーバー(PGX)は、デフォルトで、トランスポート層セキュリティ(TLS)を使用する暗号化された接続のみを許可します。TLSでは、サーバーがクライアントにサーバー証明書を提示する必要があり、クライアントはその証明書の発行者を信頼するように構成されている必要があります。
このリリースのGraph Server and Clientでは、RPMファイルのインストールによって、デフォルトで自己署名サーバー・キーストア・ファイルが生成されます。このserver_keystore.jks
ファイルには、サーバー証明書およびサーバー秘密キーが含まれ、サーバーがTLSを有効にするために/etc/oracle/graph
に生成されます。生成されたキーストアのデフォルトのパスワードはchangeit
であり、次のように/etc/systemd/system/pgx.service
ファイルで環境変数PGX_SERVER_KEYSTORE_PASSWORD
を使用して構成されます。
[Service]
Environment="PGX_SERVER_KEYSTORE_PASSWORD=changeit"
このデフォルトのキーストア構成が開始するのに十分な場合および接続先がlocalhost
のみである場合は、「自己署名キーストアを信頼するためのクライアントの構成」にスキップできます。
自己署名サーバー証明書を使用する場合は、「自己署名サーバー証明書の使用」を参照してください。ただし、サーバー構成フィールドserver_cert
およびserver_private_key
は非推奨であり、今後のリリースでサポートされなくなることに注意してください。その後は、サーバー・キーストアを使用してサーバー証明書およびサーバー秘密キーを格納する必要があります。
- 自己署名サーバー・キーストアの使用
この項では、/etc/oracle/graph
に自己署名キーストアを生成し、このキーストアを使用するようにグラフ・サーバー(PGX)およびクライアントを構成するステップについて説明します。 - 自己署名サーバー証明書の使用
この項では、/etc/oracle/graph
に自己署名証明書を生成し、この証明書を使用するようにグラフ・サーバー(PGX)を構成するステップについて説明します。
13.4.1 自己署名サーバー・キーストアの使用
この項では、/etc/oracle/graph
に自己署名キーストアを生成し、このキーストアを使用するようにグラフ・サーバー(PGX)およびクライアントを構成するステップについて説明します。
- 自己署名サーバー・キーストアの生成
keytool
コマンドを使用してサーバー・キーストアを作成できます。 - サーバー・キーストアを使用する際のグラフ・サーバー(PGX)の構成
グラフ・サーバー(PGX)構成ファイルで、サーバー・キーストアへのパスを指定する必要があります。 - 自己署名キーストアを信頼するためのクライアントの構成
自己署名キーストアを受け入れるようにクライアント・アプリケーションを構成する必要があります。
親トピック: トランスポート層セキュリティの設定
13.4.1.1 自己署名サーバー・キーストアの生成
keytool
コマンドを使用してサーバー・キーストアを作成できます。
親トピック: 自己署名サーバー・キーストアの使用
13.4.1.2 サーバー・キーストアを使用する際のグラフ・サーバー(PGX)の構成
グラフ・サーバー(PGX)構成ファイルで、サーバー・キーストアへのパスを指定する必要があります。
ノート:
Webアプリケーションのダウンロード・パッケージを使用してグラフ・サーバーをWebサーバーにデプロイする場合、このセクションは適用されません。TLSの構成方法の詳細は、Webサーバーのマニュアルを参照してください。親トピック: 自己署名サーバー・キーストアの使用
13.4.1.3 自己署名キーストアを信頼するためのクライアントの構成
自己署名キーストアを受け入れるようにクライアント・アプリケーションを構成する必要があります。
- JavaまたはPythonクライアントの場合、すべてのクライアントによって使用されるすべてのJavaインストールにルート証明書をインポートする必要があります。
ノート:
JShellクライアントには、Java 11以降が必要です。 - グラフ・ビジュアライゼーション・アプリケーションの場合、グラフ・サーバー(PGX)を実行している環境のシステムJavaインストールまたはグラフ・ビジュアライゼーション・アプリケーションを提供するWebサーバーにルート証明書をインポートする必要があります。つまり、グラフ・ビジュアライゼーション・アプリケーションを提供するサーバーを実行しているOSユーザーが使用するJDKインストールです。
- グラフZeppelinインタプリタ・クライアントの場合、Zeppelinサーバーが使用するJavaインストールにルート証明書をインポートする必要があります。
次のステップに示すように、ルート証明書をインポートできます。
親トピック: 自己署名サーバー・キーストアの使用
13.4.2 自己署名サーバー証明書の使用
この項では、/etc/oracle/graph
に自己署名証明書を生成し、この証明書を使用するようにグラフ・サーバー(PGX)を構成するステップについて説明します。
- 自己署名サーバー証明書の生成
openssl
コマンドを使用して自己署名サーバー証明書を作成できます。 - グラフ・サーバー(PGX)の構成
グラフ・サーバー(PGX)構成ファイルで、サーバー証明書とサーバーの秘密キーへのパスをPEM形式で指定する必要があります。 - 自己署名証明書を信頼するためのクライアントの構成
自己署名付きグラフ・サーバー(PGX)証明書を受け入れるようにクライアント・アプリケーションを構成する必要があります。
親トピック: トランスポート層セキュリティの設定
13.4.2.1 自己署名サーバー証明書の生成
openssl
コマンドを使用して、自己署名サーバー証明書を作成できます。
親トピック: 自己署名サーバー証明書の使用
13.4.2.2 グラフ・サーバー(PGX)の構成
グラフ・サーバー(PGX)構成ファイルで、サーバー証明書へのパスとサーバーの秘密キーをPEM形式で指定する必要があります。
ノート:
Webアプリケーションのダウンロード・パッケージを使用してグラフ・サーバーをWebサーバーにデプロイする場合、このセクションは適用されません。TLSの構成方法の詳細は、Webサーバーのマニュアルを参照してください。親トピック: 自己署名サーバー証明書の使用
13.4.2.3 自己署名証明書を信頼するためのクライアントの構成
グラフ・サーバー(PGX)の自己署名証明書を受け入れるようにクライアント・アプリケーションを構成する必要があります。
- JavaまたはPythonクライアントの場合、すべてのクライアントによって使用されるすべてのJavaインストールにルート証明書をインポートする必要があります。
ノート:
JShellクライアントには、Java 11以降が必要です。 - グラフ・ビジュアライゼーション・アプリケーションの場合、グラフ・サーバー(PGX)を実行している環境のシステムJavaインストールまたはグラフ・ビジュアライゼーション・アプリケーションを提供するWebサーバーにルート証明書をインポートする必要があります。つまり、グラフ・ビジュアライゼーション・アプリケーションを提供するサーバーを実行しているOSユーザーが使用するJDKインストールです。
- グラフZeppelinインタプリタ・クライアントの場合、Zeppelinサーバーが使用するJavaインストールにルート証明書をインポートする必要があります。
次のステップに示すように、ルート証明書をインポートできます。
親トピック: 自己署名サーバー証明書の使用