AWS CodeCommit による AWS CloudTrail API 呼び出しのログ記録 - AWS CodeCommit

AWS CodeCommit による AWS CloudTrail API 呼び出しのログ記録

CodeCommit は AWS CloudTrail と統合されています。このサービスは、ユーザーやロール、または CodeCommit の AWS サービスによって実行されたアクションを記録するサービスです。CloudTrail は、CodeCommit のすべての API 呼び出しをイベントとしてキャプチャします。これには、CodeCommit コンソール、Git クライアント、CodeCommit API へのコード呼び出しからの呼び出しが含まれます。証跡を作成する場合は、CodeCommit のイベントなど、Amazon S3 バケットへの CloudTrail イベントの継続的な配信を有効にすることができます。証跡を設定しない場合でも、CloudTrail コンソールの [Event history (イベント履歴)] で最新のイベントを表示できます。CloudTrail で収集された情報を使用して、CodeCommit に対するリクエスト、リクエスト元の IP アドレス、リクエスト者、リクエスト日時などの詳細を確認できます。

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

CloudTrail の CodeCommit 情報

CloudTrail は、アカウント作成時に アマゾン ウェブ サービスアカウントで有効になります。CodeCommit でアクティビティが発生すると、そのアクティビティは [Event history] (イベント履歴) の他の AWS のサービスイベントと共に CloudTrail イベントに記録されます。最近のイベントは、アマゾン ウェブ サービスアカウントで表示、検索、ダウンロードできます。詳細については、「CloudTrail イベント履歴でのイベントの表示」を参照してください。

CodeCommit のイベントなど、アマゾン ウェブ サービスアカウントのイベントの継続的な記録については、証跡を作成します。証跡により、CloudTrail はログファイルを Amazon S3 バケットに配信できます。デフォルトでは、コンソールで証跡を作成するときに、証跡がすべてのリージョンに適用されます。証跡では、AWS パーティションのすべてのリージョンからのイベントがログに記録され、指定した Amazon S3 バケットにログファイルが配信されます。さらに、その他の AWS サービスを設定して、CloudTrail ログで収集されたデータをより詳細に分析し、それに基づく対応を行うことができます。詳細については、以下を参照してください。

アマゾン ウェブ サービスアカウントで CloudTrail ログ記録が有効になっている場合、CodeCommit アクションに対して行われた API コールは、CloudTrail ログファイルで追跡され、他の AWS のサービスのレコードとともにこのファイルに書き込まれます。CloudTrail は、期間とファイルサイズに基づいて、新しいファイルをいつ作成して書き込むかを決定します。

すべての CodeCommit アクションは CloudTrail によってログに記録されます。これには、AWS CodeCommit API リファレンスに現時点では記載されていないものの、アクセス許可として参照され、CodeCommit アクセス許可リファレンス に記載されているもの (GetObjectIdentifier など) もあります。例えば、ListRepositories (AWS CLI では aws codecommit list-repositories)、CreateRepository (aws codecommit create-repository) 、および PutRepositoryTriggers (aws codecommit put-repository-triggers) アクションへの呼び出しが、GitPullGitPush への Git クライアント呼び出しと共に、CloudTrail ログファイルに記録されます。さらに、CodePipeline でパイプラインのソースとして CodeCommit リポジトリが設定されている場合は、CodePipeline からの UploadArchive などの CodeCommit アクセス許可アクションの呼び出しが表示されます。CodeCommit は AWS Key Management Service を使用してリポジトリを暗号化および復号するため、CodeCommit から Encrypt への呼び出しと AWS KMS からの Decrypt アクションも CloudTrail ログに表示されます。

各ログエントリには、誰がリクエストを生成したかに関する情報が含まれます。ログエントリのユーザー ID 情報は、次のことを確認するのに役立ちます。

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

  • リクエストがロールまたはフェデレーティッドユーザーの一時的なセキュリティ資格情報で行われたか、または想定されたロールによって行われたか

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

詳細については、「CloudTrail userIdentity 要素」を参照してください。

必要な場合はログファイルを自身の Amazon S3 バケットに保存できますが、ログファイルを自動的にアーカイブまたは削除するにように Amazon S3 ライフサイクルルールを定義することもできます。デフォルトでは Amazon S3 のサーバー側の暗号化 (SSE) を使用して、ログファイルが暗号化されます。

CodeCommit ログファイルエントリの理解

CloudTrail ログファイルには、1 つ以上のログエントリを含むことができます。各エントリには、複数の JSON 形式のイベントがリストされます。ログイベントは任意の発生元からの 1 つのリクエストを表し、リクエストされたアクション、アクションの日時、リクエストのパラメーターなどに関する情報が含まれます。ログエントリは、パブリック API コールの順序付けられたスタックトレースではないため、特定の順序では表示されません。

注記

