を使用した CodeArtifact API コールのログ記録 AWS CloudTrail - CodeArtifact

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

を使用した CodeArtifact API コールのログ記録 AWS CloudTrail

CodeArtifact はAWS CloudTrail、CodeArtifact のユーザー、ロール、または のサービスによって実行されたアクションを記録する AWS サービスである と統合されています。CloudTrailは、パッケージマネージャークライアントからの呼び出しを含む、CodeArtifact のすべての APIコールをイベントとしてキャプチャします。

追跡を作成する場合は、 CodeArtifactへのイベントを含む、Amazon Simple Storage Service (Amazon S3) バケットへの CloudTrailイベントの継続的な配信を有効にすることができます。追跡を設定しない場合でも、CloudTrailコンソールの [Event history (イベント履歴)] でほとんどの最新のイベントを表示できます。CloudTrailで収集された情報を使用して、CodeArtifactに対するリクエスト、リクエスト元の IP アドレス、リクエスト者、リクエスト日時などの詳細を確認できます。

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

CloudTrailのCodeArtifact情報

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

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

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

すべてのCodeArtifactのアクションは、CloudTrailによりログに記録されます。たとえば、 ListRepositories (、aws codeartifact list-repositories) AWS CLI、 CreateRepository (aws codeartifact create-repository)、 ListPackages (aws codeartifact list-packages) の各アクションを呼び出すと、パッケージマネージャーのクライアントコマンドに加えて、CloudTrail ログファイルにエントリが生成されます。パッケージマネージャーのクライアントコマンドは、通常、サーバーに対して複数の HTTP リクエストを行います。各リクエストは、別々の CloudTrailログイベントを生成します。

CloudTrailログのクロスアカウント配信

1 回の API コールに対して、最大3つの個別のアカウントが CloudTrailログを受信します。

  • リクエストを行ったアカウント。例えば、GetAuthorizationTokenを呼び出したアカウント。

  • リポジトリ管理者アカウント。例えば、ListPackagesが呼び出されたリポジトリを管理するアカウント。

  • ドメイン所有者のアカウント。例えば、APIが呼び出されたリポジトリがあり、そのリポジトリを含むドメインを所有するアカウント。

ListRepositoriesInDomainのように、特定のリポジトリではなくドメインに対するアクションである APIについては、呼び出したアカウントとドメイン所有者のアカウントのみが CloudTrailのログを受け取ります。どのリソースに対しても認証されていないListRepositoriesのような API の場合、発信者元のアカウントのみが CloudTrailログを受け取ります。

CodeArtifactログファイルエントリについて

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

例: GetAuthorizationToken API を呼び出すためのログエントリ

GetAuthorizationTokenによって作成されるログエントリには、requestParametersフィールドのドメイン名が含まれます。

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:sts::123456789012:assumed-role/Console/example", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-12-11T13:31:37Z" }, "sessionIssuer": { "type": "Role", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::123456789012:role/Console", "accountId": "123456789012", "userName": "Console" } } }, "eventTime": "2018-12-11T13:31:37Z", "eventSource": "codeartifact.amazonaws.com", "eventName": "GetAuthorizationToken", "awsRegion": "us-west-2", "sourceIPAddress": "205.251.233.50", "userAgent": "aws-cli/1.16.37 Python/2.7.10 Darwin/16.7.0 botocore/1.12.27", "requestParameters": { "domainName": "example-domain" "domainOwner": "123456789012" }, "responseElements": { "sessionToken": "HIDDEN_DUE_TO_SECURITY_REASONS" }, "requestID": "6b342fc0-5bc8-402b-a7f1-ffffffffffff", "eventID": "100fde01-32b8-4c2b-8379-ffffffffffff", "readOnly": false, "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

例: npm パッケージバージョンを取得するためのログエントリ

npm クライアントを含むすべてのパッケージマネージャークライアントからのリクエストには、ドメイン名、リポジトリ名、パッケージ名などの追加データがrequestParametersフィールドに記録されます。URL パスとHTTPメソッドは、additionalEventData フィールドに記録されます。

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:sts::123456789012:assumed-role/Console/example", "accountId": "123456789012", "accessKeyId": "ASIAIJIOBJIBSREXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-12-17T02:05:16Z" }, "sessionIssuer": { "type": "Role", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::123456789012:role/Console", "accountId": "123456789012", "userName": "Console" } } }, "eventTime": "2018-12-17T02:05:46Z", "eventSource": "codeartifact.amazonaws.com", "eventName": "ReadFromRepository", "awsRegion": "us-west-2", "sourceIPAddress": "205.251.233.50", "userAgent": "npm/6.14.15 node/v12.22.9 linux x64 ci/custom", "requestParameters": { "domainName": "example-domain", "domainOwner": "123456789012", "repositoryName": "example-repo", "packageName": "lodash", "packageFormat": "npm", "packageVersion": "4.17.20" }, "responseElements": null, "additionalEventData": { "httpMethod": "GET", "requestUri": "/npm/lodash/-/lodash-4.17.20.tgz" }, "requestID": "9f74b4f5-3607-4bb4-9229-ffffffffffff", "eventID": "c74e40dd-8847-4058-a14d-ffffffffffff", "readOnly": true, "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }