AWS CloudTrail と Amazon RDS の操作 - Amazon Relational Database Service

AWS CloudTrail と Amazon RDS の操作

AWS CloudTrail は、AWS アカウントの自己監査に役立つ AWS のサービスです。CloudTrail は、アカウント作成時にその AWS アカウントで有効になります。

CloudTrail の詳細については、AWS CloudTrail ユーザーガイドを参照してください。

CloudTrail と Amazon RDS の統合

すべての Amazon RDS アクションが CloudTrail によりログに記録されます。CloudTrail では、Amazon RDS のユーザー、ロール、または AWS のサービスによって実行されたアクションの記録を確認できます。

CloudTrail のイベント

CloudTrail は、Amazon RDS の API コールをイベントとしてキャプチャします。イベントは任意の発生元からの 1 つのリクエストを表し、リクエストされたアクション、アクションの日時、リクエストのパラメータなどに関する情報が含まれます。イベントには、Amazon RDS コンソールからの呼び出しと、Amazon RDS API へのコード呼び出しが含まれます。

Amazon RDS アクティビティは、イベント履歴の CloudTrail イベントに記録されます。CloudTrail コンソールを使用して、AWS リージョンの過去 90 日間に記録された API アクティビティとイベントを表示できます。詳細については、CloudTrail イベント履歴でのイベントの表示を参照してください。

CloudTrail 証跡

AWS アカウントのイベント (Amazon RDS のイベントなど) を継続的に記録するには、証跡を作成します。証跡とは、指定した Amazon S3 バケットにイベントを配信するという設定です。CloudTrail は、通常、アカウントアクティビティから 15 分以内にログファイルを配信します。

注記

証跡を設定しない場合でも、CloudTrail コンソールの [Event history (イベント履歴)] で最新のイベントを表示できます。

AWS アカウントには、すべてのリージョンに適用される証跡と、1 つのリージョンに適用される証跡の 2 種類の証跡を作成できます。デフォルトでは、コンソールで証跡を作成するときに、証跡がすべてのリージョンに適用されます。

さらに、その他の AWS サービスを設定して、CloudTrail ログで収集したデータをより詳細に分析し、それに基づく対応を行うことができます。詳細については、以下を参照してください。

Amazon RDS ログファイルエントリ

CloudTrail ログファイルには、1 つ以上のログエントリがあります。CloudTrail ログファイルは、パブリック API コールの順序付けられたスタックトレースではないため、特定の順序では表示されません。

次は、CreateDBInstance アクションを示す CloudTrail ログエントリの例です。

{ "eventVersion": "1.04", "userIdentity": { "type": "IAMUser", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:user/johndoe", "accountId": "123456789012", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "johndoe" }, "eventTime": "2018-07-30T22:14:06Z", "eventSource": "rds.amazonaws.com", "eventName": "CreateDBInstance", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.15.42 Python/3.6.1 Darwin/17.7.0 botocore/1.10.42", "requestParameters": { "enableCloudwatchLogsExports": [ "audit", "error", "general", "slowquery" ], "dBInstanceIdentifier": "test-instance", "engine": "mysql", "masterUsername": "myawsuser", "allocatedStorage": 20, "dBInstanceClass": "db.m1.small", "masterUserPassword": "****" }, "responseElements": { "dBInstanceArn": "arn:aws:rds:us-east-1:123456789012:db:test-instance", "storageEncrypted": false, "preferredBackupWindow": "10:27-10:57", "preferredMaintenanceWindow": "sat:05:47-sat:06:17", "backupRetentionPeriod": 1, "allocatedStorage": 20, "storageType": "standard", "engineVersion": "5.6.39", "dbInstancePort": 0, "optionGroupMemberships": [ { "status": "in-sync", "optionGroupName": "default:mysql-5-6" } ], "dBParameterGroups": [ { "dBParameterGroupName": "default.mysql5.6", "parameterApplyStatus": "in-sync" } ], "monitoringInterval": 0, "dBInstanceClass": "db.m1.small", "readReplicaDBInstanceIdentifiers": [], "dBSubnetGroup": { "dBSubnetGroupName": "default", "dBSubnetGroupDescription": "default", "subnets": [ { "subnetAvailabilityZone": {"name": "us-east-1b"}, "subnetIdentifier": "subnet-cbfff283", "subnetStatus": "Active" }, { "subnetAvailabilityZone": {"name": "us-east-1e"}, "subnetIdentifier": "subnet-d7c825e8", "subnetStatus": "Active" }, { "subnetAvailabilityZone": {"name": "us-east-1f"}, "subnetIdentifier": "subnet-6746046b", "subnetStatus": "Active" }, { "subnetAvailabilityZone": {"name": "us-east-1c"}, "subnetIdentifier": "subnet-bac383e0", "subnetStatus": "Active" }, { "subnetAvailabilityZone": {"name": "us-east-1d"}, "subnetIdentifier": "subnet-42599426", "subnetStatus": "Active" }, { "subnetAvailabilityZone": {"name": "us-east-1a"}, "subnetIdentifier": "subnet-da327bf6", "subnetStatus": "Active" } ], "vpcId": "vpc-136a4c6a", "subnetGroupStatus": "Complete" }, "masterUsername": "myawsuser", "multiAZ": false, "autoMinorVersionUpgrade": true, "engine": "mysql", "cACertificateIdentifier": "rds-ca-2015", "dbiResourceId": "db-ETDZIIXHEWY5N7GXVC4SH7H5IA", "dBSecurityGroups": [], "pendingModifiedValues": { "masterUserPassword": "****", "pendingCloudwatchLogsExports": { "logTypesToEnable": [ "audit", "error", "general", "slowquery" ] } }, "dBInstanceStatus": "creating", "publiclyAccessible": true, "domainMemberships": [], "copyTagsToSnapshot": false, "dBInstanceIdentifier": "test-instance", "licenseModel": "general-public-license", "iAMDatabaseAuthenticationEnabled": false, "performanceInsightsEnabled": false, "vpcSecurityGroups": [ { "status": "active", "vpcSecurityGroupId": "sg-f839b688" } ] }, "requestID": "daf2e3f5-96a3-4df7-a026-863f96db793e", "eventID": "797163d3-5726-441d-80a7-6eeb7464acd4", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

前の例の userIdentity 要素に示すように、すべてのイベントまたはログエントリには、誰がリクエストを生成したかに関する情報が含まれています。この ID 情報は以下のことを確認するのに役立ちます。

  • リクエストが、ルートと IAM ユーザー認証情報のどちらを使用して送信されたか。

  • リクエストが、ロールとフェデレーティッドユーザーのどちらの一時的なセキュリティ認証情報を使用して送信されたか.

  • リクエストが、別の AWS サービスによって送信されたかどうか。

userIdentity の詳細については、「CloudTrail userIdentity 要素」を参照してください。CreateDBInstance およびその他の Amazon RDS アクションの詳細については、「Amazon RDS API リファレンス」を参照してください。