20.7.2 DBMS_CLOUDを使用するためのユーザーまたはロールに対するACEの構成
DBMS_CLOUD
のすべての機能をユーザーまたはロールに提供するには、適切なアクセス制御エントリ(ACE)を有効にする必要があります。
DBMS_CLOUD
パッケージ・ファミリには、適切なINVOKER
権限があります。このため、適切なアクセス制御エントリ(ACE)を有効にして、ユーザーまたはロールがDBMS_CLOUD
パッケージ・ファミリのすべての機能を獲得できるようにする必要があります。これらのACEは、DBMS_CLOUD
に対するものと同様です。
複数のユーザーがいる場合にこのような権限を管理しやすいように、ロールを介して必須権限を付与することをお薦めします。
例20-4 ロールを使用したアクセス権の付与
このスクリプト例では、DBMS_CLOUD機能を有効にするために必要なコマンドを示します。これらのコマンドをSQLスクリプトにラップし、SYS
として、DBMS_CLOUD機能をユーザーやロールに提供する必要があるCDBまたはPDBで、このスクリプトを実行します。
このスクリプト例では、ローカル・ロールCLOUD_USER
を使用し、ローカル・ユーザーSCOTT
に権限を付与します。このスクリプトは、ご使用のPDB環境用に、必要に応じて変更できます。PDB内で、特権管理者としてこのスクリプトを実行します(SYS
やSYSTEM
など)。
@$ORACLE_HOME/rdbms/admin/sqlsessstart.sql
-- target sample roledefine cloudrole=CLOUD_USER
-- 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 / ACEs
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('&cloudrole'),
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('&cloudrole'),
-- 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('&cloudrole'),
principal_type => xs_acl.ptype_db));
end;
/
@$ORACLE_HOME/rdbms/admin/sqlsessend.sql
例20-5 個別ユーザーに対するアクセス権の付与
このスクリプト例では、前述のようにローカル・ユーザーSCOTT
がDBMS_CLOUD
権限ありで作成されていることが前提となっており、そのユーザーにアクセス権を付与しています。このスクリプトは、ご使用のPDB環境用に、必要に応じて変更できます。
@$ORACLE_HOME/rdbms/admin/sqlsessstart.sql
-- target sample user
define clouduser=SCOTT
-- CUSTOMER SPECIFIC SETUP, NEEDS TO BE PROVIDED BY THE CUSTOMER
-- - SSL Wallet directory
define sslwalletdir=<Set SSL Wallet Directory>
-- Proxy definition
-- 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 / ACEs
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;
/
@$ORACLE_HOME/rdbms/admin/sqlsessend.sql
このアクセス権スクリプトを実行すると、以前に最小限のDBMS_CLOUD
権限が付与されていたユーザーまたはロールが、DBMS_CLOUD
ファミリのパッケージを使用するように適切に構成され有効化されます。