はじめに
Logging Analytics は、OCI Observability&Managementのサービスの1つです。
Logging Analytics では、OCIのVCNやLoad Balancerなどの各種ログだけでなく、エージェントを使用することで、OSやデータベースなどのログを可視化、分析することができます。
もちろん、オンプレミスの Oracle Database のログの取得も可能です。
今回は、オンプレミスのExadata内のOracle Database の監査ログを管理エージェント、管理ゲートウェイ経由でLogging Analytics にアップロードする手順について説明します。
【前提条件】
- ExadataはExadata X8M
- Oracle Database のバージョンは19c
- OCI側の必要なコンパートメント、ユーザーの作成が済んでいること
- VCNや各種ゲートウェイなどの作成およびネットワークの設定が済んでいること
- ExadataやOracle Database 側のログ生成などの事前設定については今回は省きます
必要な動的グループとポリシーの作成
- 動的グループ(動的グループ名は任意)
#管理エージェント用動的グループ
ALL {resource.type = 'managementagent', resource.compartment.id = '[対象のコンパートメントのOCID]'}
#管理ゲートウェイ資格証明用動的グループ
ALL {resource.type='certificateauthority', resource.compartment.id = '[対象のコンパートメントのOCID]'}
- ポリシー(ポリシー名は任意)
#サービス有効化
Allow service loganalytics to READ loganalytics-features-family in tenancy
Allow service loganalytics to READ compartments in tenancy
#管理エージェント用
Allow dynamic-group [管理エージェント用動的グループ名] to MANAGE management-agents in compartment [対象のコンパートメント名]
Allow dynamic-group [管理エージェント用動的グループ名] to USE metrics in compartment [対象のコンパートメント名]
Allow dynamic-group [管理エージェント用動的グループ名] to {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} in compartment [対象のコンパートメント名]
#管理ゲートウェイ用
Allow dynamic-group [管理エージェント用動的グループ名] to READ certificate-authority-bundle in compartment [対象のコンパートメント名]
Allow dynamic-group [管理エージェント用動的グループ名] to READ leaf-certificate-bundle in compartment [対象のコンパートメント名]
Allow dynamic-group [管理エージェント用動的グループ名] to MANAGE certificate-authorities in compartment [対象のコンパートメント名] where any{request.permission='CERTIFICATE_AUTHORITY_CREATE', request.permission='CERTIFICATE_AUTHORITY_INSPECT', request.permission='CERTIFICATE_AUTHORITY_READ'}
Allow dynamic-group [管理エージェント用動的グループ名] to MANAGE leaf-certificates in compartment [対象のコンパートメント名] where any{request.permission='CERTIFICATE_CREATE', request.permission='CERTIFICATE_INSPECT', request.permission ='CERTIFICATE_UPDATE', request.permission='CERTIFICATE_READ'}
Allow dynamic-group [管理エージェント用動的グループ名] to MANAGE vaults in compartment [対象のコンパートメント名] where any{request.permission='VAULT_CREATE', request.permission='VAULT_INSPECT', request.permission='VAULT_READ', request.permission='VAULT_CREATE_KEY', request.permission='VAULT_IMPORT_KEY', request.permission='VAULT_CREATE_SECRET'}
Allow dynamic-group [管理エージェント用動的グループ名] to MANAGE keys in compartment [対象のコンパートメント名] where any{request.permission='KEY_CREATE', request.permission='KEY_INSPECT', request.permission='KEY_READ'}
Allow dynamic-group [管理エージェント用動的グループ名] to USE certificate-authority-delegates in compartment [対象のコンパートメント名]
Allow dynamic-group [管理エージェント用動的グループ名] to USE key-delegate in compartment [対象のコンパートメント名]
Allow dynamic-group [管理エージェント用動的グループ名] to MANAGE leaf-certificates in compartment [対象のコンパートメント名] where all{request.permission='CERTIFICATE_DELETE', target.leaf-certificate.name=request.principal.id}
#資格証明用
Allow dynamic-group [管理ゲートウェイ資格証明用動的グループ] to USE certificate-authority-delegates in compartment [対象のコンパートメント名]
Allow dynamic-group [管理ゲートウェイ資格証明用動的グループ] to USE vaults in compartment [対象のコンパートメント名]
Allow dynamic-group [管理ゲートウェイ資格証明用動的グループ] to USE keys in compartment [対象のコンパートメント名]
管理ゲートウェイのインストール
(事前に、OSがOracle Linuxのコンピュートを作成し、JDK8をインストールしてください)
- OCIコンソール画面から、監視および管理 -> 管理エージェント -> ダウンロードとキーから、Linuxのエージェントとゲートウェイをダウンロード
- 同じページの下部にあるキーの作成からキーを作成します
作成後のキーファイルのダウンロードもお忘れなく!
- コンピュートにダウンロードしたゲートウェイのファイルをインストールします
#管理ゲートウェイが使用する4480ポートの解放
firewall-cmd --zone=public --add-port=4480/tcp --permanent
firewall-cmd --reload
#RPMのインストール
rpm -ivh oracle.mgmt_gateway.231118.1208.1702955171.Linux-Aarch64.rpm
#input.rspファイルの作成
#インストールキーの値は、ダウンロードしたキーファイルにある
#パスワードは任意
vi /tmp/input.rsp
ManagementAgentInstallKey = XXXXXX
CredentialWalletPassword = XXXXXX
GatewayPort = 4480
BatchingEnabled = true
#input.rspファイルの所有者をmgmt_agentに変更
chown mgmt_agent:mgmt_agent /tmp/input.rsp
#インストールを実行
/opt/oracle/mgmt_agent/agent_inst/bin/setupGateway.sh opts=/tmp/input.rsp
管理エージェントのインストール
- Exadataにダウンロードした管理エージェントのファイルをインストールします
#zipファイルの回答
unzip oracle.mgmt_agent.231118.1208.Linux-x86_64.zip -d
#input.rspファイルの作成
#インストールキーとパスワードは管理ゲートウェイと同様
#ホストは管理ゲートウェイをインストールしたコンピュートのIPアドレス、ポート番号は4480
vi /tmp/input.rsp
ManagementAgentInstallKey = XXXXXX
CredentialWalletPassword = XXXXXX
GatewayServerHost = XXXXXX
GatewayServerPort = XXXXXX
Service.plugin.logan.download=true
#管理エージェントのインストール
/tmp/agent/installer.sh /tmp/input.rsp
ログ取得用のACL設定
#mgmt_aget:mgmt_agentへアクセス権限の付与
setfacl -R -m u:mgmt_agent:rx /u01/app/oracle/admin/*/adump
setfacl -d -m u:mgmt_agent:rx /u01/app/oracle/admin/*/adump
Logging Analyticsの設定
ここからは、OCIコンソール側の設定を行います。
エンティティ作成
- OCIコンソール画面から、監視および管理 -> ログ・アナリティクス -> 管理からエンティティの作成を選択
- エンティティ・タイプ:Oracle Database Instance
- 名前:任意
- 管理エージェント・コンパートメント:管理エージェントを作成したコンパートメントを選択
- 管理エージェント:インストールした管理エージェントを選択
- プロパティ
プロパティ名 | プロパティ値 |
---|---|
AUDIT_FILE_DEST | /u01/app/oracle/admin/*/adump |
ログ・グループ作成
- OCIコンソール画面から、監視および管理 -> ログ・アナリティクス -> 管理からログ・グループの作成を選択
- コンパートメント:選択不可
- 名前:任意
- 説明:任意
XML収集用ソースの追加と関連付け
- OCIコンソール画面から、監視および管理 -> ログ・アナリティクス -> 管理からソースの数字部分をクリック
- Database Audit XML Logsをクリック
- 複製をクリック
-
名前:任意
-
ソース・タイプ:File
-
エンティティ・タイプ:Oracle Database Instance
-
パーサー:デフォルトのまま
-
条件(オプション):新規条件
-
条件フィールド:Message
-
演算子:nullでない
-
ベース・フィールド:Message
-
サンプルのベース・フィールド・コンテンツ:Authenticated by: DATABASE;AUTHENTICATED IDENTITY: C##DBLCMUSER; Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=XXX.XXX.XXX.XXX)(PORT=63164))
-
式の抽出:HOST={IPADDRESS:[\d.]+}
-
テスト定義をクリック
- 新規フィールドの作成をクリック
- データ型:文字列を選択し、作成をクリック
- テスト定義をクリックし、成功となることを確認し、追加をクリック
- 追加したフィールドの有効にチェックがついていることを確認して、ソースの作成をクリック
- リソース欄の関連付けられていないエンティティをクリックし、関連付けるエンティティにチェックを入れて、アソシエーションの追加をクリック
- ログ・エクスプローラの画面を開き、ログが収集されていることを確認する
さいごに
ログがあまりに大きすぎると、管理ゲートウェイで詰まったりするので、ログ量を事前に把握しておくことで、何らかの対策を打つことができると思います。
また、管理エージェントがログを取り込めない場合は、DBの認証周りであることが多いので、認証認可やポートの解放などを確認してみてください。この時、ログからエラーの原因を確認することができます。
ログ・アナリティクスのストレージ料金は10GBまで無償ですが、その後は若干割高なので、適宜オブジェクト・ストレージに転送することも可能です。