データベース・ツールを使用するためのベスト・プラクティス

この項では、データベース・ツールをより簡単かつ効率的に使用できる手順およびプラクティスについて説明します。

トピック:

コンパートメントの使用

データベース接続は、特定のユーザーまたは定義されたユーザー・グループにデータベースへのアクセス権を付与する場合に役立つ機能です。これらの接続を分離するには、次の例に示すように、ポリシーを使用してユーザーのロールに基づいて特定の接続へのアクセス権を付与します:

レポートに使用されるAutonomous Data Warehouseの場合は、ReportingDataAccessという名前の共有データベース接続を作成します。この接続を、Data Scientistsというグループ内の特定のエンド・ユーザーのセットに割り当てます。このグループのユーザーは、データベース接続の詳細にアクセスできるようになりましたが、この接続のみの使用と、接続でデータベースへのアクセスに使用されている、ユーザーによって継承されたロールおよび権限に限定されます。

データ・ウェアハウスへの管理者接続を作成し、DatabaseAdministratorsというグループを使用してその接続に別のユーザー・セットを割り当てることもできます。コンパートメントとポリシーを使用すると、次のようにこれらの接続へのアクセスを分離できます:

データ・サイエンティスト・グループ:

  1. Reportingというコンパートメントを作成します。
  2. このコンパートメントにDataScientistsというグループを作成します。
  3. ReportingコンパートメントにReportingDataAccessというデータベース接続を作成します。
  4. Reportingコンパートメント内の接続へのアクセス権をDataScientistsグループに付与するポリシーを作成します:
    • Allow group DataScientists to read database-tools-family in compartment Reporting
    • Allow group DataScientists to use database-tools-connections in compartment Reporting

データベース管理者グループ:

  1. DBAというコンパートメントを作成します。
  2. このコンパートメントにDatabaseAdministratorsというグループを作成します。
  3. DBAコンパートメントにDatabaseAdminというデータベース接続を作成します。
  4. DBAコンパートメント内の接続へのアクセス権をそのグループに付与するポリシーを作成します:
    • Allow group DatabaseAdministrators to read database-tools-family in compartment DBA
    • Allow group DatabaseAdministrators to use database-tools-connections in compartment DBA

これらのグループおよびコンパートメント固有のデータベース接続は、どのユーザーがどのデータベースにアクセスできるかを特定し、それらのユーザーが持つアクセス権を判別するのに役立ちます。

プライベート・エンドポイントの使用

プライベート・エンドポイントを使用しているAutonomous Databaseへのデータベース接続を作成する場合は、データベース・ツールからそのデータベースへのアクセスを提供するネットワーク・セキュリティ・グループを作成します。ネットワーク・セキュリティ・グループの作成時に、使用できるIPまたはCIDRブロック、およびポートまたはポート範囲を制限する特定のアクセス・ルールを定義します。

SQLワークシートの場合

OCIコンソールでデータベース・ツールSQLワークシートからのアクセスを提供するために必要なネットワーク・セキュリティ・グループ・ルールの最小セットを構成するには:

  1. 「プライベート・エンドポイントの詳細」ページで、「プライベート・エンドポイントの情報」セクションの「逆接続ソースIP」フィールドを特定します。IPアドレスは2つあります。
  2. ネットワーク・セキュリティ・グループを編集し、TCP/IPを使用して宛先ポート1522へのアクセス権を持つ2つのIPアドレス用のルールを追加します。たとえば、2つのIPアドレス10.0.1.6および10.0.1.8の場合、2つのルールには、TCP/IPを使用して宛先ポート1522にアクセスできるCIDRブロック10.0.1.6/32および10.0.1.8/32が含まれます。

SQLclおよび要塞の場合

OCIコンソールで要塞を使用してデータベース・ツールSQLclからのアクセスを提供するために必要なネットワーク・セキュリティ・グループ・ルールの最小セットを構成するには:

  1. 「要塞の詳細」ページの「プライベート・エンドポイントIPアドレス」フィールドで、プライベート・エンドポイントIPアドレス項目を特定します。1つのIPアドレスのみが表示されます。
  2. ネットワーク・セキュリティ・グループを編集し、TCP/IPを使用して宛先ポート1522にアクセスできるこのIPアドレス用のルールを追加します。たとえば、IPアドレス10.0.1.9の場合、ルールには、TCP/IPを使用して宛先ポート1522にアクセスできるCIDRブロック10.0.1.7/32が含まれます。

これらのルールにより、データベース・ツールは、これらの特定のIPアドレスからネットワーク・セキュリティ・グループを介して選択したAutonomous Databaseのみに対して、SQLclを使用した要塞アクセスおよびOCIコンソールでのSQLワークシート・アクセス用のポート1522でのみアクセスできます。

監査中

アプリケーション・コンテキスト値の監査を構成することで、Oracle Databaseの統合監査証跡を拡張してアプリケーション属性を取得できます。アプリケーション・コンテキスト・ネームスペースには必須属性が移入され、それらの値が統合監査証跡に取得されます。

