デプロイメントのための一元化された構成プロバイダ

管理対象ODP.NETおよびODP.NET Coreは、一元化されたプロバイダとの間で接続文字列構成値を安全に格納および取得できます。ODP.NET接続構成情報を一元化すると、アプリケーション・デプロイメントでのユーザー資格証明の管理が容易になります。接続文字列にはパスワードなどの機密情報が含まれている可能性があるため、安全な格納が必要です。

この構成プロバイダは、ODP.NETクラウド・デプロイメントおよびオンプレミス・デプロイメントで使用でき、ODP.NETでサポートされる任意のOracleデータベース・バージョンで動作します。次の場所に格納できます。

  • 接続文字列URL

  • Microsoft Azure: データベース接続情報をAzure App ConfigurationおよびAzure Key Vaultに格納します。

  • プロバイダ構成

接続文字列URL

接続文字列URLは、従来のODP.NET接続文字列形式とは異なります。Azureの一元化された構成プロバイダにアクセスするために、ODP.NETアプリケーションでは、従来のODP.NET接続文字列のかわりにOracleConnection ConnectionStringプロパティにURLを指定します。このURLには、一元化された構成プロバイダ・タイプ(Azure)と、その構成ストレージの名前、および該当する場合は認証と接続構成パラメータ値が含まれます。User IdMin Pool Sizeなどの従来の接続文字列値は、一元化された構成プロバイダ自体に格納されます。

しかし、従来のODP.NET接続文字列から一元化された構成プロバイダ・モデルには簡単に移行できます。従来のODP.NET接続文字列の属性と値は、Azureアプリケーション構成に移動されます。次に、ConnectionStringプロパティは、従来のODP.NET接続文字列ではなく、接続文字列URLに設定されます。

パスワードなどの機密情報は、Azure Key Vaultなどの安全なストアに格納するか、エンコードできます。一元化された構成プロバイダでは、接続文字列へのプレーン・テキスト・パスワードの格納をサポートしていません。

プーリングを使用している場合は、ODP.NETで接続文字列URLがキャッシュされます。プールの移入後に、一元化されたストレージの構成値を変更しても、アプリケーションが再起動されるまで接続プールのプロパティは変更されません。

プーリングが無効な場合、接続文字列URLはキャッシュされません。接続構成の変更は、アプリケーションを再起動しなくても後続の接続リクエストに対して可能になります。

接続文字列は、@config-<provider type>という書式で始まります。azureは、サポートされている唯一のプロバイダ・タイプです。

Azureの一元化された構成プロバイダ

Azure構成プロバイダは、Azure App ConfigurationおよびAzure Key Vaultストアを使用して、Oracleデータベース接続情報を格納できます。Azureの一元化された構成プロバイダの接続文字列URLの構文を次に示します。

@config-azure:{Config Name}[?Key=Prefix&Label=Value&Option1=Value1&Option2=Value2...]

  • (必須) Config Name: Azure App Configurationの名前

  • (オプション) Key: 接続を識別するためのキー接頭辞。:/.などのセパレータをキー接頭辞の最後に付けると判読性が向上しますが、技術的な要件ではありません。キーを指定しないと、最上位の接続が暗黙的に使用されます。

  • (オプション) Label: Azure App Configurationのラベル名

  • (オプション) OptionsおよびValues: Azure App Configurationサービスへの接続時に使用するAzure認証オプションおよび情報。認証情報が指定されていない場合、ODP.NETはAzureのデフォルト資格証明を使用してAzure App Configurationにアクセスします。

Azure認証オプション

ODP.NETでは、Azure SDK for .NET資格証明クラスを使用して、Azure App ConfigurationおよびKey Vaultサービスに認可および認証を提供します。この依存性を解決するには、Azure認証が必要な場合に、NuGetギャラリで入手可能なOracle.ManagedDataAccess.Azureパッケージをプロジェクトに組み込みます。

開発者は、ODP.NET URL接続文字列でAzure認証オプションを「Authentication」に設定します。このオプションに使用可能な値を次の表に示します。

ノート:

これらのオプションおよび値では、大文字と小文字は区別されません。必要なパラメータを環境変数として設定することもできます

表2-10 Azureの認証方法とその値

認証方法 認証オプションの値 このオプション値の必須パラメータ このオプション値のオプション・パラメータ

デフォルトのAzure資格証明

AZURE_DEFAULTまたは空の文字列

AZURE_TENANT_ID

AZURE_MANAGED_IDENTITY_CLIENT_ID

クライアント・シークレットが指定されたサービス・プリンシパル*

AZURE_SERVICE_PRINCIPAL

AZURE_CLIENT_ID

AZURE_CLIENT_SECRET

AZURE_TENANT_ID

クライアント証明書が指定されたサービス・プリンシパル*

AZURE_SERVICE_PRINCIPAL

AZURE_CLIENT_ID

AZURE_CLIENT_CERTIFICATE_PATH

AZURE_TENANT_ID

AZURE_CLIENT_CERTIFICATE_PASSWORD

管理対象アイデンティティ

AZURE_MANAGED_IDENTITY

AZURE_CLIENT_ID - ユーザーが割り当てた場合のみ必須

対話型ブラウザOAuthトークン・フロー

AZURE_INTERACTIVE

AZURE_CLIENT_ID

