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内で、特権管理者としてこのスクリプトを実行します(SYSSYSTEMなど)。

@$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 個別ユーザーに対するアクセス権の付与

このスクリプト例では、前述のようにローカル・ユーザーSCOTTDBMS_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ファミリのパッケージを使用するように適切に構成され有効化されます。