

# AWS CloudTrail での Amazon RDS Data API コールのログ記録
<a name="logging-using-cloudtrail-data-api"></a>

RDS Data API (Data API) は AWS CloudTrail と統合されています。これは、Data API のユーザー、ロール、または AWS のサービスによって実行されたアクションを記録するサービスです。CloudTrail は、Amazon RDS コンソールからの呼び出しとデータ API オペレーションへのコード呼び出しを含む、すべての データ API の API コールをイベントとしてキャプチャします。証跡を作成する場合は、Data API のイベントなど、Amazon S3 バケットへの CloudTrail イベントの継続的配信を有効にすることができます。CloudTrail によって収集されたデータを使用して、多くの情報を判断できます。この情報には、Data API に対するリクエスト、リクエスト元の IP アドレス、リクエスト者、リクエスト日時などの詳細が含まれます。

CloudTrail の詳細については、[AWS CloudTrail ユーザーガイド](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)を参照してください。

## CloudTrail での Data API 情報の使用
<a name="service-name-info-in-cloudtrail-data-api"></a>

CloudTrail は、アカウントを作成すると AWS アカウントで有効になります。Data API でサポートされているアクティビティ (管理イベント) が発生すると、そのアクティビティは **[イベント履歴]** で AWS のその他サービスのイベントと共に CloudTrail イベントに記録されます。最近の管理イベントは、AWS アカウントで表示、検索、ダウンロードできます。詳細については、「*AWS CloudTrail ユーザーガイド*」の「[CloudTrail イベント履歴の使用](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)」を参照してください。

