機械翻訳について

顧客管理のWalletを使用した外部コールの作成

Autonomous Databaseインスタンスがプライベート・エンドポイントにある場合は、UTL_HTTP, DBMS_LDAP, UTL_SMTPまたはUTL_TCPのプロシージャで顧客管理ウォレットを使用できます。 スケジューラがスケジューラ・ジョブに関連する様々なイベントのSMTP電子メール通知を送信するときに、顧客管理ウォレットを使用することもできます。

外部コールでの顧客管理Walletの使用について

Autonomous Databaseインスタンスがプライベート・エンドポイントにある場合は、顧客管理ウォレットを使用して外部コールを処理するか、スケジューラを使用してスケジューラ・ジョブに関連する様々なイベントの電子メールを送信できます。

Autonomous Databaseでは、次のいずれかの目的で外部コールを実行できます:

  • webサービスをUTL_HTTPとともに使用する場合。

  • DBMS_LDAPを使用してLDAPサーバーからデータにアクセスするには。

  • UTL_SMTPで電子メールを送信するには。

  • UTL_TCPでTCP/IPを使用して外部TCP/IPベースのサーバーと通信する場合。

  • Oracle Schedulerジョブの電子メール通知の場合。

デフォルトでは、これらのパッケージでプロシージャを使用すると、Autonomous Databaseは内部ウォレットを保持し、常にセキュアな接続を使用します(Oracle管理ウォレットには、最も一般的な信頼できるルート証明書と中間SSL証明書の90以上が含まれます)。 Autonomous Databaseがプライベート・エンドポイントにある場合は、信頼できる中間SLL認証でデフォルトのOracle管理ウォレットを使用することも、顧客管理ウォレットを指定することもできます。

Autonomous 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の使用」を参照してください:

スケジューラEメール・サーバーでの顧客管理Walletの使用について

スケジューラEメール・サーバーは、開始済、失敗または完了済ジョブの通知など、スケジューラに関連する様々なイベントのEメール通知を送信できます。 デフォルトでは、スケジューラのSMTP電子メール・サーバーは、SSL/TLS通信用にSSL_WALLETプロパティで定義されたウォレットを使用します。 オプションで、スケジューラSMTP電子メール・サーバーで顧客管理ウォレットを使用できます。

次のグローバル属性は、顧客管理ウォレットの使用をサポートします:

  • EMAIL_SERVER_WALLET_DIRECTORY: 、SSLウォレットが存在するパスを指定するディレクトリ・オブジェクトに設定されます。

  • EMAIL_SERVER_WALLET_CREDENTIAL: username/パスワードペアを持つ資格証明オブジェクトに設定されます。ここで、usernameは任意の値で、パスワードはSSLウォレット・パスワードです。

これらの属性の値は、DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTEを使用して設定します。

詳細は、次を参照してください:

外部コールで顧客管理Walletを使用するための前提条件

外部コールまたはスケジューラSMTP電子メール通知で顧客管理ウォレットを使用するための前提条件ステップを示します。

前提条件ステップを実行します:

  1. Autonomous Databaseインスタンスがプライベート・エンドポイントで構成されていることを確認します。
  2. dbms_network_acl_admin.append_wallet_aceを使用して必要なACLを付与する場合は、private_targetパラメータを値TRUEに設定するか、ROUTE_OUTBOUND_CONNECTIONSを値PRIVATE_ENDPOINTに設定します。
  3. 顧客管理ウォレットを取得または作成します。

    たとえば、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)要素の管理」を参照してください。

  4. ウォレットをクラウド・オブジェクト・ストレージのバケットに格納します。

    自己署名証明書を含む顧客管理ウォレットを取得または作成した後、そのウォレットをクラウド・オブジェクト・ストレージ上のロケーションに格納します。

UTL_HTTPによる外部コールに対する顧客管理Walletの使用

Autonomous Databaseインスタンスがプライベート・エンドポイントにある場合、顧客管理ウォレットを使用して外部コールを処理できます。

次のステップでは、UTL_HTTPでの顧客管理ウォレットの使用について説明します。 次のような、サポートされている他のパッケージについても同じステップです: DMBS_LDAPUTL_SMTP、およびUTL_TCP

顧客管理ウォレットを使用するには、前提条件ステップを実行します。 詳細については、「外部コールで顧客管理Walletを使用するための前提条件」を参照してください。