この例は、読みやすくするために書式設定しています。CloudTrail ログファイルでは、すべてのエントリとイベントが 1 行に連結されます。また、この例では 1 つの CodeCommit エントリに限定しています。実際の CloudTrail ログファイルには、複数の AWS のサービスからのエントリとイベントが記録されます。

例: CodeCommit リポジトリをリストするためのログエントリ

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

注記

ListRepositories はリポジトリのリストを返しますが、変更不可のレスポンスは CloudTrail ログに記録されないため、responseElements はログファイルに null として記録されます。

{ "eventVersion":"1.05", "userIdentity": { "type":"IAMUser", "principalId":"AIDACKCEVSQ6C2EXAMPLE", "arn":"arn:aws:iam::444455556666:user/Mary_Major", "accountId":"444455556666", "accessKeyId":"AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime":"2016-12-14T17:57:36Z", "eventSource":"codecommit.amazonaws.com", "eventName":"ListRepositories", "awsRegion":"us-east-1", "sourceIPAddress":"203.0.113.12", "userAgent":"aws-cli/1.10.53 Python/2.7.9 Windows/8 botocore/1.4.43", "requestParameters":null, "responseElements":null, "requestID":"cb8c167e-EXAMPLE", "eventID":"e3c6f4ce-EXAMPLE", "readOnly":true, "eventType":"AwsApiCall", "apiVersion":"2015-04-13", "recipientAccountId":"444455556666" }

例: CodeCommit リポジトリを作成するためのログエントリ

次の例は、米国東部 (オハイオ) リージョンでの CreateRepository アクションを示す CloudTrail ログエントリを示しています。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "CreateRepository", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "aws-cli/1.10.53 Python/2.7.9 Windows/8 botocore/1.4.43", "requestParameters": { "repositoryDescription": "Creating a demonstration repository.", "repositoryName": "MyDemoRepo" }, "responseElements": { "repositoryMetadata": { "arn": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "creationDate": "Dec 14, 2016 6:19:14 PM", "repositoryId": "8afe792d-EXAMPLE", "cloneUrlSsh": "ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo", "repositoryName": "MyDemoRepo", "accountId": "111122223333", "cloneUrlHttp": "https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo", "repositoryDescription": "Creating a demonstration repository.", "lastModifiedDate": "Dec 14, 2016 6:19:14 PM" } }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": false, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "apiVersion": "2015-04-13", "recipientAccountId": "111122223333" }

例: CodeCommit リポジトリへの Git プルコールを表すログエントリ

以下の例では、ローカルリポジトリが既に最新である GitPull アクションを表す CloudTrail ログエントリを示しています。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "GitPull", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "git/2.11.0.windows.1", "requestParameters": null, "responseElements": null, "additionalEventData": { "protocol": "HTTP", "dataTransferred": false, "repositoryName": "MyDemoRepo", "repositoryId": "8afe792d-EXAMPLE", }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": true, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }

以下の例では、ローカルリポジトリが最新でなく、データが CodeCommit リポジトリからローカルリポジトリに転送される GitPull アクションを表す CloudTrail ログエントリを示しています。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "GitPull", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "git/2.10.1", "requestParameters": null, "responseElements": null, "additionalEventData": { "protocol": "HTTP", "capabilities": [ "multi_ack_detailed", "side-band-64k", "thin-pack" ], "dataTransferred": true, "repositoryName": "MyDemoRepo", "repositoryId": "8afe792d-EXAMPLE", "shallow": false }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": true, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }

例: CodeCommit リポジトリへのプッシュの成功を表すログエントリ

以下の例では、GitPush アクションの成功を表す CloudTrail ログエントリを示しています。プッシュの成功を表すログエントリには GitPush アクションが 2 回、含まれています。

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "GitPush", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "git/2.10.1", "requestParameters": null, "responseElements": null, "additionalEventData": { "protocol": "HTTP", "dataTransferred": false, "repositoryName": "MyDemoRepo", "repositoryId": "8afe792d-EXAMPLE", }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": true, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }, { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::444455556666:user/Mary_Major", "accountId": "444455556666", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName":"Mary_Major" }, "eventTime": "2016-12-14T18:19:15Z", "eventSource": "codecommit.amazonaws.com", "eventName": "GitPush", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "git/2.10.1", "requestParameters": { "references": [ { "commit": "100644EXAMPLE", "ref": "refs/heads/main" } ] }, "responseElements": null, "additionalEventData": { "protocol": "HTTP", "capabilities": [ "report-status", "side-band-64k" ], "dataTransferred": true, "repositoryName": "MyDemoRepo", "repositoryId": "8afe792d-EXAMPLE", }, "requestID": "d148de46-EXAMPLE", "eventID": "740f179d-EXAMPLE", "readOnly": false, "resources": [ { "ARN": "arn:aws:codecommit:us-east-2:111122223333:MyDemoRepo", "accountId": "111122223333", "type": "AWS::CodeCommit::Repository" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }