シナリオ: モニタリング・ターゲットのディメンションの作成

コネクタによって生成されるカスタム・メトリックのディメンションを作成する方法について説明します。ロギング・サービスからメトリック(モニタリング・サービス)に、コネクタ・ハブを使用してログ・データを送信します。

このシナリオでは、コネクタ・を作成して、ログ・データを参照するディメンションを含むカスタム・メトリックを生成します。このコネクタを使用して、ログ・データをロギングからモニタリングに移動します。データの移動後、コネクタによって作成されるディメンションを使用して、新しいカスタム・メトリックをフィルタ処理できます。

必要なIAMポリシー

管理者グループのメンバーであれば、このシナリオを完了するために必要なアクセス権をすでに持っています。それ以外の場合は、モニタリング へのアクセス権が必要です。

コネクタを作成するワークフローには、ターゲット・サービスへの書込みのための権限を提供するために必要なデフォルト・ポリシーが含まれます。ポリシーを初めて使用する場合は、IAMポリシーの概要を参照してください。

目標

このトピックでは、このシナリオの目標について説明します。

このシナリオの目標は、オブジェクト・ストレージ・バケットの更新イベントをフィルタすることです。たとえば、バケットをパブリック・アクセスに変更した更新を探します。パブリック・バケットを検出すると、機密情報の漏洩を防ぐことに役立ちます。このシナリオでは、パブリック・アクセス・タイプの他に、バケット名、コンパートメント名、可用性ドメイン、バージョン管理ステータスおよび静的値のフィルタを設定します。

このシナリオの設定

このトピックでは、このシナリオの設定に関連するタスクについて説明します。

このシナリオでは、コネクタ・ハブ・サービスを使用してログからメトリックを作成します。このシナリオの設定には、次のタスクが含まれます:

  • ログをLoggingからMonitoring内のディメンションを含むカスタム・メトリックに移動するコネクタを作成します。

    • ログ・データ: 監査ログ(_Auditログ・グループ)のバケット- 更新イベント

      ノート

      このシナリオでは_Auditログ・グループおよびバケット更新イベントを使用しますが、テナンシで使用可能なすべてのログに対して同様のアプローチを使用できます。
    • メトリック・ネームスペース: bucket_events

    • メトリック名: update

    • 静的値 buckets-from-connector (ディメンション名: mytags)

    • パス・ディメンションを使用して抽出される値:

      ノート

      新しいディメンション値ごとに、新しいメトリック・ストリームが作成されます。スロットルが発生する可能性がある一意のメトリック・ストリームの生成が多すぎないように、ディメンションからGUIDまたはUUID (コンパートメントOCIDsなど)を除外することをお薦めします。

      パス・プロパティ(ディメンション名)
      bucketName logContent.data.additionalDetails.bucketName
      compartmentName logContent.data.compartmentName
      availabilityDomain logContent.data.availabilityDomain
      publicAccessType logContent.data.additionalDetails.publicAccessType
      versioning logContent.data.additionalDetails.versioning
  • 移動されたデータをディメンション(静的値および抽出された値)でフィルタ処理します。

これらのタスクは、Oracle Cloud Infrastructureコンソール、CLIまたはAPIで完了できます。