Data API のイベントなど、AWS アカウントのイベントを継続的に記録する場合は、証跡を作成します。*証跡*により、CloudTrail はログファイルを Amazon S3 バケットに配信できます。デフォルトでは、コンソールで証跡を作成すると、すべての AWS リージョンに証跡が適用されます。追跡では、AWS パーティション内のすべての AWS リージョンからのイベントをログに記録し、指定した Simple Storage Service (Amazon S3)バケットにログファイルを配信します。さらに、CloudTrail・ログで収集したイベントデータをより詳細に分析し、それに基づく対応するためにその他の AWS サービスを設定できます。詳細については、『*AWS CloudTrail ユーザーガイド:*』の以下のトピックを参照してください。
+ [証跡作成の概要](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail がサポートされているサービスと統合](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [CloudTrail の Amazon SNS 通知の設定](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ 「[CloudTrail ログファイルを複数のリージョンから受け取る](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)」、「[複数のアカウントから CloudTrail ログファイルを受け取る](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)」

すべての Data API オペレーションは、CloudTrail によってログに記録されます。また、[https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/Welcome.html](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/Welcome.html)に記載されています。例えば、`BatchExecuteStatement`, `BeginTransaction` オペレーション、`CommitTransaction` オペレーション、および `ExecuteStatement` オペレーションへのコールに伴って、CloudTrail ログファイルにエントリが生成されます。

各イベントまたはログエントリには、リクエストの生成者に関する情報が含まれます。ID 情報は次の判断に役立ちます。
+ リクエストが、ルートとユーザー認証情報のどちらを使用して送信されたか。
+ リクエストが、ロールとフェデレーションユーザーの一時的なセキュリティ認証情報のどちらを使用して送信されたか。
+ リクエストが別の AWS サービスによって行われたかどうか。

詳細については、「[CloudTrail userIdentity エレメント](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)」を参照してください。

## AWS CloudTrail の証跡からの Data API イベントの包含と除外
<a name="logging-using-cloudtrail-data-api.including-excluding-cloudtrail-events"></a>

多くの Data API ユーザーは、Data API オペレーションの記録のために、AWS CloudTrail の証跡内のイベントを使用しています。イベントデータは、Data API へのリクエストでデータベース名、スキーマ名、または SQL ステートメントを公開しません。ただし、特定の時点でどのユーザーが特定の DB クラスターに対して特定のコールタイプを実行したかを把握すると、異常なアクセスパターンの検出に役立ちます。

### AWS CloudTrail の証跡からの Data API イベントの包含
<a name="logging-using-cloudtrail-data-api.including-cloudtrail-events"></a>

Aurora PostgreSQL Serverless v2 およびプロビジョニングされたデータベースの場合、次の Data API オペレーションは*データイベント* として AWS CloudTrail に記録されます。[データイベント](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events)は、CloudTrail がデフォルトではログ記録しない大量のデータプレーン API オペレーションです。追加の変更がイベントデータに適用されます。CloudTrail の料金の詳細については、「[AWS CloudTrail の料金](https://aws.amazon.com/cloudtrail/pricing/)」を参照してください。
+ [BatchExecuteStatement](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_BatchExecuteStatement.html)
+ [BeginTransaction](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_BeginTransaction.html)
+ [CommitTransaction](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_CommitTransaction.html)
+ [ExecuteStatement](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html)
+ [RollbackTransaction](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_RollbackTransaction.html)

CloudTrail コンソール、AWS CLI、または CloudTrail API オペレーションを使用して、これらの Data API オペレーションをログに記録できます。CloudTrail コンソールで、データイベントタイプの **[RDS Data API - DB クラスター]** を選択します。詳細については、「*AWS CloudTrail ユーザーガイド*」の「[AWS マネジメントコンソール によるデータイベントのログ記録](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#creating-data-event-selectors-with-the-AWS-CLI)」を参照してください。

AWS CLI を使用して `aws cloudtrail put-event-selectors` コマンドを実行し、証跡のこれらの Data API オペレーションをログに記録します。DB クラスターのすべての Data API イベントをログに記録するには、リソースタイプに `AWS::RDS::DBCluster` を指定します。次の例では、DB クラスター上のすべての Data API イベントをログに記録します。詳細については、「*AWS CloudTrail ユーザーガイド*」の「[AWS Command Line Interface によるデータイベントのログ記録](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail-by-using-the-aws-cli.html)」を参照してください。

```
aws cloudtrail put-event-selectors --trail-name trail_name --advanced-event-selectors \
'{
   "Name": "RDS Data API Selector",
   "FieldSelectors": [
      {
         "Field": "eventCategory",
         "Equals": [
            "Data"
         ]
      },
      {
         "Field": "resources.type",
         "Equals": [
            "AWS::RDS::DBCluster"
         ]
      }
   ]
}'
```

高度なイベントセレクタを設定して、`readOnly`、`eventName,` および `resources.ARN` フィールドでさらにフィルタリングできます。これらのフィールドの詳細については、「[AdvancedFieldSelector](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html)」を参照してください。

### AWS CloudTrail の証跡からの Data API イベントの除外 (Aurora Serverless v1 のみ)
<a name="logging-using-cloudtrail-data-api.excluding-cloudtrail-events"></a>

Aurora Serverless v1 の場合、Data API イベントは管理イベントです。デフォルトでは、すべての Data API イベントが AWS CloudTrail の証跡に含まれます。ただし、Data API では多数のイベントが生成されるため、これらのイベントを CloudTrail の証跡から除外したい場合があります。**[Amazon RDS のデータ API イベントを除外]** 設定は、証跡からすべての Data API イベントを除外します。特定の Data API イベントを除外することはできません。

証跡から Data API イベントを除外するには、次の手順を実行します。
+ CloudTrail コンソールで、[証跡を作成する](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-a-trail-using-the-console-first-time.html)または[証跡を更新する](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-update-a-trail-console.html)際に、[**Amazon RDS Data API イベントを除外する**] 設定をオンにします。
+ CloudTrail API では、[PutEventSelectors](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_PutEventSelectors.html) オペレーションを実行します。アドバンストイベントセレクタを使用している場合は、 [`eventSource`] フィールドを`rdsdata.amazonaws.com` と等しくないと設定すると、Data API イベントを除外できます。ベーシックイベントセレクタを使用している場合は、`ExcludeManagementEventSources` 属性の値を `rdsdata.amazonaws.com` に設定すると、Data API イベントを除外できます。詳細については、「**AWS CloudTrail ユーザーガイド」の「[AWS Command Line Interface](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#creating-mgmt-event-selectors-with-the-AWS-CLI) によるイベントのログ記録」を参照してください。

**警告**  
CloudTrail ログから Data API イベントを除外すると、Data API アクションが不確定になることがあります。このオペレーションを実行するために必要な `cloudtrail:PutEventSelectors` アクセス許可をプリンシパルに与えるときは注意してください。

この除外は、コンソール設定または証跡のイベントセレクタを変更することで、いつでも無効化できます。その後、証跡が Data API イベントの記録をスタートします。ただし、除外が有効であった期間に発生した Data API イベントはリカバリされません。

コンソールまたは API を使用して Data API イベントを除外すると、それにより実行される CloudTrail の API オペレーション `PutEventSelectors` も CloudTrail ログに記録されます。Data API イベントが CloudTrail ログに表示されない場合は、`ExcludeManagementEventSources` 属性が `rdsdata.amazonaws.com` に設定されている `PutEventSelectors` イベントを探します。

詳細については、*AWS CloudTrail ユーザーガイド*の「[証跡の管理イベントのログ記録](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html)」を参照してください。

## Data API ログファイルのエントリについて
<a name="understanding-service-name-entries-data-api"></a>

*証跡*は、指定した Amazon S3 バケットにイベントをログファイルとして配信するように設定できます。CloudTrail のログファイルは、単一か複数のログエントリを含みます。*イベント*は、任意の出典からの単一のリクエストを表し、リクエストされたアクション、アクションの日時、リクエストパラメータなどに関する情報が含まれます。CloudTrail ログファイルは、パブリック API 呼び出しの順序付けられたスタックトレースではないため、特定の順序では表示されません。

**Aurora PostgreSQL Serverless v2 とプロビジョンド**

次の例は、Aurora PostgreSQL Serverless v2 およびプロビジョニングされたデータベースの `ExecuteStatement` オペレーションを示す CloudTrail ログエントリを示しています。これらのデータベースでは、すべての Data API イベントは、イベントソースが **rdsdataapi.amazonaws.com** で、イベントタイプが **Rds Data Service** であるデータイベントです。

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AKIAIOSFODNN7EXAMPLE",
        "arn": "arn:aws:iam::123456789012:user/johndoe",
        "accountId": "123456789012",
        "accessKeyId": "AKIAI44QH8DHBEXAMPLE",
        "userName": "johndoe"
    },
    "eventTime": "2019-12-18T00:49:34Z",
    "eventSource": "rdsdataapi.amazonaws.com",
    "eventName": "ExecuteStatement",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.0",
    "userAgent": "aws-cli/1.16.102 Python/3.7.2 Windows/10 botocore/1.12.92",
    "requestParameters": {
        "continueAfterTimeout": false,
        "database": "**********",
        "includeResultMetadata": false,
        "parameters": [],
        "resourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:my-database-1",
        "schema": "**********",
        "secretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:dataapisecret-ABC123",
        "sql": "**********"
    },
    "responseElements": null,
    "requestID": "6ba9a36e-b3aa-4ca8-9a2e-15a9eada988e",
    "eventID": "a2c7a357-ee8e-4755-a0d0-aed11ed4253a",
    "eventType": "Rds Data Service",
    "recipientAccountId": "123456789012"
}
```

**Aurora Serverless v1**

次の例は、Aurora Serverless v1 の前述の CloudTrail ログエントリの例がどのように表示されるかを示しています。Aurora Serverless v1 の場合、すべてのイベントは管理イベントで、イベントソースは **rdsdata.amazonaws.com**、イベントタイプは **AwsApiCall** です。

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AKIAIOSFODNN7EXAMPLE",
        "arn": "arn:aws:iam::123456789012:user/johndoe",
        "accountId": "123456789012",
        "accessKeyId": "AKIAI44QH8DHBEXAMPLE",
        "userName": "johndoe"
    },
    "eventTime": "2019-12-18T00:49:34Z",
    "eventSource": "rdsdata.amazonaws.com",
    "eventName": "ExecuteStatement",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.0",
    "userAgent": "aws-cli/1.16.102 Python/3.7.2 Windows/10 botocore/1.12.92",
    "requestParameters": {
        "continueAfterTimeout": false,
        "database": "**********",
        "includeResultMetadata": false,
        "parameters": [],
        "resourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:my-database-1",
        "schema": "**********",
        "secretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:dataapisecret-ABC123",
        "sql": "**********"
    },
    "responseElements": null,
    "requestID": "6ba9a36e-b3aa-4ca8-9a2e-15a9eada988e",
    "eventID": "a2c7a357-ee8e-4755-a0d0-aed11ed4253a",
    "eventType": "AwsApiCall",
    "recipientAccountId": "123456789012"
}
```