AWS CloudTrail のログ記録を使用した AWS アカウントによる API コールのモニタリング
Amazon CodeCatalyst は、ユーザー、ロール、または AWS のサービスが実行したアクションの記録を提供するサービスである AWS CloudTrail と統合されています。CloudTrail は、接続された AWS アカウントで CodeCatalyst に代わって行われた API コールをイベントとしてキャプチャします。証跡を作成すると、CodeCatalyst のイベントなど、S3 バケットへの CloudTrail イベントの継続的な配信を有効にすることができます。証跡を設定しない場合でも、CloudTrail コンソールの [イベント履歴] で最新のイベントを表示できます。
CodeCatalyst は、CloudTrail ログファイルのイベントとして次のアクションのログ記録をサポートしています。
-
CodeCatalyst スペースの管理イベントは、そのスペースの指定された請求アカウントである AWS アカウントに記録されます。詳細については、「CodeCatalyst スペースイベント」を参照してください。
注記
CodeCatalyst スペースのデータイベントには、CLI を使用してアクセスできます。詳細は、「イベントログ記録を使用して記録されたイベントにアクセスする」を参照してください。
-
接続された AWS アカウントで発生する CodeCatalyst ワークフローアクションで使用されるリソースのイベントは、その AWS アカウントのイベントとして記録されます。詳細については、「CodeCatalyst アカウント接続と請求イベント」を参照してください。
重要
複数のアカウントをスペースに関連付けることができますが、CodeCatalyst スペースとプロジェクトのイベントの CloudTrail ログ記録は請求アカウントにのみ適用されます。
スペースの請求アカウントは、AWS無料利用枠を超えた CodeCatalyst リソースに対して課金される AWS アカウントです。複数のアカウントを 1 つのスペースに接続できますが、請求アカウントとして指定できるのは 1 つのアカウントのみです。スペースの請求アカウントまたは追加の接続アカウントには、Amazon ECS クラスターや S3 バケットなどの AWS リソースやインフラストラクチャを CodeCatalyst ワークフローからデプロイするために使用される IAM ロールを設定することができます。ワークフロー YAML を使用して、デプロイした AWS アカウントを特定できます。
注記
CodeCatalyst ワークフローの接続済みアカウントにデプロイされた AWS リソースは、CodeCatalyst スペースの CloudTrail ログ記録の一部として記録されません。例えば、CodeCatalyst リソースにはスペースやプロジェクトがありまれます。AWS リソースには、Amazon ECS サービスや Lambda 関数があります。CloudTrail ログ記録は、リソースがデプロイされる AWS アカウントごとに個別に設定する必要があります。
接続されたアカウントでの CodeCatalyst のログ記録には、次のような考慮事項があります。
-
CloudTrail イベントへのアクセスは、CodeCatalyst ではなく、接続されたアカウントの IAM で管理されます。
-
GitHub リポジトリへのリンクなどのサードパーティー接続では、サードパーティーリソース名が CloudTrail ログに記録されます。
注記
CodeCatalyst イベントの CloudTrail ログ記録はスペースレベルで、プロジェクトの境界によってイベントを分離しません。
CloudTrail の詳細については、「AWS CloudTrail ユーザーガイド」を参照してください。
注記
このセクションでは、CodeCatalyst スペースおよび CodeCatalyst に接続された AWS アカウントに記録されたすべてのイベントの CloudTrail ログ記録について説明します。また、CodeCatalyst スペースに記録されたすべてのイベントを確認するには、AWS CLI と aws codecatalyst list-event-logs コマンドを使用することもできます。詳細については、「イベントログ記録を使用して記録されたイベントにアクセスする」を参照してください。
CodeCatalyst スペースイベント
スペースレベルおよびプロジェクトレベルのリソースを管理するための CodeCatalyst のアクションは、スペースの請求アカウントに記録されます。CodeCatalyst スペースの CloudTrail ログ記録の場合、イベントの記録には次の考慮事項があります。
-
CloudTrail イベントはスペース全体に適用され、特定のプロジェクトに限定されるものではありません。
-
AWS アカウントを CodeCatalyst スペースに接続すると、アカウント接続に関するログ可能なイベントがその AWS アカウントに記録されます。この接続を有効にした後は、無効にすることはできません。
-
AWS アカウントを CodeCatalyst スペースに接続し、そのスペースの請求アカウントとして指定すると、イベントはその AWS アカウントに記録されます。この接続を有効にした後は、無効にすることはできません。
スペースレベルおよびプロジェクトレベルのリソースのイベントは、請求アカウントにのみ記録されます。CloudTrail の送信先アカウントを変更するには、CodeCatalyst の請求アカウントを更新します。次の月次請求サイクルの開始時に、変更が CodeCatalyst の新しい請求アカウントで有効になります。その後、CloudTrail の送信先アカウントが更新されます。
以下は、スペースレベルおよびプロジェクトレベルのリソースを管理するための CodeCatalyst のアクションに関連する AWS のイベントの例です。次の API は SDK と CLI を介して利用できます。イベントは、CodeCatalyst スペースの請求アカウントとして指定された AWS アカウントに記録されます。
CodeCatalyst アカウント接続と請求イベント
以下は、アカウント接続または請求の CodeCatalyst でのアクションに関連する AWS のイベントの例です。
-
AcceptConnection
-
AssociateIAMRoletoConnection
-
DeleteConnection
-
DissassociateIAMRolefromConnection
-
GetBillingAuthorization
-
GetConnection
-
GetPendingConnection
-
ListConnections
-
ListIAMRolesforConnection
-
PutBillingAuthorization
-
RejectConnection
CloudTrail での CodeCatalyst に関する情報
CloudTrail は、アカウント作成時にその AWS アカウントで有効になります。この AWS アカウントを CodeCatalyst スペースに接続すると、その AWS アカウントで起こるそのスペースのイベントは、その AWS アカウントの CloudTrail ログに記録されます。CodeCatalyst のログ可能なイベントは、接続されたアカウントの CloudTrail ログに CloudTrail イベントとして記録され、CloudTrail コンソールの [イベント履歴] に、そのアカウントの他のログ可能な AWS イベントとともに記録されます。
各イベントまたはログエントリには、リクエストの生成者に関する情報が含まれます。アイデンティティ情報は、以下を判別するのに役立ちます:
-
AWS Builder ID を持つユーザーによってリクエストが行われたかどうか。
-
リクエストが、ルート認証情報と AWS Identity and Access Management (IAM) ユーザー認証情報のどちらを使用して送信されたか。
-
リクエストがロールまたはフェデレーションユーザーのテンポラリなセキュリティ認証情報を使用して行われたかどうか。
-
リクエストが別の AWS サービスによって行われたかどうか。
詳細については、「CloudTrail userIdentity エレメント」を参照してください。
CloudTrail イベントにアクセスする
AWS アカウントでの CodeCatalyst アクティビティのイベントなど、AWS アカウントのイベントを継続的に記録するには、証跡を作成します。trail 、CloudTrail はログファイルを S3 バケットに配信できます。デフォルトでは、コンソールで証跡を作成するときに、証跡がすべての に適用されますAWS リージョン 証跡では、AWS パーティションのすべてのリージョンからのイベントがログに記録され、指定した S3 バケットにログファイルが配信されます。さらに、CloudTrail ログで収集したイベントデータをより詳細に分析し、それに基づいて対応するため、他の AWS サービスを構成できます。詳細については、次を参照してください:
証跡は、指定した S3 バケットにイベントをログファイルとして配信するように設定できます。CloudTrail ログファイルには、1 つ以上のログエントリがあります。イベントは任意ソースからの単一リクエストを表し、リクエストされたアクション、アクションの日時、リクエストパラメータなどの情報を含みます。CloudTrail ログファイルは、パブリック API 呼び出しの順序付けられたスタックトレースではないため、特定の順序では表示されません。
AWS での CodeCatalyst アカウント接続イベントの例
以下の例は、ListConnections
アクションを示す CloudTrail ログエントリです。スペースに接続されている AWS アカウントの場合、ListConnections
はこの AWS アカウントの CodeCatalyst へのアカウント接続をすべて一覧表示するために使用されます。イベントは accountId
で指定された AWS アカウントに記録され、arn
の値はアクションに使用されるロールの Amazon リソースネーム (ARN) になります。
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "
role-ARN
", "accountId": "account-ID
", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "role-ARN
", "accountId": "account-ID
", "userName": "user-name" }, "webIdFederationData": {}, "attributes": { "creationDate": "2022-09-06T15:04:31Z", "mfaAuthenticated": "false" } } }, "eventTime": "2022-09-06T15:08:43Z", "eventSource": "account-ID
", "eventName": "ListConnections", "awsRegion": "us-west-2", "sourceIPAddress": "192.168.0.1", "userAgent": "aws-cli/1.18.147 Python/2.7.18 Linux/5.4.207-126.363.amzn2int.x86_64 botocore/1.18.6", "requestParameters": null, "responseElements": null, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 ", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 ", "readOnly": true, "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "account-ID
", "eventCategory": "Management" }
AWS での CodeCatalyst プロジェクトリソースイベントの例
以下の例は、CreateDevEnvironment
アクションを示す CloudTrail ログエントリです。スペースに接続され、スペースの請求アカウントとして指定されている AWS アカウントは、開発環境の作成など、スペース内のプロジェクトレベルのイベントに使用されます。
userIdentity
の accountId
フィールドには、すべての AWS Builder ID の ID プールをホストする IAM アイデンティティセンターアカウント ID (432677196278
)が記載されています。このアカウント ID には、イベントの CodeCatalyst ユーザーに関する以下の情報が含まれています。
-
type
フィールドは、リクエストの IAM エンティティのタイプを示します。スペースとプロジェクトリソースの CodeCatalyst イベントの場合、この値はIdentityCenterUser
です。accountId
フィールドには、認証情報を取得するために使用されたエンティティを所有するアカウントが記載されています。 -
userId
フィールドには、ユーザーの AWS Builder ID 識別子が含まれています。 -
identityStoreArn
フィールドには、ID ストアアカウントとユーザーのロール ARN が含まれています。
recipientAccountId
フィールドには、スペースの請求アカウントのアカウント ID が含まれており、ここでの値は 111122223333 です。
詳細については、「CloudTrail userIdentity エレメント」を参照してください。
{ "eventVersion": "1.09", "userIdentity": { "type": "IdentityCenterUser", "accountId": "
432677196278
", "onBehalfOf": { "userId": "user-ID
", "identityStoreArn": "arn:aws:identitystore::432677196278:identitystore/d-9067642ac7
" }, "credentialId": "ABCDefGhiJKLMn11Lmn_1AbCDEFgHijk-AaBCdEFGHIjKLmnOPqrs11abEXAMPLE" }, "eventTime": "2023-05-18T17:10:50Z", "eventSource": "codecatalyst.amazonaws.com", "eventName": "CreateDevEnvironment", "awsRegion": "us-west-2", "sourceIPAddress": "192.168.0.1", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", "requestParameters": { "spaceName": "MySpace", "projectName": "MyProject", "ides": [{ "runtime": "public.ecr.aws/q6e8p2q0/cloud9-ide-runtime:2.5.1", "name": "Cloud9" }], "instanceType": "dev.standard1.small", "inactivityTimeoutMinutes": 15, "persistentStorage": { "sizeInGiB": 16 } }, "responseElements": { "spaceName": "MySpace", "projectName": "MyProject", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 " }, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "readOnly": false, "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333
", "sharedEventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "eventCategory": "Management" }
注記
特定のイベントでは、ユーザーエージェントが不明な場合があります。この場合、CodeCatalyst は CloudTrail イベントの userAgent
フィールドに Unknown
の値を提供します。
CodeCatalyst イベント証跡に対してクエリを実行する
Amazon Athena のクエリテーブルを使用して、CloudTrail ログのクエリを作成および管理できます。詳細については、「Amazon Athena ユーザーガイド」の「AWS CloudTrail ログをクエリする」を参照してください。