トラブルシューティングのヘルプは、コネクタのトラブルシューティングおよび通知のトラブルシューティングを参照してください。

  • ノート

    「コネクタの作成」ページのフィールドの詳細は、コネクタの作成を参照してください。
    タスク1: コネクタの作成

    タスク1: コネクタの作成

    オブジェクト・ストレージ・バケットの更新イベントをカスタム・ディメンションのカスタム・メトリックに移動するコネクタを作成します。

    「コネクタ」リスト・ページで、「コネクタの作成」を選択します。リスト・ページの検索に関するヘルプが必要な場合は、コネクタのリストを参照してください。

    1. 基本的なコネクタ情報

    識別情報の入力

    • コネクタ名: 新しいコネクタのわかりやすい名前とオプションの説明を入力します。機密情報を入力しないでください。例: バケット- 更新
    • コンパートメントの選択: 新しいコネクタを格納するコンパートメントを選択します。

    「次へ」を選択します。

    2. コネクタ・ソースの構成

    データの転送元となるコネクタのソース・ログを指定します。

    • ソースの選択: 「ロギング」を選択します。
    • ソースの構成: 「監査ログ」を選択します。
      • コンパートメントの名前: ログ・データを含むコンパートメント。
      • ログ・グループ: _Audit
      • ログ・フィルタ・タスク: オブジェクト・ストレージ・バケットの更新イベントを選択します。
        • フィルタ・タイプ: イベント・タイプ
        • サービス名: オブジェクト・ストレージ
        • イベント・タイプ: オブジェクト - 更新

    「次へ」を選択します。

    3. コネクタ・タスクの構成

    「次へ」を選択します(このセクションはスキップします)。

    4. コネクタ・ターゲットの構成

    データの送信先のメトリックを指定します。

    • ターゲット: 「モニタリング」を選択します。
    • ターゲットの構成: フィルタ処理したログ・データで使用するカスタム・メトリック・ネームスペースおよびカスタム・メトリック名を入力します。
      • コンパートメント: バケット更新イベントに対応するメトリック・データ・ポイントを格納するコンパートメントを選択してください。
      • メトリック・ネームスペース: 新しいメトリック・ネームスペースとしてbucket_eventsを入力します。
        ノート

        新しいメトリック・ネームスペースを入力したら、[Enter]を押して送信します。
      • メトリック: 新しいメトリック(update)を入力します

        次に、ログ・データに静的値buckets-from-connectorをタグ付けし、バケット名、コンパートメント名、コンパートメントOCID、可用性ドメイン、パブリック・アクセス・タイプおよびバージョン管理ステータスを抽出するためのカスタム・ディメンションを作成します。

      • ディメンションの追加: 「ディメンションの追加」パネルを開き、ログ・データ(ディメンション名bucketName)からバケット名を抽出する場合に選択します。
        • 使用可能なディメンションの表示: オプションで、使用可能なディメンションを表示します。

          ログ・データの最新の6行が、「ソースの構成」で指定されたログから取得されます。

        • 「パスの追加」(「ディメンションの編集」の下): 選択するパス(「ディメンション・パス」)をリストし、オプションで選択したパスの「ディメンション名」に自動的に移入された値を編集します。
        • 静的パスの追加(「静的パス」の下): ディメンション名と値を手動で入力する場合に選択します。
          ノート

          使用可能なログ・データがない場合は、「静的パス」の下にカスタム・ディメンション名を含むパス値を手動で入力できます。パスはlogContentから開始し、ドット(.)またはインデックス([])表記のいずれかを使用する必要があります。ドットとインデックスはサポートされている唯一のJMESPathセレクタです。次に例を示します:
          • logContent.data (ドット表記法)
          • logContent.data[0].content (インデックス表記法)

          バケット更新イベントのパスの例(ドット表記法使用):

          logContent.data.additionalDetails.bucketName

          エントリの例:

          ディメンション名 ディメンション・パス
          bucketName logContent.data.additionalDetails.bucketName

          有効なパス表記法の詳細は、JmesPathDimensionValueを参照してください。

      • ディメンション(フィルタ)として使用する追加の値ごとに、抽出を繰り返します。

        「ディメンション名」は、選択したパスから自動的に移入されます。オプションでデフォルト名を編集できます。

        ディメンション名 ディメンション・パス
        compartmentName logContent.data.compartmentName
        availabilityDomain logContent.data.availabilityDomain
        publicAccessType logContent.data.additionalDetails.publicAccessType
        versioning logContent.data.additionalDetails.versioning
      • ログ・データに静的値buckets-from-connector (ディメンション名mytags)のタグ付けを行います: 「静的パス」に次のように入力します:
        • ディメンション名: mytags
        • ディメンション値: buckets-from-connector
      • 変更の保存: ディメンションを保存し、「ディメンションの追加」パネルを閉じる場合に選択します。
    • ポリシーの作成: 入力したターゲット構成に指定したデフォルト・ポリシーを受け入れる場合に選択します。

    「次へ」を選択します。

    コネクタ・プレビュー

    コネクタ構成を確認し、「作成」を選択します。

    作成プロセスが開始され、その進行状況が表示されます。完了すると、コネクタの詳細ページが開きます。

    新しいコネクタは、指定したディメンションを含むカスタム・メトリックupdateへのログ・データの移動を開始します。

    次に、ディメンションを使用して、移動したデータをフィルタ処理します。

    タスク2: 移動したデータのフィルタ処理

    タスク2: 移動したデータのフィルタ処理

    このトピックでは、コンソールを使用して、ログからディメンションを含むカスタム・メトリックに移動されたデータをフィルタ処理する方法について説明します。

    1. ナビゲーション・メニューを開き、「監視および管理」を選択します。「モニタリング」で、「メトリック・エクスプローラ」を選択します。

    2. メトリック・エクスプローラ・ページで、新しい問合せのフィールドに入力します。
      • コンパートメント: メトリックを含むコンパートメント。
      • メトリック・ネームスペースbucket_events
      • メトリック名: update
      • 間隔: 1m

      • 統計:

      • メトリック・ディメンション: 次のディメンションを追加します。

        ディメンション名 ディメンション値
        mytags buckets-from-connector
        bucketName bucket-20210722-1148
        compartmentName development
        availabilityDomain PHX-AD-3
        publicAccessType ObjectRead
        versioning Enabled
    3. 「チャートの更新」を選択します。

      チャートには、ディメンションによってフィルタ処理されたメトリック・データが表示されます。

      完了しました。これで、コネクタがメトリックに移動したログ・データをフィルタ処理しています。

  • APIの使用およびリクエストの署名の詳細は、REST APIのドキュメントおよびセキュリティ資格証明を参照してください。SDKの詳細は、SDKおよびCLIを参照してください。

    1. コネクタのログ・ソースを定義します: source.jsonという名前のファイルを保存します。

      source.jsonファイルの例
      {
        "kind": "logging",
        "logSources": [
          {
            "compartmentId": "<compartment_OCID>",
              "logGroupId": "_Audit",
              "logId": null
          }
        ]
      }
    2. コネクタのターゲット(メトリックとディメンション)を定義します: target.jsonという名前のファイルを保存します。

      target.jsonファイルの例
      {
        "kind": "monitoring",
        "compartmentId": "<compartment_OCID>",
        "metricNamespace": "bucket_events",
        "metric": "update",
        "dimensions": [
          {"name": "mytags", "dimensionValue": {"kind": "static", "value": "buckets-from-connector"}},
          {"name": "bucketName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.bucketName"}},
          {"name": "compartmentName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.compartmentName"}},
          {"name": "availabilityDomain", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.availabilityDomain"}},
          {"name": "publicAccessType", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.publicAccessType"}},
          {"name": "versioning", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.versioning"}}
        ]
      }
    3. コネクタを作成します: コマンド・プロンプトを開き、oci sch service-connector createコマンドを実行します:

      コネクタを作成するためのコマンドの例
      oci sch service-connector create
       --compartment-id <compartment_OCID>
       --display-name "Bucket - Update"
       --source file://source.json
       --target file://target.json
    4. カスタム・ディメンションを使用してメトリック・データを問い合せます: コマンド・プロンプトを開き、oci monitoring metric-data summarize-metrics-dataコマンドを実行します:

      カスタム・ディメンションを使用してメトリック・データを問い合せるコマンドの例
      oci monitoring metric-data summarize-metrics-data
       --compartment-id <compartment_OCID>
       --namespace bucket_events
       --query-text update[1m]{mytags = "buckets-from-connector", bucketName = "bucket-20210722-1148", coompartmentName = "development", availabilityDomain = "PHX-AD-3", publicAccessType = "ObjectRead", versioning = "Enabled"}.count()

    トラブルシューティングのヘルプは、コネクタのトラブルシューティングおよび通知のトラブルシューティングを参照してください。

  • APIの使用およびリクエストの署名の詳細は、REST APIのドキュメントおよびセキュリティ資格証明を参照してください。SDKの詳細は、SDKおよびCLIを参照してください。

    次の操作を使用します:

    1. CreateServiceConnector: コネクタを作成します。

      CreateServiceConnectorリクエストの例
      POST /20200909/serviceConnectors
      Host: service-connector-hub.us-phoenix-1.oraclecloud.com
      <authorization and other headers>
      {
        "compartmentId": "<compartment_OCID>",
        "displayName": "Bucket - Update",
        "source": {
          "kind": "logging",
          "logSources": [
            {
              "compartmentId": "<compartment_OCID>",
              "logGroupId": "_Audit",
              "logId": null
            }
          ]
        },
        "target": {
          "compartmentId": "<compartment_OCID>",
          "dimensions": [
            {"name": "mytags", "dimensionValue": {"kind": "static", "value": "buckets-from-connector"}},
            {"name": "bucketName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.bucketName"}},
            {"name": "compartmentName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.compartmentName"}},
            {"name": "availabilityDomain", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.availabilityDomain"}},
            {"name": "publicAccessType", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.publicAccessType"}},
            {"name": "versioning", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.versioning"}}
          ]
          "kind": "monitoring",
          "metric": "update",
          "metricNamespace": "bucket_events"
        }
      }
    2. SummarizeMetricsData: ディメンションによってメトリック・データを問い合せます。

      SummarizeMetricsDataリクエストの例
      POST /20180401/metrics/actions/summarizeMetricsData?compartmentId=<compartment_OCID>
      Host: telemetry.us-phoenix-1.oraclecloud.com
      <authorization and other headers>
      {
        "namespace": "bucket_events",
        "query": "update[1m]{mytags = "buckets-from-connector", bucketName = "bucket-20210722-1148", coompartmentName = "development", availabilityDomain = "PHX-AD-3", publicAccessType = "ObjectRead", versioning = "Enabled"}.count()"
      }

    トラブルシューティングのヘルプは、コネクタのトラブルシューティングおよび通知のトラブルシューティングを参照してください。