20.5 DBMS_CLOUDの場合のACEを使用したデータベースの構成
オブジェクト・ストアやその他の信頼できるhttps
エンドポイント(URI)と通信できるようにするには、アクセス制御エントリ(ACE)を作成します。
デフォルトでは、Oracle Databaseでは外部通信は許可されません。オブジェクト・ストアへのアクセスを提供するには、適切なアクセス制御エントリを有効にする必要があります。ご使用のデータベースがファイアウォールの後ろにある場合は、インターネット・ゲートウェイに関する情報を指定し、アクセス制御エントリ(ACE)を適切に構成する必要があります。
HTTPプロキシを使用してインターネットに接続している場合は、ご使用のデータベースを、ゲートウェイをセキュアに使用できるように構成する必要があります。この構成プロセスでは、データベースを、ゲートウェイを介して外部ネットワーク・サービスにアクセスできるようにしてから、DBMS_CLOUD
の外部ネットワーク・サービスについてHTTPプロキシ・ゲートウェイを使用するように構成する必要があります。
-
データベースを、ゲートウェイを介して外部ネットワーク・サービスにアクセスできるようにします。それにより、そのデータベースでオブジェクト・ストアにアクセスできるようになります。
そのスキーマ所有の
DBMS_CLOUD
用の外部ネットワーク・サービスのためにHTTPプロキシ・ゲートウェイにアクセスできるようにするには、APPEND_HOST_ACE
プロシージャでパラメータDBMS_NETWORK_ACL_ADMIN
パッケージを使用して、そのデータベースのアクセス制御リストを追加します。ここでのyour-proxy-host-DNS-name
は、HTTPプロキシ・ゲートウェイ・ホストの名前またはIPアドレスです。host=your-proxy-host-DNS-name
たとえば、HTTPプロキシ設定が
http://myproxyhost.mydomain:99
である場合は、'myproxyhost.mydomain
'と入力します。low_port=your_proxy_low_port high_port=your_proxy_high_port
これら2つのパラメータは、NULLかポート番号にできます。デフォルトでは、TCP接続のポート制限はありません。HTTPプロキシの通信先の特定のポートへのアクセスを制限するには、そのロー・ポートおよびハイ・ポートの両方と同じポートを使用します。次の例では、これら両方のパラメータがポート99に設定されています。
-
DBMS_CLOUD
の外部ネットワーク・サービスにHTTPプロキシ・ゲートウェイを使用するように、データベースを構成します。DBMS_CLOUD
は、内部で、UTL_HTTP
を利用してRESTコールを再帰的に発行します。DBMS_CLOUD
のプロキシURI情報は、UTL_HTTP.SET_PROXY(). proxy_uri=your-proxy-URI-address
で設定されているプロキシURI形式に従って、データベース・プロパティ'http_proxy'
で設定します。プロキシには、プロキシ・サーバーのリスニング先となるTCP/IPポートの番号(オプション)を含めることができます。構文は、http://host:port
です。たとえば、www-proxy.my-company.com:80
のようになります。このポートがプロキシに対して指定されていない場合は、デフォルトで、ポート80が使用されます。オプションで、ドメインごとやホストごとにポート番号を指定できます。ポート番号が指定されている場合、プロキシなしの制限事項が適用されるのは、特定のドメインまたはホストのポートでの要求のみです。たとえば、
corp.my-company.com、eng.my-company.com:80
です。no_proxy_domains
の値がNULL
でプロキシが設定されている場合、要求はすべてプロキシを経由して送信されます。プロキシが設定されていない場合は、UTL_HTTP
により、要求がターゲットWebサーバーに直接送信されます。指定する必要がある、プロキシのユーザー名とパスワードは、プロキシ文字列で定義できます。その書式は、
http://user:password@host:port
です。DBMS_NETWORK_ACL_ADMIN
パッケージの使用による外部ネットワーク・サービスについてのアクセス制御の構成の詳細は、このトピックの下部にある「外部ネットワーク・サービスのアクセス制御の構成の構文」の項のリンクを参照してください。データベースを構成するには、コマンドをSQLスクリプトにラップし、
SYS
としてCDB$ROOT
コンテナに接続することでマルチテナント環境でそれらのコマンドを実行します。パス$ORACLE_HOME/rdbms/admin/sqlsessend.sql
にあるsqlsessstart.sql
テンプレート・スクリプトを使用することでスクリプトを作成します。ご使用の環境に合わせてカスタマイズしたバージョンのスクリプトを保存し、そのスクリプトを実行します。
例20-1 DBMS_CLOUDにHTTPおよびHTTP_PROXYを使用するようにデータベースを構成
このコード例の内容全体を切り取って新しいSQLスクリプト(configure_cloud_user.sql
など)に貼り付け、環境に応じて更新します。このコード例では、プロキシURLおよびホスト値の設定方法を説明するコメントがスクリプト自体に含まれています。独自の値でこのスクリプトを構成した場合は、その後、SYS
としてCDB$ROOT
コンテナに接続することで、ご使用のマルチテナント環境でそのスクリプトを実行できます。
ノート:
ご使用の環境用に変数を正しく設定してあることを確認してください。それらを正しく設定していないと、DBMS_CLOUD
が正しく機能しません。
@$ORACLE_HOME/rdbms/admin/sqlsessstart.sql
-- you must not change the owner of the functionality to avoid future issues
define clouduser=C##CLOUD$SERVICE
-- CUSTOMER SPECIFIC SETUP, NEEDS TO BE PROVIDED BY THE CUSTOMER-- - SSL Wallet directory
define sslwalletdir=<Set SSL Wallet Directory>
---- UNCOMMENT AND SET THE PROXY SETTINGS VARIABLES IF YOUR ENVIRONMENT NEEDS PROXYS--
-- define proxy_uri=<your proxy URI address>
-- define proxy_host=<your proxy DNS name>
-- define proxy_low_port=<your_proxy_low_port>
-- define proxy_high_port=<your_proxy_high_port>
-- Create New ACL / ACE s
begin
-- Allow all hosts for HTTP/HTTP_PROXY
dbms_network_acl_admin.append_host_ace(
host =>'*',
lower_port => 443,
upper_port => 443,
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name => upper('&clouduser'),
principal_type => xs_acl.ptype_db
)
);
--
-- UNCOMMENT THE PROXY SETTINGS SECTION IF YOUR ENVIRONMENT NEEDS PROXYS
--
-- Allow Proxy for HTTP/HTTP_PROXY
-- dbms_network_acl_admin.append_host_ace(
-- host =>'&proxy_host',
-- lower_port => &proxy_low_port,
-- upper_port => &proxy_high_port,
-- ace => xs$ace_type(
-- privilege_list => xs$name_list('http', 'http_proxy'),
-- principal_name => upper('&clouduser'),
-- principal_type => xs_acl.ptype_db));
--
-- END PROXY SECTION
--
-- Allow wallet access
dbms_network_acl_admin.append_wallet_ace(
wallet_path => 'file:&sslwalletdir',
ace => xs$ace_type(
privilege_list =>xs$name_list('use_client_certificates', 'use_passwords'),
principal_name => upper('&clouduser'),
principal_type => xs_acl.ptype_db));
end;
/
-- Setting SSL_WALLET database property
begin
if sys_context('userenv', 'con_name') = 'CDB$ROOT' then
execute immediate 'alter database property set ssl_wallet=''&sslwalletdir''';
--
-- UNCOMMENT THE FOLLOWING COMMAND IF YOU ARE USING A PROXY
--
-- execute immediate 'alter database property set http_proxy=''&proxy_uri''';
end if;
end;
/
@$ORACLE_HOME/rdbms/admin/sqlsessend.sql
ホーム・ディレクトリ/home/oracle
の下のdbc
という作業ディレクトリに、dbc_aces.sql
という名前の、ご使用の環境の値を含む変更済バージョンのスクリプトを保存してあると仮定し、次のコマンドを実行してデータベースを構成します:
# Connect to CDB$ROOT
connect sys/your-password as sysdba
@@/home/oracle/dbc/dbc_aces.sql
スクリプトの実行後、その設定が、ご使用の環境用の正しい値であることを確認します。
HTTP_PROXY
のエントリは、ご使用の環境で不要な場合は表示されません。- プロパティ
SSL_WALLET
では、ウォレットが存在するディレクトリが示されます。