データベース・ツールを使用するためのベスト・プラクティス
コンパートメントの使用
データベース接続は、特定のユーザーまたは定義されたユーザー・グループにデータベースへのアクセス権を付与する場合に役立つ機能です。これらの接続を分離するには、次の例に示すように、ポリシーを使用してユーザーのロールに基づいて特定の接続へのアクセス権を付与します:
レポートに使用されるAutonomous Data Warehouseの場合は、ReportingDataAccess
という名前の共有データベース接続を作成します。この接続を、Data Scientists
というグループ内の特定のエンド・ユーザーのセットに割り当てます。このグループのユーザーは、データベース接続の詳細にアクセスできるようになりましたが、この接続のみの使用と、接続でデータベースへのアクセスに使用されている、ユーザーによって継承されたロールおよび権限に限定されます。
データ・ウェアハウスへの管理者接続を作成し、DatabaseAdministrators
というグループを使用してその接続に別のユーザー・セットを割り当てることもできます。コンパートメントとポリシーを使用すると、次のようにこれらの接続へのアクセスを分離できます:
データ・サイエンティスト・グループ:
- Reportingというコンパートメントを作成します。
- このコンパートメントにDataScientistsというグループを作成します。
- ReportingコンパートメントにReportingDataAccessというデータベース接続を作成します。
- Reportingコンパートメント内の接続へのアクセス権をDataScientistsグループに付与するポリシーを作成します:
-
Allow group DataScientists to read database-tools-family in compartment Reporting
-
Allow group DataScientists to use database-tools-connections in compartment Reporting
-
データベース管理者グループ:
- DBAというコンパートメントを作成します。
- このコンパートメントにDatabaseAdministratorsというグループを作成します。
- DBAコンパートメントにDatabaseAdminというデータベース接続を作成します。
- 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ワークシートからのアクセスを提供するために必要なネットワーク・セキュリティ・グループ・ルールの最小セットを構成するには:
- 「プライベート・エンドポイントの詳細」ページで、「プライベート・エンドポイントの情報」セクションの「逆接続ソースIP」フィールドを特定します。IPアドレスは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からのアクセスを提供するために必要なネットワーク・セキュリティ・グループ・ルールの最小セットを構成するには:
- 「要塞の詳細」ページの「プライベート・エンドポイントIPアドレス」フィールドで、プライベート・エンドポイントIPアドレス項目を特定します。1つのIPアドレスのみが表示されます。
- ネットワーク・セキュリティ・グループを編集し、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プリンシパル・サブタイプ
|
|
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コンソールの使用
- コンソールで、ナビゲーション・メニューを開き、「監視および管理」、「ロギング」、「監査」の順に選択します。
- 左ペインで、「コンパートメント」を選択します。
- 右側のペインの「カスタム・フィルタ」フィールドに、data.request.id= '<opc-request-id value>'と入力します。
- 「時間によるフィルタ」で、ドロップダウン・リストから時間間隔を選択します。
- 「適用」を選択します。
結果は「イベントの参照」タブに表示されます。
コマンドライン・インタフェース(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}"