データベース・ツールで提供されるアプリケーション属性は、次の目的で使用できます。

  • データベース・ツール・サービスを使用してデータベース・アクセスを開始した認証済IAMプリンシパルを識別します。
  • 統合監査証跡レコードをOCI監査イベントに関連付けます。

認証済IAMプリンシパルの識別

統合監査証跡でアプリケーション・コンテキスト属性を取得するには、最初にAUDIT CONTEXTコマンドを実行して、監査レコードに含める追加属性を指定する必要があります。

たとえば、次の文は、すべての監査レコードのネームスペースCLIENTCONTEXT属性IAM_PRINCIPAL_OCIDからRESOURCE_COMPARTMENT_OCIDの値を取得します。

AUDIT CONTEXT NAMESPACE CLIENTCONTEXT ATTRIBUTES IAM_PRINCIPAL_OCID,IAM_PRINCIPAL_TYPE, 
IAM_PRINCIPAL_SUB_TYPE,IAM_PRINCIPAL_RESOURCE_TYPE,IAM_PRINCIPAL_TENANCY_OCID, 
OPC_REQUEST_ID,RESOURCE_OCID,RESOURCE_COMPARTMENT_OCID

属性を追加した後、次の文を使用して、統合監査証跡で取得されるアプリケーション・コンテキスト属性を確認できます。

SELECT * FROM AUDIT_UNIFIED_CONTEXTS;

データベース・ツール・サービスによってUNIFIED_AUDIT_TRAILに移入された監査レコードは、次の列に関する情報を提供します。

表7-1監査列

OS_USERNAME IAM認証済プリンシパル識別子が切り捨てられる可能性があります
CLIENT_IDENTIFIER IAM認証済プリンシパル識別子の残りの文字
USERHOST 中間層ホスト名
TERMINAL 不明
CLIENT_PROGRAM_NAME データベース・ツールORDS
EXECUTION_ID opc-request-idが64文字で切り捨てられました
APPLICATION_CONTEXTS 表7-2を参照してください

APPLICATION_CONTEXTS列には、次のCLIENTCONTEXT属性の値が移入されます。これにより、データベース操作を開始した認証済IAMプリンシパルを識別できます。

表7-2 Application_Contexts列

コンテキスト 属性 内容
CLIENTCONTEXT IAM_PRINCIPAL_OCID IAM初期ID
IAM_PRINCIPAL_TENANCY_OCID IAM初期テナンシID
IAM_PRINCIPAL_TYPE

IAM初期タイプ

  • ユーザー
  • リソース
  • インスタンス
  • サービス
IAM_PRINCIPAL_SUB_TYPE

IAMプリンシパル・サブタイプ

  • natv (ネイティブ・ユーザー)
  • natf (ネイティブ・フェデレーテッド・ユーザー)
  • fed (フェデレーテッド・ユーザー)
  • 指定しない
IAM_PRINCIPAL_RESOURCE_TYPE IAMプリンシパル・リソース・タイプ
OPC_REQUEST_ID OPCリクエストID
RESOURCE_OCID リソースID
RESOURCE_COMPARTMENT_OCID リソース・コンパートメントID

統合監査証跡レコードとOCI監査イベントの関連付け

APPLICATION_CONTEXTS列およびEVENT_TIMESTAMPに指定されているOPC_REQUEST_IDおよびRESOURCE_COMPARTMENT_OCID属性を使用すると、統合監査証跡レコードに一致する監査イベントを検索できます。

Oracle Cloud Infrastructureコンソールの使用

  1. コンソールで、ナビゲーション・メニューを開き、「監視および管理」「ロギング」「監査」の順に選択します。
  2. 左ペインで、「コンパートメント」を選択します。
  3. 右側のペインの「カスタム・フィルタ」フィールドに、data.request.id= '<opc-request-id value>'と入力します。
  4. 「時間によるフィルタ」で、ドロップダウン・リストから時間間隔を選択します。
  5. 「適用」を選択します。

    結果は「イベントの参照」タブに表示されます。

コマンドライン・インタフェース(CLI)の使用

統合監査証跡レコードに一致する監査イベントを検索するには、次のスクリプトに<REGION ID><RESOURCE_COMPARTMENT_OCID>および<OPC_REQUEST_ID>を入力します。

#!/bin/sh
 
read -r -d '' body <<EndOfBody
{
  "searchQuery": "search \"<RESOURCE_COMPARTMENT_ID>/_Audit\" | (data.request.id='<OPC_REQUEST_ID>') | sort by datetime desc",
  "timeStart":"2024-07-19T11:03:56.167Z",
  "timeEnd":"2024-07-19T14:03:56.167Z",
  "isReturnFieldInfo":false
}
EndOfBody
 
oci raw-request --target-uri https://logging.<REGION_ID>.oci.oraclecloud.com/20190909/search --http-method POST --request-body "${body}"