AZURE_REDIRECT_URL

*クライアント・シークレットが指定されたAzureサービス・プリンシパルは、クライアント証明書が指定されたAzureサービス・プリンシパルをオーバーライドします。

ODP.NET接続文字列URLには、次のような追加の接続構成オプションがあります。

  • AZURE_MAX_RETRIES

  • AZURE_RETRY_TIMEOUT

  • AZURE_MANAGED_IDENTITY_CLIENT_ID - DefaultAzureCredentialを使用していて、ユーザーが割り当てられている場合にのみ使用できます。

  • AZURE_TENANT_ID

  • AZURE_AUTHORITY_HOST

次のコード・サンプルは、MyConfigというAzure App Configurationストア名を指定するODP.NET接続文字列URLを示しています。MyConfigの接続の接頭辞キーはMyConnectionで、Azure App Configurationのラベル名はproductionです。コード・サンプルでは、AzureマネージドID認証を使用して接続し、そのID値を指定します。コード・サンプルでは、次にOracleConnectionコンストラクタを使用して接続文字列URLを設定します。ODP.NETは、接続をオープンするときにAzure App Configurationストアから接続文字列を暗黙的に取得します。

       {
        // This ODP.NET URL uses Azure Managed Identity authentication
        string connectionString = "@config-azure:MyConfig?key=
          MyConnection/&Label=production&Authentication=Azure_Managed_Identity&
          Azure_Managed_Identity_Client_Id=111abccd8-18cc-4fa0-bf7b-d894e5981c67";      
        OracleConnection conn = new OracleConnection();
        conn.ConnectionString = connectionString;
        conn.Open();
 	}

関連項目:

AzureのIDおよび認証の詳細は、DefaultAzureCredentialクラスを参照してください。

プロバイダ構成

プロバイダ構成キー

ODP.NETは、プロバイダ構成キーの値を使用して、Oracleデータベースへの接続文字列を作成します。通常、構成キーは既存のODP.NET接続文字列およびOracle接続プロパティにマップされます。一部のキーは、すべてのOracleデータ・アクセス・ドライバに対して汎用です。該当するプロパティは次のとおりです。

  • user: データベース・ユーザー/スキーマ名

  • password: データベース・パスワード

  • connect_descriptor: ODP.NETデータ・ソース

Azure App Configurationでは、ODP.NETのみに使用する意図を示すために、ODP.NET固有の構成キーの先頭にはODP/が付きます。たとえば、MyConnection/ODP/Poolingキーは、ODP.NETのプーリング接続文字列属性を指定します。

通常、ODP.NET構成キーでは、大/小文字は区別されません。ただし、Azureアプリケーション構成のODP/セクション(キーとその値を含む)では、大/小文字が区別されます。

接続の属性

構成プロバイダでは、ConnectionStringキーはODP.NET固有のキーです。これにより、完全または部分的なODP.NET接続文字列を定義できます。ODP.NETアプリケーションはOracleConnection ConnectionStringプロパティを引き続き使用できるため、構成プロバイダのConnectionStringキーを使用する必要はありません。

OracleConnection ConnectionStringで定義されているすべての接続文字列属性は、次の属性を除き、従来の接続文字列で使用されるものと同様にサポートされます。

  • Tns_Admin: サポートされていません。

  • Token_Location: サポートされていません。

ODP.NETでは、プロバイダ構成で次のOracleConnectionプロパティもサポートしています。

  • BindByName

  • CommandTimeout

  • ChunkMigrationConnectionTimeout

  • ConnectionIdPrefix

  • DatabaseEditionName

  • DrcpConnectionClass

  • FetchSize

  • MaxStatementCacheSize

  • OciCompartment

  • OciDatabase

  • OciIamUrl

  • OciTenancy

  • PasswordAuthentication

  • Pipelining

  • ServiceRelocationConnectionTimeout

  • TokenAuthentication

  • UseClientInitiatedCQN

  • Wallet_Location: ローカル・システム・ファイルに格納されたWalletはサポートされていません。Azure App ConfigurationまたはAzure VaultにBase64文字列として格納されたWalletはサポートされています

サポートされていない属性がプロバイダ構成でODP/ Azure App Configurationセクションで指定されている場合、ODP.NETは例外をスローします。

構成プロバイダでは、ConnectionStringキーは、同じ接頭辞キーを持つconnect_descriptorなどの他のキーよりも優先されます。したがって、User Id属性がConnectionStringに含まれていない場合、ODP.NETでは、同じ接頭辞キーを持つuserキーが使用されます。Data Source属性がConnectionStringに含まれていない場合は、同じ接頭辞キーを持つconnect_descriptorキーの値が使用されます。同様の動作がすべてのConnectionString属性に適用されます。

ODP.NET接続文字列を作成する際の優先順位(高い優先順位から低い優先順位)は、次のとおりです。

  1. ODP.NET ConnectionStringキー(一元化された構成プロバイダ・キー)

  2. ODP.NET OracleConnection ConnectionString属性、OracleConnectionプロパティ、プロバイダ構成ファイルおよびODP.NET接続パラメータ(ODP/PoolingODP/Connection TimeoutODP/OciCompartmentなど)。これらはすべて同じ優先順位です。

  3. userpasswordconnect_descriptorなど、プロバイダ構成ファイル内のOracle共通のドライバ属性。