顧客管理Walletを使用した外部コールの実行
Autonomous AI Databaseインスタンスがプライベート・エンドポイントにある場合は、UTL_HTTP、DBMS_LDAP、UTL_SMTPまたはUTL_TCPのプロシージャを使用して、顧客管理ウォレットを使用できます。また、スケジューラがスケジューラ・ジョブに関連する様々なイベントのSMTP電子メール通知を送信するときに、顧客管理ウォレットを使用することもできます。
外部コールでの顧客管理Walletの使用について
Autonomous AI Databaseインスタンスがプライベート・エンドポイント上にある場合は、顧客管理ウォレットを使用して外部コールを処理するか、スケジューラがスケジューラ・ジョブに関連する様々なイベントの電子メールを送信するときにスケジューラを使用できます。
Autonomous AI Databaseでは、次のいずれかの目的で外部コールを実行できます:
-
Webサービスを
UTL_HTTPとともに使用します。 -
DBMS_LDAPを使用してLDAPサーバーからデータにアクセスします。 -
UTL_SMTPで電子メールを送信します。 -
UTL_TCPでTCP/IPを使用して外部TCP/IPベースのサーバーと通信する場合。 -
Oracle Schedulerジョブの電子メール通知用。
デフォルトでは、これらのパッケージのプロシージャを使用すると、Autonomous AI Databaseは内部ウォレットを維持し、常にセキュアな接続を使用します(Oracleマネージド・ウォレットには、最も一般的な信頼できるルートおよび中間SSL証明書の90を超えるものが含まれています)。自律型AIデータベースがプライベート・エンドポイントにある場合、信頼できる中間SLL認定でデフォルトのOracle管理ウォレットを使用するか、顧客管理ウォレットを提供するかを選択できます。
Autonomous AI Databaseがプライベート・エンドポイントに存在する場合、次のPL/SQLプロシージャを使用して、UTL_HTTP、UTL_SMTP、DBMS_LDAPおよびDBMS_NETWORK_ACL_ADMINに顧客管理ウォレットを指定できます:
UTL_HTTP.SET_WALLET (
path IN VARCHAR2,
password IN VARCHAR2 DEFAULT NULL);
UTL_HTTP.REQUEST (
wallet_path IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL)
UTL_HTTP.REQUEST_PIECES (
wallet_p ath IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL,
UTL_HTTP.CREATE_REQUEST_CONTEXT (
wallet_path IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL)
UTL_TCP.OPEN_CONNECTION
wallet_path IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL);
UTL_SMTP.OPEN_CONNECTION
wallet_path IN VARCHAR2 DEFAULT NULL,
wallet_password IN VARCHAR2 DEFAULT NULL)
DBMS_LDAP.OPEN_SSL(
sslwrl IN VARCHAR2,
sslwalletpasswd IN VARCHAR2)
DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE
wallet_path IN VARCHAR2
DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACL(
wallet_path IN VARCHAR2これらのコールでは、プロシージャに応じて、pathまたはwallet_pathパラメータを使用して顧客管理ウォレットを指定します。ウォレット・ディレクトリにはDIR:接頭辞を付けて設定し、ウォレット・パスを含めます。次に例を示します。
UTL_HTTP.set_wallet('DIR:WALLET_DIR', 'password');APIを起動する現在のユーザーには、ディレクトリ・オブジェクトに対するREAD権限があるか、CREATE ANY DIRECTORYシステム権限が付与されている必要があります。
DIR:接頭辞は、顧客管理ウォレットの指定に使用する優先形式です。また、file:接頭辞もサポートされています。次に例を示します。
UTL_HTTP.set_wallet('file:WALLET_DIR/wallet.sso', 'password');詳細は、「UTL_HTTPでの外部コールに対する顧客管理Walletの使用」を参照してください。
Scheduler Email Serverでの顧客管理Walletの使用について
スケジューラの電子メール・サーバーは、開始済、失敗または完了したジョブの通知など、スケジューラに関連する様々なイベントの電子メール通知を送信するために使用できます。デフォルトでは、スケジューラSMTP電子メール・サーバーは、SSL/TLS通信のSSL_WALLETプロパティに定義されているウォレットを使用します。オプションで、スケジューラSMTP電子メール・サーバーとともに顧客管理ウォレットを使用できます。
次のグローバル属性は、顧客管理ウォレットの使用をサポートします。
-
EMAIL_SERVER_WALLET_DIRECTORY: SSLウォレットが存在するパスを指定するディレクトリ・オブジェクトに設定されます。 -
EMAIL_SERVER_WALLET_CREDENTIAL: username/passwordのペアを持つ資格証明オブジェクトに設定されます。ここで、usernameは任意の値、passwordはSSLウォレット・パスワードです。
これらの属性の値は、DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTEを使用して設定します。
詳細は、次を参照してください:
外部コールで顧客管理Walletを使用するための前提条件
外部コールまたはスケジューラのSMTP電子メール通知で顧客管理ウォレットを使用するための前提条件ステップを示します。
前提条件ステップを実行します。
-
Autonomous AI Databaseインスタンスがプライベート・エンドポイントで構成されていることを確認します。
詳細は、プライベート・エンドポイントを使用したネットワーク・アクセスを構成を参照してください。
-
dbms_network_acl_admin.append_wallet_aceで必要なACLを付与するか、ROUTE_OUTBOUND_CONNECTIONSデータベース・プロパティを設定する場合は、private_targetパラメータを値TRUEに設定します。詳細は、UTL_HTTPを使用した外部コールでの顧客管理Walletの使用およびプライベート・エンドポイントを使用したアウトバウンド接続のセキュリティの強化を参照してください。
-
顧客管理ウォレットを取得または作成します。
たとえば、
orapkiでウォレットを作成するには、次のようにします:-- Create an SSL Wallet and load the Root CERTs using orapki utility $ORACLE_HOME/bin/orapki wallet create -wallet /u01/web/wallet -pwd ******** $ORACLE_HOME/bin/orapki wallet add -wallet /u01/web/wallet -trusted_cert -cert MyWebServer.cer -pwd ******** -- Store the credentials in the SSL Wallet using mkstore utility $ORACLE_HOME/bin/mkstore -wrl /u01/web/wallet -createCredential secret-from-the-wallet 'example@oracle.com' ******** Enter wallet password: ********詳細は、公開キー・インフラストラクチャ(PKI)要素の管理を参照してください。
-
クラウド・オブジェクト・ストレージのバケットにウォレットを格納します。
自己署名証明書を含む顧客管理ウォレットを取得または作成したら、クラウド・オブジェクト・ストレージ上の場所にウォレットを格納します。
UTL_HTTPでの外部コールに対する顧客管理Walletの使用
自律型AIデータベース・インスタンスがプライベート・エンドポイントにある場合、顧客管理ウォレットを使用して外部コールを処理できます。
これらのステップでは、UTL_HTTPでの顧客管理ウォレットの使用について説明します。このステップは、DMBS_LDAP、UTL_SMTPおよびUTL_TCPなど、サポートされている他のパッケージでも同じです。
顧客管理ウォレットを使用するための前提条件ステップを実行します。詳細は、「外部コールで顧客管理Walletを使用するための前提条件」を参照してください。
顧客管理ウォレットを使用するようにAutonomous AI Databaseを構成するには:
-
DBMS_CLOUD.CREATE_CREDENTIALを使用して、クラウド・オブジェクト・ストレージにアクセスする資格証明を作成します。BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'user1@example.com', password => 'password' ); END; /usernameおよびpasswordに指定する値は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なりますこれにより、顧客管理ウォレットが存在するクラウド・オブジェクト・ストレージへのアクセスに使用する資格証明が作成されます。
リソース・プリンシパル資格証明を有効にする場合、Oracle Cloud Infrastructureオブジェクト・ストアにアクセスするための資格証明の作成は必要ありません。詳細は、リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセスを参照してください。
-
既存のディレクトリを使用するか、ウォレット・ファイルの新しいディレクトリを作成してください。
たとえば:
CREATE DIRECTORY *wallet_dir* AS '*directory_path_of_your_choice*';ディレクトリの作成の詳細は、「Autonomous AI Databaseでのディレクトリの作成」を参照してください。
-
DBMS_CLOUD.GET_OBJECTを使用して、前のステップで作成したディレクトリWALLET_DIRに顧客管理ウォレットをアップロードします。たとえば:
BEGIN DBMS_CLOUD.GET_OBJECT( credential_name => 'DEF_CRED_NAME', object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/cwallet.sso', directory_name => 'WALLET_DIR'); END; /この例では、
namespace-stringはOracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースで、bucketnameはバケット名です。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。 -
指定されたディレクトリから資格証明を読み取ることができるように、必要なACLを付与します。
BEGIN dbms_network_acl_admin.append_wallet_ace( wallet_path => 'dir:WALLET_DIR', ace => xs$ace_type( privilege_list => xs$name_list('use_client_certificates', 'use_passwords'), principal_name => '*USER_NAME*', principal_type => xs_acl.ptype_db) ); END; / -
UTL_HTTPプロシージャで使用するウォレット・パスを設定します。BEGIN UTL_HTTP.set_wallet('DIR:WALLET_DIR', 'password'); END; /ウォレット・ディレクトリを
UTL_HTTP.set_walletで指定するには、dir:接頭辞またはfile:接頭辞を使用できます。dir:接頭辞は、Autonomous AI Databaseでのみ使用できます。file:接頭辞の詳細は、「UTL_HTTP」を参照してください。 -
これで、
UTL_HTTPプロシージャを実行して、自己署名証明書を持つ顧客管理ウォレットを使用してエンドポイントにアクセスできるようになりました。たとえば:
SELECT UTL_HTTP.REQUEST('https://example.com') from dual;
スケジューラ電子メール通知での顧客管理Walletの使用
顧客管理ウォレットでスケジューラSMTP電子メール・サーバーを使用するステップについて説明します。
顧客管理ウォレットを使用するための前提条件ステップを実行します。詳細は、「外部コールで顧客管理Walletを使用するための前提条件」を参照してください。
スケジューラ電子メール・サーバーで顧客管理ウォレットを使用するには:
-
DBMS_CLOUD.CREATE_CREDENTIALを使用して資格証明を作成し、クラウド・オブジェクト・ストレージにアクセスします。たとえば:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'user1@example.com', password => 'password' ); END; /usernameおよびpasswordに指定する値は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なりますこれにより、顧客管理ウォレットが存在するクラウド・オブジェクト・ストレージへのアクセスに使用する資格証明が作成されます。
リソース・プリンシパル資格証明を有効にする場合、Oracle Cloud Infrastructureオブジェクト・ストアにアクセスするための資格証明の作成は必要ありません。詳細は、リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセスを参照してください。
-
既存のディレクトリを使用するか、ウォレット・ファイルの新しいディレクトリを作成してください。
たとえば:
CREATE DIRECTORY WALLET_DIR AS '*directory_path_of_your_choice*';ディレクトリの作成の詳細は、「Autonomous AI Databaseでのディレクトリの作成」を参照してください。
-
DBMS_CLOUD.GET_OBJECTを使用して、前のステップで作成したディレクトリWALLET_DIRにウォレットをアップロードします。たとえば:
BEGIN DBMS_CLOUD.GET_OBJECT( credential_name => 'DEF_CRED_NAME', object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/cwallet.sso', directory_name => 'WALLET_DIR'); END; /この例では、
namespace-stringはOracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースで、bucketnameはバケット名です。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。 -
コマンドを実行して、スケジューラ・ジョブ通知のSMTP電子メールを送信するようにスケジューラを設定します。
たとえば:
BEGIN DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER','smtp.email.us-ashburn-1.oci.oraclecloud.com:587'); DBMS_CLOUD.create_credential('EMAIL_CRED', 'ocid1.user.oc1..username', 'password'); DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER_CREDENTIAL','ADMIN.EMAIL_CRED'); DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER_ENCRYPTION','STARTTLS'); END; /これらのコマンドは、スケジューラの電子メールSMTPサーバーを設定し、SMTP資格証明を含む資格証明オブジェクトを作成し、SMTP資格証明のスケジューラ属性を設定し、スケジューラ・ジョブ通知用に送信される電子メールにTLSを使用するように指定します。
詳細は、SET_SCHEDULER_ATTRIBUTEプロシージャを参照してください。
-
顧客管理ウォレットのパスワードを格納するための資格証明を作成します。
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'WALLET_CRED', username => '*any_user*', password => 'password'); END; /これにより、次のステップで顧客管理ウォレットのパスワードを指定するために使用する資格証明が作成されます。
-
スケジューラのウォレット・ディレクトリとウォレット資格証明を設定します。
BEGIN DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER_WALLET_DIRECTORY','WALLET_DIR'); DBMS_SCHEDULER.set_scheduler_attribute('EMAIL_SERVER_WALLET_CREDENTIAL', 'ADMIN.WALLET_CRED'); END; / -
DBA_SCHEDULER_GLOBAL_ATTRIBUTEビューを問い合せて、前のステップで設定した値を確認します。SELECT attribute_name, value FROM DBA_SCHEDULER_GLOBAL_ATTRIBUTE WHERE attribute_name LIKE 'EMAIL_SERVER%' ORDER BY 1, 2;ATTRIBUTE_NAME VALUE ------------------------------ ----------------------------------------------- EMAIL_SERVER smtp.email.us-ashburn-1.oci.oraclecloud.com:587 EMAIL_SERVER_CREDENTIAL "ADMIN"."EMAIL_CRED" EMAIL_SERVER_ENCRYPTION STARTTLS EMAIL_SERVER_WALLET_CREDENTIAL "ADMIN"."WALLET_CRED" EMAIL_SERVER_WALLET_DIRECTORY "WALLET_DIR"
外部コールでの顧客管理Walletの使用に関するノート
外部コールで顧客管理ウォレットを使用するためのノートを提供します。
-
DBMS_CLOUDリクエストは、UTL_HTTP.set_walletで設定したカスタム・ウォレットを受け入れません。これには、DBMS_CLOUD.CREATE_EXTERNAL_TABLE、DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEまたはDBMS_CLOUD.CREATE_HYBRID_PART_TABLEで定義したDBMS_CLOUD外部表に対するDBMS_CLOUD.SEND_REQUESTおよびすべてのオブジェクト・ストレージ・アクセスが含まれます。DBMS_CLOUDプロシージャを使用して作成した外部表に対して問合せを実行すると、UTL_HTTP.set_walletで設定したカスタム・ウォレットが問合せの対象になりません。 -
APEX_WEB_SERVICEリクエストは、UTL_HTTP.set_walletで設定したカスタム・ウォレットを受け入れません。APEXで顧客管理ウォレットを使用するには、
APEX_WEB_SERVICEAPIコールでp_wallet_pathパラメータを指定するか、APEX管理サービスのWalletパス・インスタンス設定を設定します。詳細は、Oracle APEX管理サービスへのアクセスを参照してください。
-
自動ログイン・ウォレットとパスワードで保護されたウォレットの両方がサポートされています。自動ログイン・ウォレットを使用する場合は、
wallet_passwordパラメータにNULLを指定します。 -
UTL_HTTP.set_walletAPIを起動する現行のユーザーは、ディレクトリ・オブジェクトに対するREAD権限を持っているか、CREATE ANY DIRECTORYシステム権限が付与されている必要があります。 -
UTL_HTTP.SET_AUTHENTICATION_FROM_WALLETAPIを使用できます。詳細は、SET_AUTHENTICATION_FROM_WALLETプロシージャを参照してください。 -
file:接頭辞は、指定されたファイル・パスがPATH_PREFIXに準拠しているかぎり、UTL_HTTP.set_walletでサポートされます。DBMS_PDB_IS_VALID_PATHプロシージャ(ADMINユーザーを含むPUBLICに付与)で入力として指定されたパスのPATH_PREFIXコンプライアンスを判別できます。たとえば:
with function check_path_prefix_compliance(file_path varchar2) return varchar2 as BEGIN if dbms_pdb_is_valid_path(file_path) then return 'YES'; else return 'NO'; end if; END; SELECT check_path_prefix_compliance('/u03/dbfs/1276CDexample/data/dpdump') as PATH_PREFIX_COMPLIANT, check_path_prefix_compliance('/u01/app/oracle/diag') as PATH_PREFIX_COMPLIANT FROM dual; / -
UTL_HTTP.set_walletの使用時に下位互換性を確保するために、ウォレット・パスが無視される場合は、file:、NULLなどの入力値が受け入れられます。これらの値は無視され、デフォルトのSSLウォレット・パスをUTL_HTTP.set_walletとともに使用するように指定されます。 -
DBMS_NETWORK_ACL_ADMINウォレットACL API (APPEND_WALLET_ACLなど)がサポートされています。これらのプロシージャを使用すると、ウォレットACL権限を付与または取り消すことができます。詳細は、DBMS_NETWORK_ACL_ADMINを参照してください。 -
認証のためのSSLウォレットでのパスワード資格証明の使用をサポートするには、
UTL_HTTPAPIを起動している現在のユーザーにウォレット・パスに対するuse-passwordsACL権限が必要です。 -
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTEを使用してEMAIL_SERVER_WALLET_DIRECTORYおよびEMAIL_SERVER_WALLET_CREDENTIALを設定するためのノート:-
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTEを使用して属性値を設定するには、管理ユーザーまたはMANAGE SCHEDULER権限を持つユーザーである必要があります(ADMINユーザーにはこれらの権限があります)。 -
MANAGE SCHEDULER権限に加えて、DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTEを起動するユーザーには、EMAIL_SERVER_WALLET_DIRECTORYで設定したディレクトリ・オブジェクトに対するREAD権限と、EMAIL_SERVER_WALLET_CREDENTIALで設定した資格証明オブジェクトに対するEXECUTE権限が必要です。
-