AWS API Gateway のアクセスログを収集する

パーサーのバージョン: 7.0

以下でサポートされています。

このドキュメントでは、AWS CloudWatch Logs と Kinesis Data Firehose を使用して、Amazon API Gateway アクセスログを Google Security Operations に取り込む方法について説明します。Amazon API Gateway は、API を大規模に構築および管理するための REST API と HTTP API を提供します。アクセスログは、API の使用状況のモニタリングや問題のトラブルシューティングに役立ちます。この統合により、これらのログが Google SecOps にストリーミングされ、分析とモニタリングが行われます。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス
  • AWS への特権アクセス

Amazon API Gateway アクセス ロギング(CloudWatch Logs へのロギング)を有効にする

  1. [AWS Console] > [API Gateway] に移動します。
  2. REST API の場合:

    • [Stage] > [Logs/Tracing] > [enable Access logging] を開きます。
    • ログ形式: [JSON] を選択します。

      {
        "requestId":"$context.requestId",
        "ip":"$context.identity.sourceIp",
        "requestTime":"$context.requestTime",
        "httpMethod":"$context.httpMethod",
        "routeKey":"$context.routeKey",
        "status":"$context.status",
        "protocol":"$context.protocol",
        "responseLength":"$context.responseLength",
        "integrationLatency":"$context.integrationLatency",
        "error":"$context.error.message"
      }
      
    • CloudWatch Logs ロググループ: ロググループ(/aws/apigateway/access など)を選択または作成します。

  3. HTTP API の場合:

    • [API] > [Monitor] > [Logging] を選択します。
    • [ステージ] > [編集] を選択します。
    • [アクセス ロギング] を有効にします。
    • 上記と同じ JSON ログ形式を使用します。
    • CloudWatch Logs ロググループ: ロググループ(/aws/apigateway/access など)を選択または作成します。
  4. [保存] をクリックします。

Amazon API Gateway のログを取り込むように Google SecOps でフィードを構成する

  1. [設定] > [データ管理] > [フィード] に移動します。SIEM のみのプラットフォームを使用している場合は、[設定] > [フィード] に移動します。
  2. [+ Add New Feed] をクリックします。
  3. [フィード名] フィールドに「Amazon API Gateway - CloudWatch via Firehose」と入力します。
  4. [ソースタイプ] として [Amazon Data Firehose] を選択します。
  5. [Log type] として [Amazon API Gateway] を選択します。
  6. [次へ] をクリックします。
  7. 次の入力パラメータの値を指定します。
    • 分割区切り文字: 省略可 n
    • アセットの名前空間: aws.api_gateway
    • 取り込みラベル: source=apigw_access、aws_region=<your-region> など。
  8. [次へ] をクリックします。
  9. フィードの設定を確認し、[送信] をクリックします。
  10. フィードの [詳細] で、[秘密鍵を生成] をクリックし、[秘密鍵] をコピーします。
  11. [エンドポイント情報] から [フィードの HTTPS エンドポイント URL] をコピーします。
  12. [API とサービス] > [認証情報] > [認証情報を作成] > [API キー] で Google Cloud API キーを作成し、Chronicle API に制限します。
  13. API キーをコピーして安全な場所に保存します。

Amazon Kinesis Data Firehose(Google SecOps への直接送信)を構成する

  1. AWS コンソールで、[Kinesis] > [Data Firehose] > [Create delivery stream] に移動します。
  2. 次の構成情報を指定します。
    • ソース: [直接 PUT またはその他のソース] を選択します。
    • 宛先: [HTTP エンドポイント] を選択します。
    • HTTP エンドポイント URL: ENDPOINT_URL?key=API_KEY を入力します(前の手順のフィード HTTPS エンドポイント URL と API キーを使用します)。
    • HTTP メソッド: [POST] を選択します。
    • アクセスキー: フィードで生成された秘密鍵を貼り付けます。
    • バッファリングのヒント: バッファサイズ = 1 MiB、バッファ間隔 = 60 秒に設定します。
    • 圧縮: [無効] を選択します。
    • S3 バックアップ: [無効] を選択します。
    • retry と logging の設定はデフォルトのままにします。
  3. [Create delivery stream] をクリックします。(例: cwlogs-to-secops。)

IAM 権限を構成してロググループをサブスクライブする

  1. AWS コンソールで、[IAM] > [ポリシー] > [ポリシーを作成] > [JSON] に移動します。
    1. JSON エディタで、次のポリシーを入力します。
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "firehose:PutRecord",
            "firehose:PutRecordBatch"
          ],
          "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops"
        }
      ]
    }
    
    • <region> と <account-id> は、AWS リージョンとアカウント ID に置き換えます。
  2. ポリシーに「CWLtoFirehoseWrite」という名前を付け、[ポリシーを作成] をクリックします。

  3. [IAM] > [ロール] > [ロールを作成] に移動します。

  4. [カスタム信頼ポリシー] を選択し、次のように入力します。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "logs.<your-region>.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    
  5. ポリシー CWLtoFirehoseWrite をロールにアタッチします。

  6. ロールに「CWLtoFirehoseRole」という名前を付け、[ロールを作成] をクリックします。

  7. [CloudWatch] > [Logs] > [Log groups] に移動します。

  8. 前に作成した API Gateway ロググループを選択します。

  9. [サブスクリプション フィルタ] タブを開き、[作成] をクリックします。

  10. [Create Amazon Kinesis Data Firehose subscription filter] を選択します。

  11. 以下の構成を行います。

    • 宛先: 配信ストリーム cwlogs-to-secops。
    • 権限を付与する: ロール CWLtoFirehoseRole。
    • フィルタ名: 「all-events」と入力します。
    • フィルタ パターン: すべてのイベントを送信する場合は、空のままにします。
  12. [ストリーミングを開始] をクリックします。

変更ログ

このパーサーの変更ログを表示する

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。