顧客管理ウォレットを使用するようにAutonomous Databaseを構成するには:

  1. 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リソースへのアクセス」を参照してください。

  2. 既存のディレクトリを使用するか、ウォレット・ファイルの新しいディレクトリを作成します。

    たとえば:

    CREATE DIRECTORY wallet_dir AS 'directory_path_of_your_choice';
                

    ディレクトリ作成の詳細は、「Autonomous Databaseでのディレクトリの作成」を参照してください。

  3. 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がバケット名です。 詳細については、「オブジェクト・ストレージのネームスペースについて」を参照してください。

  4. 指定したディレクトリから資格証明を読み取ることができるように、必要な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;
    /
  5. UTL_HTTPプロシージャで使用するウォレット・パスを設定します。
    BEGIN
        UTL_HTTP.set_wallet('DIR:WALLET_DIR', 'password');
    END;
    /

    ウォレット・ディレクトリをUTL_HTTP.set_walletで指定するには、プレフィクスdir:またはプレフィクスfile:を使用できます。

    dir:プレフィクスは、Autonomous Databaseでのみ使用できます。 file:プレフィクスの詳細は、UTL_HTTPを参照してください。

  6. これで、UTL_HTTPプロシージャを実行して、自己署名証明書を持つ顧客管理ウォレットを使用してエンドポイントにアクセスできます。

    たとえば:

    SELECT UTL_HTTP.REQUEST('https://example.com') from dual;

スケジューラの電子メール通知での顧客管理Walletの使用

顧客管理ウォレットでスケジューラSMTP電子メール・サーバーを使用するステップについて説明します。

顧客管理ウォレットを使用するには、前提条件ステップを実行します。 詳細については、「外部コールで顧客管理Walletを使用するための前提条件」を参照してください。

スケジューラEメール・サーバーで顧客管理ウォレットを使用するには:

  1. 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リソースへのアクセス」を参照してください。

  2. 既存のディレクトリを使用するか、ウォレット・ファイルの新しいディレクトリを作成します。

    たとえば:

    CREATE DIRECTORY wallet_dir AS 'directory_path_of_your_choice';
                

    ディレクトリ作成の詳細は、「Autonomous Databaseでのディレクトリの作成」を参照してください。

  3. 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がバケット名です。 詳細については、「オブジェクト・ストレージのネームスペースについて」を参照してください。

  4. コマンドを実行して、スケジューラ・ジョブ通知用の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プロシージャ」を参照してください。

  5. 顧客管理ウォレットのパスワードを格納する資格証明を作成します。
    BEGIN
         DBMS_CLOUD.CREATE_CREDENTIAL(
             credential_name  => 'WALLET_CRED',
             username         =>  'any_user', 
             password         => 'password');
    END;
    /

    これにより、次のステップで使用する資格証明が作成され、顧客管理ウォレットのパスワードが提供されます。

  6. スケジューラ・ウォレット・ディレクトリおよびウォレット資格証明を設定します。
    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;
    /
  7. 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.SEND_REQUESTおよびDBMS_CLOUD.CREATE_EXTERNAL_TABLEDBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEまたはDBMS_CLOUD.CREATE_HYBRID_PART_TABLEで定義したDBMS_CLOUD外部表に対するすべてのオブジェクト・ストレージ・アクセスが含まれます。 DBMS_CLOUDプロシージャを使用して作成した外部表に対して問合せを実行する場合、問合せではUTL_HTTP.set_walletで設定したカスタム・ウォレットは使用されません。

  • APEX_WEB_SERVICEリクエストでは、UTL_HTTP.set_walletで設定したカスタム・ウォレットは適用されません。

    APEXで顧客管理ウォレットを使用するには、APEX_WEB_SERVICE APIコールでp_wallet_pathパラメータを指定するか、APEX管理サービスでWalletパス・インスタンスの設定を設定します。

    詳細については、「Oracle APEX管理サービスへのアクセス」を参照してください。

  • 自動ログイン・ウォレットとパスワードで保護されたウォレットの両方がサポートされています。 自動ログイン・ウォレットを使用する場合は、wallet_passwordパラメータにNULLを指定します。

  • UTL_HTTP.set_wallet APIを起動する現行のユーザーは、ディレクトリ・オブジェクトに対するREAD権限を持っているか、CREATE ANY DIRECTORYシステム権限を付与されている必要があります。

  • UTL_HTTP.SET_AUTHENTICATION_FROM_WALLET APIを使用できます。 詳細については、「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とともに使用するように指定します。

  • APPEND_WALLET_ACLなどのDBMS_NETWORK_ACL_ADMINウォレットACL APIがサポートされています。 これらのプロシージャを使用すると、ウォレットACL権限を付与または取り消すことができます。 詳細については、DBMS_NETWORK_ACL_ADMINを参照してください。

  • 認証用のSSLウォレットでのパスワード資格証明の使用をサポートするには、UTL_HTTP APIを呼び出す現在のユーザーに、ウォレット・パスに対する"use-passwords" ACL権限が必要です。

  • EMAIL_SERVER_WALLET_DIRECTORYおよびEMAIL_SERVER_WALLET_CREDENTIALDBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTEで設定するためのノート:

    • 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権限が必要です。