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

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

このドキュメントでは、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 コンソール > API Gateway に移動します。
  2. REST API の場合:

    • [ステージ> ログ/トレース> アクセス ロギングを有効にする] を開きます。
    • ログ形式: [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> モニタリング> ロギング] を選択します。
    • [ステージ>編集] を選択します。
    • アクセス ロギングを有効にします。
    • 上記の JSON ログ形式を使用します。
    • CloudWatch Logs ロググループ: ロググループ(/aws/apigateway/access など)を選択または作成します。
  4. [保存] をクリックします。

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

  1. [SIEM 設定] > [フィード] に移動します。
  2. [+ 新しいフィードを追加] をクリックします。
  3. [フィード名] フィールドに「Amazon API Gateway - CloudWatch via Firehose」と入力します。
  4. [ソースタイプ] として [Amazon Data Firehose] を選択します。
  5. [Log type] で [Amazon API Gateway] を選択します。
  6. [次へ] をクリックします。
  7. 次の入力パラメータの値を指定します。
    • 分割区切り文字: 省略可 n
    • アセットの Namespace: aws.api_gateway
    • 取り込みラベル: source=apigw_accessaws_region=<your-region> など
  8. [次へ] をクリックします。
  9. フィードの設定を確認し、[送信] をクリックします。
  10. フィードの [詳細] で、[シークレット キーを生成] をクリックし、[シークレット キー] をコピーします。
  11. [エンドポイント情報] から [フィード HTTPS エンドポイント URL] をコピーします。
  12. [API とサービス] > [認証情報] > [認証情報を作成] > [API キー]Google Cloud API キーを作成し、Google SecOps 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] を選択します。
    • Access key: フィードで生成された秘密鍵を貼り付けます。
    • バッファリングのヒント: [バッファサイズ] = [1 MiB]、[バッファ間隔] = [60 秒] に設定します。
    • 圧縮: [無効] を選択します。
    • S3 バックアップ: [無効] を選択します。
    • 再試行ロギングの設定はデフォルトのままにします。
  3. [配信ストリームを作成] をクリックします。(例: 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] > [ログ] > [ロググループ] に移動します。

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

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

  10. [Amazon Kinesis Data Firehose サブスクリプション フィルタを作成] を選択します。

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

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

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