ノート:

Oracle Analytics CloudへのOracle Cloud Guardイベントのキャプチャ

イントロダクション

このチュートリアルでは、Oracle Cloud GuardイベントをOracle Autonomous JSON Database (AJD)に転送し、Oracle Analytics Cloudで取得する方法について説明します。Oracle Analytics Cloudでクラウド・ガード・イベントを分析および表示する後続のチュートリアルがあります。

アーキテクチャの概要

アーキテクチャの概要。

目的

前提条件

タスク1: クラウド・イベントをトリガーするためのOracle Cloud Guardの構成

ディテクタ・レシピに応答するようにOracle Cloud Guardを構成します。レスポンダ・ルールでは、次の図に示すように、Oracle Cloud Guardイベントの「ステータス」「有効」に設定されていることを確認します。

レスポンダ・ルール

タスク2: Oracle Cloud Guardの問題を検出し、OCIファンクションを起動するためのOCIイベント・サービス・ルールの作成

  1. OCI Events Serviceを使用すると、テナンシ全体にわたるリソースの状態変化に基づく自動処理を作成できます。イベントを使用することで、開発チームはリソースの状態が変更されたときに自動的に応答できます。

    イベントを取得するには、「監視および管理」に移動し、「イベント・サービス」をクリックします。次の図に示すように、新しいルールを作成し、関数に書き込まれるイベント・タイプを構成します。

    ルール定義

  2. 省略記号アイコン(縦に並んだ3つのドット)をクリックして、Oracle Cloud Guardイベントを編集し、次の図に示すようにファンクションに送信します。

    パラメータ定義 次に示すように、クラウド・ガード・イベントを関数に転送するアクションを追加します。イベント・アクション イベント・タイプの構成 イベント・タイプ

タスク3: イベントをAJDに転送するファンクションの作成

  1. OCIコンソールに移動し、「開発者サービス」に移動して「ファンクション」をクリックします。

  2. 既存のアプリケーションを選択するか、「アプリケーションの作成」をクリックします。アプリケーション内に新しいOCIファンクションを作成します。詳細は、クラウド・シェルでのファンクションQuickStartを参照してください。

    ノート:前提条件を正常に完了したとします。

  3. 次のコマンドを実行して、アプリケーションのリストでアプリケーションを確認します。

    fn ls apps
    
  4. 最初にボイラープレートPython関数を作成することをお薦めします。fn init – runtime oci-event-to-dbコマンドは、func.pyfunc.yamlおよびrequirements.txtという3つのファイルを持つoci-event-to-dbという名前のフォルダを生成します。

  5. AJD表が存在し、REST対応である必要があります。次の図に示すように。 Restの有効化。

  6. func.pyファイルの内容を次のコードで更新します。

    import io
    import json
    import re
    import requests
    
    eventTable="https://mrj6p3vkk4ramuu-cgdata.adb.us-ashburn-1.oraclecloudapps.com/ords/cguser/event/"
    
    from fdk import response
    
    def handler(ctx, data: io.BytesIO=None):
    try:
    bodytxt = data.getvalue()
    body = json.loads(bodytxt)
    
    # print("event type: " + body["eventType"])
    # print("compartment name: " + body["data"]["compartmentName"])
    
    headers = {'Content-type': 'application/json', 'accept': 'application/json'}
    req = requests.post(eventTable, json={ "event": body }, headers=headers)
    
    except (Exception, ValueError) as ex:
    print('ERROR:', ex, flush=True)
    raise
    
    return response.Response(
    ctx,
    response_data=[ json.loads(req.text)["id"] ],
    # response_data=json.loads(req.text),
    headers={"Content-Type": "application/json"}
    )
    
  7. func.yamlファイルの内容を次のコードで更新します。

    schema_version: 20180708
    name: oci-event-to-db
    version: 0.0.44
    runtime: python
    build_image: fnproject/python:3.11-dev
    run_image: fnproject/python:3.11
    entrypoint: /python/bin/fdk /function/func.py handler
    memory: 256
    
  8. requirements.txtファイルの内容を次のコードで更新します。

    Requests
    oci
    fdk
    
  9. 次のコマンドを実行して、ファンクションをデプロイします。

    fn -v deploy -app oci-event-to-db
    

タスク4: ORDSを使用したデータベースのフラット化

  1. Oracle Cloud GuardイベントがAJDに格納されたら、「イベント」表を確認して、データベースでOracle Cloud Guardのアクティビティを確認します。次のSQL文を実行します。

    SELECT * FROM EVENTS
    
  2. Oracle Cloud GuardイベントはJava Script Object Notation (JSON)形式で格納されるため、データを分析するには、Oracle Analytics Cloudでフラット化またはリレーショナル形式に変換する必要があります。

    データベースをフラット化するには、次のステップを実行します。

    1. イベント表に索引を作成し、次のSQL文を実行してフラット化します。

      Create search index event_idx on event (event) for JSON parameters ('DATAGUIDE ON');
      
    2. ビューを作成します。

      exec dbms_json.create_view_on_path('flat_event', 'event', 'event', '$’);
      
  3. 次のSQL文を実行して、前述のステップで作成した列を確認します。

    SELECT COLUMN_NAME,DATA_TYPE FROM all_tab_columns where table_name ='FLAT_EVENT' order BY column_id;
    

    次の図に示すように、列とデータ型が表示されます。

    リレーショナル形式。

タスク5: Oracle Analytics Cloudへの接続

  1. データベースがJSONからリレーショナル形式に変換されたら、Oracle Analytics Cloudに接続します。次の図に示すように、OCIコンソールに移動し、AJDインスタンスに移動し、データベース接続をクリックして資格証明を指定し、ウォレットをダウンロードします。

    AJD接続。

  2. Oracle Analytics Cloudにログインし、「新規接続の作成」をクリックして「Oracle Autonomous Data Warehouse」をクリックし、ステップ1でダウンロードしたウォレットを選択します。

    Oracle Analytics Cloudの接続タイプ。

  3. 接続が確立されると、OACは「接続」の下に次のように表示されます。 Oracle Analytics Cloudの接続リスト。

  4. 接続をダブルクリックしてOACに新しいデータセットを作成し、スキーマを展開して、表をキャンバスにドラッグします。 Oracle Analytics Cloudデータセット。

承認

その他の学習リソース

docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。