次のように、IPアドレスをアクセスDBサーバーにフィルターしました。
Sqlnet.oraを設定する
tcp.validnode_checking = YES
tcp.invited_nodes = (localhost, 192.168.100.130, 192.168.100.186)
しかし、私のOracle_HOMEには、複数のデータベースがあります。たとえば、DB WORKSHOPとDB COURSE
各DBのデータベースへの接続について質問します。例:
DB WORKSHOP only can be access from 192.168.100.130
DB COURSE only can be access from 192.168.100.186
それを作るために私は何ができますか?
これを行う純粋なOracleの唯一の方法は、2つの異なるOracle_HOMEを使用するのではなく、2つの異なるOracle_HOMEから異なるポートで2つの別個のリスナーを実行することだと思います。
これにアプローチするはるかに健全な方法は、他のセキュリティ対策を使用することです...このタスクでは、個別のユーザー名とパスワードがかなり一般的です-LDAPまたはこれを防ぐ何かを使用している必要があると思います。別のオプションは、リモートIPをチェックし、それが正しいマシンからのものでない場合はセッションを切断する、各データベースのログイントリガーです。
select SYS_CONTEXT('USERENV','IP_ADDRESS') from dual;
...リモートIPアドレスを提供します。
次のようなトリガー
CREATE OR REPLACE TRIGGER DENY_LOGIN
AFTER LOGON ON DATABASE
DECLARE
foo varchar2(128);
BEGIN
IF ( sys_context('userenv','ip_address') <> '192.168.100.130' )
THEN
raise_application_error( -20001, 'Connection not authorised' );
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
... DB WORKSHOPのジョブを実行します。
(テストされていませんが、問題ないはずです)
おそらく、DBAもlocalhostからログインできるようにする句を追加するか、完全に除外することをお勧めします。
異なるポートで異なるリスナーを使用できない場合は、Oracle Connection Managerを調査することをお勧めします。接続マネージャは、複数の接続を集中させたり、複数のプロトコルをサポートしたりするなど、多くの機能を提供します。それはまたあなたの路地のすぐ上に聞こえるネットワークアクセス制御を扱うことができます。着信接続要求をフィルタリングするためのルールを定義するCMAN_RULESを作成できます。彼らは含めることができます:
接続マネージャの詳細については、こちらをご覧ください 接続マネージャのドキュメント
私はそれを接続の集中に使用しました-VPN経由でデータベースにアクセスする必要があるクライアントがありました。ファイアウォールは、すべての接続に対して1つのポートを開くように構成されていました。 CMANを使用して、この1つのポートですべてのトラフィックを処理することができました。