8.3.2.1 OCI Object StorageのJSONファイルを使用するための前提条件

OCI Object Storageの使用を開始する前に、Oracle Cloud Infrastructure (OCI)コンソール、またはOCI CLIかAPIを使用して、次のステップを実行します。

  • OCI Object Storageにバケットを作成します:

    OCI Object Storageサービスを使用して、Object Storageネームスペースのコンパートメント内にバケットを作成します。集中化された構成プロバイダのJSONファイルを、後でオブジェクトとしてこのバケットにアップロードします。

  • ポリシーを作成し、それをデータベース・ユーザーに割り当てます:

    OCI管理者は、セキュリティ・アクセス権をポリシーで付与する必要があります。OCI Identity and Access Management (IAM)ポリシーを作成し、それをデータベース・ユーザーに割り当てて、コンパートメント内のオブジェクト・ストレージ・リソースにアクセスします。

  • (オプション)シークレットのボールトを作成し、認可権限を付与します:

    Oracle Database資格証明とOracleウォレット・データをOCI VaultまたはAzure Key Vaultに格納できます。

    • Oracle Database資格証明を格納するには:

      データベース・パスワードをシークレットとして格納したOCI VaultまたはAzure Key Vaultを作成します。

    • Oracleウォレット・データを格納するには:

      マルチテナント・クラウド・サービス環境で実行されているSQLNETクライアント・アプリケーションでは、ウォレットをリモート・ストアに格納できます。これらのアプリケーションではローカル・システム・ファイルに格納されているウォレットにアクセスできない場合があるため、この機能は、ウォレットの保持にファイル・システム・アクセスを必要とする相互Transport Layer Security (mTLS)接続に特に役立ちます。

      ウォレット・データを格納するには、まず自動ログイン・ウォレット・ファイル(cwallet.sso)をBase64形式に変換してから、Base64形式のcwallet.sso値をシークレットとして格納したOCI VaultまたはAzure Key Vaultを作成します。

      1. cwallet.ssoファイルをBase64形式に変換します。

        cwallet.ssoBase64に変換するための一般的な方法は、Linuxで次のopensslコマンドを使用することです:

        cat cwallet.sso | base64 -w 0 > file_to_upload

        ここでは、file_to_uploadにより、変換するcwallet.ssoファイルを指定しています。

      2. cwallet.ssoファイルのBase64形式の文字列の内容を新規行のないシークレット・コンテンツとして貼り付けることで、OCI VaultまたはAzure Key Vaultを作成します。

    後でこれらのボールトへの参照をJSONファイルに追加します。OCI管理者は、OCI Vaultにアクセスするための認可権限をデータベース・ユーザーに付与する必要があります。同様に、Azure App Configurationストアの管理者は、Azure Key Vaultへのアクセスのために、登録されたOAuthアプリケーションに認可権限を付与する必要があります。

    これらのステップの実行方法の詳細は、OCI VaultのドキュメントまたはAzure Key Vaultのドキュメントを参照してください。

  • 集中化された構成プロバイダのJSONファイルの形式を理解します:

    接続記述子は、アプリケーション要件に基づいて、次のJSON形式のいずれかで、集中化された構成プロバイダのJSONファイルにおいて編成できます:
    • connect_descriptorサブオブジェクトを含む単一のオブジェクト

    • 各オブジェクトが独自のconnect_descriptorサブオブジェクトを持つ複数のオブジェクト(カンマ区切り)

    オプションで、userおよびpasswordサブオブジェクト(データベース・ユーザー名とパスワードを指定するため)、wallet_locationサブオブジェクト(ウォレット・ディレクトリを指定するため)、およびociサブオブジェクト(Oracle Call Interface構成パラメータを指定するため)を同じファイル内に追加できます。

    データベース・クライアントは、接続記述子、データベース・ユーザー名とパスワード、ウォレット・データおよびその他のOracle Call Interface属性を導出するために、JSONオブジェクト内の特定のネットワーク・サービス名を検索します。接続識別子は、OCI Object StorageエンドポイントからこれらのJSONオブジェクトを取得し、それを使用して格納された属性を特定します。これらの値がデータベース接続に使用されます。

    集中化された構成プロバイダJSON (CCJSON)の構文は次のとおりです:
    Centralized Configuration Provider JSON -> CCJSON_elements
    
    CCJSON_elements       -> CCJSON_elment
                          -> CCJSON_element, CCJSON_element
    
    CCJSON_element        -> '{' members '}'
    
    members               -> member
                          -> member, member
    
    member                -> cd
                          -> member, cd_related
    
    cd                    -> "connect_descriptor" : "<connect_descriptor>"
    
    cd_related            -> "user" : "<database user name>"
                          -> "password" : '{' password_data '}'
                          -> "wallet_location" : '{' wallet_data '}'
                          -> "oci" : '{' oci_config_members '}'
                          -> nul
    
    password_data         -> '{' "type" : vault_type, 
                                 "value" : vault_value, 
                                 "authentication": authentication_value '}'
    
    wallet_data           -> '{' "type" : vault_type,  
                                 "value" : vault_value, 
                                 "authentication": authentication_value '}'
    
    vault_type            -> "ocivault"
                          -> "azurevault"
    
    vault_value           -> "<vault-specific identifier>"    
    
    authentication_value  -> '{' "azure_client_id" : "<client id>", 
                                 "azure_client_secret" : "<secret>",
                                 "azure_tenant_id" : "<tenant id>" '}'          
                          -> null
    
    oci_config_members    -> '{' oci_config_name : oci_config_value '}'
    
    oci_config_value      -> json_value
    
    oci_config_name       -> prefetch_rows
                          -> statement_cache_size
                          -> lob_prefetch_size 
                          -> session_pool
    
    session_pool          -> '{' "min" : value, "max" : value, 
                                 "increment" : value, "max_lifetime_session" : value, 
                                 "max_use_session" : value, "inactivity_timeout" : value '}'
    
    prefetch_rows         -> "prefetch_rows" : numeric_value
    
    statement_cache_size  -> "statement_cache_size" : numeric_value
    
    lob_prefetch_size     -> "lob_prefetch_size" : numeric_value
    
    numeric_value         -> "<number>"

    以降の各項で、これらの値を使用してJSONファイルを作成する方法を確認します。