Journalisation des appels d'API CodeArtifact avecAWS CloudTrail - CodeArtifact

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Journalisation des appels d'API CodeArtifact avecAWS CloudTrail

CodeArtifact est intégré àAWS CloudTrail, service qui enregistre les actions réalisées par un utilisateur, un rôle ou unAWSservice dans CodeArtifact. CloudTrail capture tous les appels d'API pour CodeArtifact en tant qu'événements, y compris les appels provenant des clients de gestionnaire de packages.

Si vous créez un journal d'activité, vous pouvez activer la distribution continue des événements CloudTrail dans un compartiment Amazon Simple Storage Service (Amazon S3), y compris les événements pour CodeArtifact. Si vous ne configurez pas de journal d'activité, vous pouvez toujours afficher les événements les plus récents dans la console CloudTrail dans Historique des événements. À l'aide des informations collectées par CloudTrail, vous pouvez déterminer la demande qui a été envoyée à CodeArtifact, l'adresse IP source source à partir de laquelle la demande a été effectuée, l'auteur et la date de la demande, ainsi que d'autres détails.

Pour en savoir plus sur CloudTrail, consultez le AWS CloudTrailGuide de l'utilisateur .

CodeArtifact : Informations sur CloudTrail

CloudTrail est activé dans votre compte AWS lors de la création de ce dernier. Lorsque l'activité a lieu dans CodeArtifact, cette activité est enregistrée dans un événement CloudTrail avec d'autresAWSEvénements de services dansHistorique des événements. Vous pouvez afficher, rechercher et télécharger les événements récents dans votre compte AWS. Pour de plus amples informations, veuillez consulter Affichage des événements avec l'historique des événements CloudTrail.

Pour un registre permanent des événements dans votreAWScompte, y compris les événements pour CodeArtifact, créez unsentier. Un journal d'activité permet à CloudTrail de distribuer les fichiers journaux vers Amazon S3 bucket. Par défaut, lorsque vous créez un journal d'activité dans la console, il s'applique à toutes les régions AWS. Le journal d'activité consigne les événements de toutes les régions dans la partition AWS et livre les fichiers journaux dans le compartiment Amazon S3 de votre choix. Vous pouvez également configurer d'autresAWSservices pour analyser plus en profondeur les données d'événement collectées dans les journaux CloudTrail et agir sur celles-ci. Pour plus d’informations, consultez les rubriques suivantes :

Lorsque la journalisation CloudTrail est activée dans votreAWS, les appels d'API passés aux actions CodeArtifact sont suivis dans les fichiers journaux CloudTrail, où ils sont écrits avec d'autres actionsAWSdossiers de service. CloudTrail détermine quand créer un fichier et y consigner des données en fonction d'une période et d'une taille de fichier.

Toutes les actions CodeArtifact sont enregistrées par CloudTrail. Par exemple, les appels auxListRepositories(dans leAWS CLI,aws codeartifact list-repositories),CreateRepository(aws codeartifact create-repository), etListPackages(aws codeartifact list-packages), génèrent des entrées dans les fichiers journaux CloudTrail, en plus des commandes client du gestionnaire de packages. Les commandes du client du gestionnaire de paquets envoient généralement plus d'une requête HTTP au serveur. Chaque demande génère un événement de journal CloudTrail distinct.

Diffusion entre comptes des journaux CloudTrail

Jusqu'à trois comptes distincts reçoivent les journaux CloudTrail pour un seul appel d'API :

  • Le compte qui a fait la demande, par exemple le compte qui a appeléGetAuthorizationToken.

  • Le compte d'administrateur du référentiel, par exemple le compte qui administre le référentielListPackagesa été appelé.

  • Compte du propriétaire du domaine, par exemple, le compte propriétaire du domaine qui contient le référentiel sur lequel une API a été appelée.

Pour des API telles queListRepositoriesInDomainqui sont des actions contre un domaine et non un référentiel spécifique, seuls le compte appelant et le compte du propriétaire du domaine reçoivent le journal CloudTrail. Pour des API telles queListRepositoriesqui ne sont pas autorisés sur une ressource, seul le compte de l'appelant reçoit le journal CloudTrail.

Présentation des entrées des fichiers journaux CodeArtifact

Les fichiers journaux CloudTrail peuvent contenir une ou plusieurs des entrées de journal. Chaque entrée répertorie plusieurs événements au format JSON. Un événement de journal représente une demande individuelle émise à partir d'une source quelconque et comprend des informations sur l'action demandée, la date et l'heure de l'action, les paramètres de la demande, etc. Les entrées de journal ne sont pas des arborescences des appels de procédure des appels d'API publique. Elles ne s'affichent donc dans aucun ordre précis.

Exemple : Une entrée de journal permettant d'appeler l'API GetAuthorizationToken

Une entrée de journal créée parGetAuthorizationTokeninclut le nom de domaine dans larequestParameters.

{ "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" }

Exemple : Une entrée de journal permettant de récupérer une version de package npm

Demandes faites par tous les clients du gestionnaire de paquets, y compris le npm client, consignez des données supplémentaires, y compris le nom de domaine, le nom du référentiel et le nom du package dans lerequestParameters. Le chemin d'accès à l'URL et la méthode HTTP sont consignés dans leadditionalEventData.

{ "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" }