version 11.3 (Modified)
4D v11はパワフルなSQLサーバを含んでいて、4Dデータベースに格納されたデータへの外部からのアクセスを可能としています。サードパーティのアプリケーションや4Dアプリケーションでは、4D ODBC Driverを使用してアクセスします。また、4Dクライアントと4Dサーバアプリケーションの間では、ダイレクトに接続します。そして、すべての接続はTCP/IPプロトコールによって実現します。
4DアプリケーションのSQLサーバはいつでも停止あるいは開始できます。さらにパフォーマンスやセキュリティのためTCPポートを変更したり、待ち受けIPアドレスを指定したり、4Dデータベースへのアクセスを制限したりできます。
SQLサーバへの外部アクセス
4D SQLサーバへの外部アクセスはODBC (すべての設定) を経由、または直接 (4Dのサーバに接続されている4Dクライアントアプリケーション) 行われます。4DはODBC driverを提供しており、サードパーティアプリケーション (ExcelR タイプのスプレッドシートや他のDBMS等) や他の4Dアプリケーションが4D SQLサーバに接続できるようにしています。以下の図はこのことを示しています:
青字: ODBC経由の接続
赤字: ダイレクト接続
クエリレベルでは、ダイレクト外部接続、またはODBC経由の接続は、SQL LOGINコマンドで実行されます。詳細については、このコマンドのリファレンスを参照して下さい。
・ODBC経由の接続: 4DのODBC driverを使用して、あらゆるサードパーティのアプリケーション (ExcelR タイプのスプレッドシートや他のDBMS等) 、及び他の4Dアプリケーションと4DのSQLサーバを接続することができます。4D ODBC driverは、SQLクライアントが動作するマシンにインストールします。4D ODBC driverのインストールと設定は別マニュアルで説明しています。
・ダイレクト接続: 4D Server v11 SQLアプリケーションだけが、他の4DアプリケーションからのダイレクトSQLクエリに応答することができます。これと同様、 "プロフェッショナル" プロダクトラインの4Dアプリケーションだけが、ダイレクトに他の4Dアプリケーションへ接続できます。ダイレクト接続が実行されている間のデータ交換は、データ統合と同期性に関連する問題を排除する同期モードで自動的に実行されます。一つのプロセスにつき、一つの接続だけを許可するため、同時に幾つかの接続を設定する場合、必要となるすべてのプロセスを作成しなければなりません。ダイレクト接続は、4D Serverの "環境設定" の"SQL" ページにあるSSLを有効にする オプションを有効にすることによって保護することができます。SQLサーバが開始した場合、ダイレクト接続は4Dサーバのみによって許可されます。ダイレクト接続の主な利点は、データ交換のスピードが速くなることです。
4D SQLサーバの開始と停止
4D v11では、SQLサーバを三つの方法で開始または停止できます:
・4Dアプリケーションの実行メニューから、SQLサーバ開始/SQLサーバ停止コマンドを選択する:
Note: 4Dサーバでは、このメニューコマンドは、SQL Server Pageのボタンからアクセスできます。
サーバが起動されていると、このメニュー項目はSQLサーバ停止に代わります。
・環境設定でアプリケーションの開始時に自動で起動するよう設定する。これを行うには、SQL/設定ページで開始時にSQLサーバを起動するオプションにチェックを入れます:
・(“SQL”テーマの) START SQL SERVERやSTOP SQL SERVERコマンドを使用してプログラムを制御する。
SQLサーバが停止している (またはまだ開始されていない場合)、4Dは外部からのSQLクエリに応答しません。
注: SQLサーバの停止は、4D SQLエンジンの内部動作には影響しません。内部クエリでは常にSQLエンジンは有効です。
SQLサーバの公開設定
4Dに統合されたSQLサーバの公開パラメタを変更できます。このパラメタはデータベース環境設定のSQL/設定ページで見つけることができます。
・開始時にSQLサーバを起動するオプションを使用して、アプリケーションの開始時にSQLサーバを起動することができます。
? TCP Port: デフォルトで4D SQLサーバはTCPポート1919に応答します。このポートが他のサービスで既に使用されていたり、あなたの接続パラメタが他の設定を必要とする場合は、4D SQLサーバが使用するポート番号を変更できます。
Note: 0を指定すると、4DはデフォルトのTCPポート1919を使用します。
・IPアドレス: SQLサーバがSQLクエリを処理するために使用する、マシンのIPアドレスを限定することができます。デフォルトではすべてが選択されていて、サーバはすべてのIPアドレスへのクエリに応答します。
“IPアドレス”ドロップダウンリストには、マシンに設定されているすべてのIPアドレスがリストされます。特定のアドレスを選択すると、サーバはこのIPアドレスに送信されたクエリのみに応答します。
これは複数のTCP/IPアドレスを持つマシン上で動作する4Dアプリケーションで有効な設定です。
Note: クライアント側では、アプリケーションが接続するSQLサーバのIPアドレスやポート番号は、ODBCデータソース定義で正しく設定しなければなりません。
・SSLを有効にする: このオプションは、SQL接続を処理する際にSQLサーバがSSLプロトコルを使用するかしないかを指定します。このオプションをチェックした時は、key.pemとcert.pemファイルを以下の場所へコピーして下さい。
MyDatabase/Preferences/SQL ("MyDatabase"がデータベースフォルダ/パッケージを表す場所)
・Flash Playerリクエストを許可する: このオプションで、4D SQLサーバによるFlash Playerリクエストをサポートするためのメカニズムを有効できます。このメカニズムは、データベース(Preferences/SQL/Flash/) の環境設定フォルダにある"socketpolicy.xml" という名前のファイルの存在に基づきます。このファイルはFlash Playerによってリクエストされ、ドメインをまたいだ接続やFlex (Web 2.0) アプリケーションのソケットによる接続を可能にします。
4Dの以前のバージョンでは、このファイルを手作業で追加しなければなりませんでした。これからは、Flash Playerリクエストを許可するオプションをチェックすることにより起動します。Flash Playerリクエストが受け入れられ、必要に応じて、データベース用の汎用"socketpolicy.xml" ファイルが作成されます。このオプションの選択を解除した場合、 "socketpolicy.xml" ファイルは無効となります(名前変更)。後にSQLサーバが受け取るすべてのFlash Playerクエリは拒否されます。
データベースを開いた時、オプションがチェックされているか否かは、データベースの環境設定フォルダにある有効な"socketpolicy.xml" ファイルの存在に基づきます。
Note: 4D SQL SET OPTIONコマンドで外部リクエストを処理するために、SQLサーバによるコード化も可能です
デフォルトスキーマに対するSQLアクセスコントロール
セキュリティの理由で、SQLサーバに送信された外部クエリが4Dデータベースで行うことのできるアクションを制限できます。
二つのレベルでコントロールが可能です:
・許可するアクションのタイプ
・クエリを行うユーザ
これらはデータベース環境設定のSQL/設定ページで設定できます。
このダイアログボックスにある設定されているパラメタはデフォルトスキーマに応用されます。実際4Dの11.3バージョン以降では、外部からのデータベースへのアクセスは、SQLスキーマ(Principles for integrating 4D and the 4D SQL engineの節を参照)のコンセプトに基づいてコントロールされています。カスタムスキーマを作成しない場合、すべてのデータベースのテーブルはデフォルトスキーマに含まれます。特定のアクセス権で他のスキーマを作成し、それらをテーブルに割り当てる場合、カスタムスキーマに含まれていないテーブルのみが、デフォルトスキーマに含まれます。
SQLサーバによるデフォルトスキーマの4Dデータベースアクセスにおいて、三つのタイプの設定ができます:
・“読み込みのみ (データ)”: データベーステーブルのすべてのデータに対する無制限の読み込みアクセス。レコードの追加、更新、削除のほか、データベースストラクチャに対する変更もできません。
・“読み書き可能 (データ)”: データベーステーブルのすべてのデータへの読み書き (追加、更新、削除) アクセスが可能です。データベースストラクチャの更新は許可されません。
・“フルアクセス (データとデザイン)”: データベーステーブルのすべてのデータへの読み書き (追加、更新、削除) およびデータベースストラクチャの更新 (テーブル、フィールド、リレーションなど) が許可されます。
それぞれのアクセスタイプごとにグループを割り当てることができます。三つのオプションが選択可能です:
・ <Nobody>: このオプションを選択すると、指定されたアクセスタイプのアクセスは、クエリの発行元にかかわらず拒否されます。このパラメタは4Dパスワードアクセス管理システムが有効でない場合でも使用できます。
・ <すべてのグループ>: このオプションを選択すると、指定されたアクセスタイプのアクセスは、制限なしにすべてのクエリに対して許可されます。
・グループ: このオプションは、ユーザのグループを作成し、特定のアクセスタイプへのアクセスを行うことができるユーザを指定するために使用します。このオプションを使用するためには4Dパスワードしてむが有効になっていなければなりません。クエリ元のユーザは、SQLサーバへのODBC経由の接続時、ユーザ名とパスワードを提示します。
警告: このメカニズムは4Dパスワードシステムに依存します。SQLサーバに対するアクセスをコントロールするためには、(Designerにパスワードを設定して、) 4Dパスワードシステムが有効になっていなければなりません。
Note: 4Dプロジェクトメソッドごとに追加のセキュリティオプションを設定できます。詳細はPrinciples for integrating 4D and the 4D SQL engine節の"SQL利用可オプション"を参照してください。