View a markdown version of this page

Registrazione delle azioni Amazon ECR con AWS CloudTrail - Amazon ECR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Registrazione delle azioni Amazon ECR con AWS CloudTrail

Amazon ECR è integrato con AWS CloudTrail, un servizio che fornisce una registrazione delle azioni intraprese da un utente, un ruolo o un AWS servizio in Amazon ECR. CloudTrail acquisisce le seguenti azioni Amazon ECR come eventi:

  • Tutte le chiamate API, incluse le chiamate dalla console Amazon ECR

  • Tutte le operazioni intraprese a causa delle impostazioni di crittografia nei repository

  • Tutte le operazioni eseguite a causa delle regole delle policy relative al ciclo di vita, incluse le operazioni riuscite e non riuscite

    Importante

    A causa delle limitazioni dimensionali dei singoli CloudTrail eventi, per le politiche relative al ciclo di vita in cui 10 o più immagini sono scadute Amazon ECR invia più eventi a CloudTrail. Inoltre, Amazon ECR include un massimo di 100 tag per immagine.

Quando viene creato un percorso, puoi abilitare la consegna continua di CloudTrail eventi in un bucket Amazon S3, inclusi eventi per Amazon ECR. Se non configuri un percorso, puoi comunque visualizzare gli eventi più recenti nel CloudTrail console in Cronologia degli eventi. Utilizzando queste informazioni, puoi determinare la richiesta effettuata ad Amazon ECR, l'indirizzo IP da cui è stata effettuata la richiesta, l'autore della richiesta, il momento in cui è stata effettuata e altri dettagli.

Per ulteriori informazioni, consulta la Guida per l’utente di AWS CloudTrail.

Informazioni su Amazon ECR in CloudTrail

CloudTrail è abilitato sul tuo AWS account quando crei l'account. Quando si verifica un'attività in Amazon ECR, tale attività viene registrata in un CloudTrail evento insieme ad altri AWS eventi di servizio in cronologia degli eventi. Puoi visualizzare, cercare e scaricare gli eventi recenti nel tuo AWS account. Per ulteriori informazioni, vedere Visualizzazione degli eventi con CloudTrail Cronologia degli eventi.

Per una registrazione continua degli eventi nel tuo AWS account, inclusi gli eventi per Amazon ECR, crea un percorso. Un percorso consente CloudTrail per inviare file di log a un bucket Amazon S3. Quando si crea un percorso nella console, è possibile applicarlo a una singola regione o a tutte le regioni geografiche. Il percorso registra gli eventi in AWS partiziona e invia i file di log al bucket Amazon S3 specificato. Inoltre, puoi configurarne altri AWS servizi per analizzare e agire in base ai dati degli eventi raccolti in CloudTrail registri. Per ulteriori informazioni, consulta:

Tutte le azioni dell'API Amazon ECR vengono registrate da CloudTrail e sono documentate nel Riferimento all'API di Amazon Elastic Container Registry. Quando si eseguono attività comuni, le sezioni vengono generate in CloudTrail file di registro per ogni azione API che fa parte di tale attività. Ad esempio, quando si crea un repository, GetAuthorizationToken, CreateRepository e SetRepositoryPolicy le sezioni vengono generate in CloudTrail file di registro. Quando invii un'immagine a un repository, InitiateLayerUpload, UploadLayerPart, CompleteLayerUpload, PutImagee, se il montaggio dei blob è abilitato, MountLayer le sezioni vengono generate. Quando esegui il pull di un'immagine, vengono generate le sezioni GetDownloadUrlForLayer e BatchGetImage. Quando si archivia o si ripristina un'immagine UpdateImageStorageClass viene generata una sezione. Quando OCI clienti che supportano il OCI 1.1 specifica recupera l'elenco dei referenti, o artefatti di riferimento, per un'immagine utilizzando l'API Referrers, a ListImageReferrers CloudTrail l'evento viene emesso. Per esempi di attività comuni, consulta CloudTrail esempi di immissioni di log.

Ogni evento o voce di log contiene informazioni sull’utente che ha generato la richiesta. Le informazioni di identità consentono di determinare quanto segue:

  • Se la richiesta è stata effettuata con le credenziali utente o root.

  • Se la richiesta è stata effettuata con le credenziali di sicurezza temporanee per un ruolo o un utente federato.

  • Se la richiesta è stata fatta da un altro AWS servizio

Per ulteriori informazioni, consulta l'elemento CloudTrail userIdentity.

Informazioni sulle voci del file di log Amazon ECR

Un trail è una configurazione che consente l'invio di eventi come file di log a un bucket Amazon S3 specificato. CloudTrail i file di log contengono una o più voci di registro. Un evento rappresenta una singola richiesta da qualsiasi fonte e include informazioni sull'azione richiesta, la data e l'ora dell'azione, i parametri della richiesta e altre informazioni. CloudTrail i file di registro non sono una traccia ordinata dello stack delle chiamate API pubbliche, quindi non vengono visualizzati in un ordine specifico.

CloudTrail esempi di immissioni di log

Di seguito sono riportati CloudTrail esempi di immissioni di log per alcune attività comuni di Amazon ECR.

Questi esempi sono stati formattati per migliorare la leggibilità. In un CloudTrail file di registro, tutte le voci e gli eventi sono concatenati in un'unica riga. Inoltre, questo esempio è limitato a una singola voce Amazon ECR. In un vero CloudTrail file di registro, vengono visualizzate voci ed eventi provenienti da più AWS servizi.

Importante

Le Indirizzo IP di origine è l'indirizzo IP da cui è stata effettuata la richiesta. Per le azioni che hanno origine dalla console di servizio, l'indirizzo riportato si riferisce alla risorsa sottostante, non al server web della console. Per i servizi in AWS, viene visualizzato solo il nome DNS. Continuiamo a valutare l'autenticazione con l'IP di origine del client anche se è oscurato AWS nome DNS del servizio.

Esempio: crea operazione del repository

L'esempio seguente mostra un CloudTrail voce di registro che dimostra CreateRepository azione.

{ "eventVersion": "1.04", "userIdentity": { "type": "AssumedRole", "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name", "arn": "arn:aws:sts::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-07-11T21:54:07Z" }, "sessionIssuer": { "type": "Role", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::123456789012:role/Admin", "accountId": "123456789012", "userName": "Admin" } } }, "eventTime": "2018-07-11T22:17:43Z", "eventSource": "ecr.amazonaws.com", "eventName": "CreateRepository", "awsRegion": "us-east-2", "sourceIPAddress": "203.0.113.12", "userAgent": "console.amazonaws.com", "requestParameters": { "repositoryName": "testrepo" }, "responseElements": { "repository": { "repositoryArn": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo", "repositoryName": "testrepo", "repositoryUri": "123456789012.dkr.ecr.us-east-2.amazonaws.com/testrepo", "createdAt": "Jul 11, 2018 10:17:44 PM", "registryId": "123456789012" } }, "requestID": "cb8c167e-EXAMPLE", "eventID": "e3c6f4ce-EXAMPLE", "resources": [ { "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo", "accountId": "123456789012" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

Esempio: AWS KMS CreateGrant azione API durante la creazione di un repository Amazon ECR

L'esempio seguente mostra un CloudTrail voce di registro che dimostra AWS KMS CreateGrant azione durante la creazione di un repository Amazon ECR con crittografia KMS abilitata. Per ogni repository creato con la crittografia KMS abilitata, dovresti vederne due CreateGrant registrare le voci in CloudTrail.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDAIEP6W46J43IG7LXAQ", "arn": "arn:aws:iam::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Mary_Major", "sessionContext": { "sessionIssuer": { }, "webIdFederationData": { }, "attributes": { "mfaAuthenticated": "false", "creationDate": "2020-06-10T19:22:10Z" } }, "invokedBy": "AWS Internal" }, "eventTime": "2020-06-10T19:22:10Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "203.0.113.12", "userAgent": "console.amazonaws.com", "requestParameters": { "keyId": "4b55e5bf-39c8-41ad-b589-18464af7758a", "granteePrincipal": "ecr.us-west-2.amazonaws.com", "operations": [ "GenerateDataKey", "Decrypt" ], "retiringPrincipal": "ecr.us-west-2.amazonaws.com", "constraints": { "encryptionContextSubset": { "aws:ecr:arn": "arn:aws:ecr:us-west-2:123456789012:repository/testrepo" } } }, "responseElements": { "grantId": "3636af9adfee1accb67b83941087dcd45e7fadc4e74ff0103bb338422b5055f3" }, "requestID": "047b7dea-b56b-4013-87e9-a089f0f6602b", "eventID": "af4c9573-c56a-4886-baca-a77526544469", "readOnly": false, "resources": [ { "accountId": "123456789012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:123456789012:key/4b55e5bf-39c8-41ad-b589-18464af7758a" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

Esempio: operazione di invio immagine

L'esempio seguente mostra un CloudTrail voce di registro che dimostra un push di immagini che utilizza PutImage azione.

Nota

Quando si preme un'immagine, si vedrà anche InitiateLayerUpload, UploadLayerPart, e CompleteLayerUpload riferimenti nel CloudTrail registri.

{ "eventVersion": "1.04", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name", "arn": "arn:aws:sts::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Mary_Major", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-04-15T16:42:14Z" } } }, "eventTime": "2019-04-15T16:45:00Z", "eventSource": "ecr.amazonaws.com", "eventName": "PutImage", "awsRegion": "us-east-2", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "repositoryName": "testrepo", "imageTag": "latest", "registryId": "123456789012", "imageManifest": "{\n \"schemaVersion\": 2,\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n \"config\": {\n \"mediaType\": \"application/vnd.docker.container.image.v1+json\",\n \"size\": 5543,\n \"digest\": \"sha256:000b9b805af1cdb60628898c9f411996301a1c13afd3dbef1d8a16ac6dbf503a\"\n },\n \"layers\": [\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 43252507,\n \"digest\": \"sha256:3b37166ec61459e76e33282dda08f2a9cd698ca7e3d6bc44e6a6e7580cdeff8e\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 846,\n \"digest\": \"sha256:504facff238fde83f1ca8f9f54520b4219c5b8f80be9616ddc52d31448a044bd\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 615,\n \"digest\": \"sha256:ebbcacd28e101968415b0c812b2d2dc60f969e36b0b08c073bf796e12b1bb449\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 850,\n \"digest\": \"sha256:c7fb3351ecad291a88b92b600037e2435c84a347683d540042086fe72c902b8a\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 168,\n \"digest\": \"sha256:2e3debadcbf7e542e2aefbce1b64a358b1931fb403b3e4aeca27cb4d809d56c2\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 37720774,\n \"digest\": \"sha256:f8c9f51ad524d8ae9bf4db69cd3e720ba92373ec265f5c390ffb21bb0c277941\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 30432107,\n \"digest\": \"sha256:813a50b13f61cf1f8d25f19fa96ad3aa5b552896c83e86ce413b48b091d7f01b\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 197,\n \"digest\": \"sha256:7ab043301a6187ea3293d80b30ba06c7bf1a0c3cd4c43d10353b31bc0cecfe7d\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 154,\n \"digest\": \"sha256:67012cca8f31dc3b8ee2305e7762fee20c250513effdedb38a1c37784a5a2e71\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 176,\n \"digest\": \"sha256:3bc892145603fffc9b1c97c94e2985b4cb19ca508750b15845a5d97becbd1a0e\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 183,\n \"digest\": \"sha256:6f1c79518f18251d35977e7e46bfa6c6b9cf50df2a79d4194941d95c54258d18\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 212,\n \"digest\": \"sha256:b7bcfbc2e2888afebede4dd1cd5eebf029bb6315feeaf0b56e425e11a50afe42\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 212,\n \"digest\": \"sha256:2b220f8b0f32b7c2ed8eaafe1c802633bbd94849b9ab73926f0ba46cdae91629\"\n }\n ]\n}" }, "responseElements": { "image": { "repositoryName": "testrepo", "imageManifest": "{\n \"schemaVersion\": 2,\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n \"config\": {\n \"mediaType\": \"application/vnd.docker.container.image.v1+json\",\n \"size\": 5543,\n \"digest\": \"sha256:000b9b805af1cdb60628898c9f411996301a1c13afd3dbef1d8a16ac6dbf503a\"\n },\n \"layers\": [\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 43252507,\n \"digest\": \"sha256:3b37166ec61459e76e33282dda08f2a9cd698ca7e3d6bc44e6a6e7580cdeff8e\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 846,\n \"digest\": \"sha256:504facff238fde83f1ca8f9f54520b4219c5b8f80be9616ddc52d31448a044bd\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 615,\n \"digest\": \"sha256:ebbcacd28e101968415b0c812b2d2dc60f969e36b0b08c073bf796e12b1bb449\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 850,\n \"digest\": \"sha256:c7fb3351ecad291a88b92b600037e2435c84a347683d540042086fe72c902b8a\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 168,\n \"digest\": \"sha256:2e3debadcbf7e542e2aefbce1b64a358b1931fb403b3e4aeca27cb4d809d56c2\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 37720774,\n \"digest\": \"sha256:f8c9f51ad524d8ae9bf4db69cd3e720ba92373ec265f5c390ffb21bb0c277941\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 30432107,\n \"digest\": \"sha256:813a50b13f61cf1f8d25f19fa96ad3aa5b552896c83e86ce413b48b091d7f01b\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 197,\n \"digest\": \"sha256:7ab043301a6187ea3293d80b30ba06c7bf1a0c3cd4c43d10353b31bc0cecfe7d\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 154,\n \"digest\": \"sha256:67012cca8f31dc3b8ee2305e7762fee20c250513effdedb38a1c37784a5a2e71\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 176,\n \"digest\": \"sha256:3bc892145603fffc9b1c97c94e2985b4cb19ca508750b15845a5d97becbd1a0e\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 183,\n \"digest\": \"sha256:6f1c79518f18251d35977e7e46bfa6c6b9cf50df2a79d4194941d95c54258d18\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 212,\n \"digest\": \"sha256:b7bcfbc2e2888afebede4dd1cd5eebf029bb6315feeaf0b56e425e11a50afe42\"\n },\n {\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n \"size\": 212,\n \"digest\": \"sha256:2b220f8b0f32b7c2ed8eaafe1c802633bbd94849b9ab73926f0ba46cdae91629\"\n }\n ]\n}", "registryId": "123456789012", "imageId": { "imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e", "imageTag": "latest" } } }, "requestID": "cf044b7d-5f9d-11e9-9b2a-95983139cc57", "eventID": "2bfd4ee2-2178-4a82-a27d-b12939923f0f", "resources": [{ "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

Esempio: operazione di estrazione immagine

L'esempio seguente mostra un CloudTrail voce di registro che dimostra un'estrazione di immagini che utilizza BatchGetImage azione.

Nota

Quando esegui il pull di un'immagine, se non hai ancora l'immagine localmente, vedrai anche i riferimenti GetDownloadUrlForLayer nei log CloudTrail .

{ "eventVersion": "1.04", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name", "arn": "arn:aws:sts::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Mary_Major", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-04-15T16:42:14Z" } } }, "eventTime": "2019-04-15T17:23:20Z", "eventSource": "ecr.amazonaws.com", "eventName": "BatchGetImage", "awsRegion": "us-east-2", "sourceIPAddress": "ecr.amazonaws.com", "userAgent": "ecr.amazonaws.com", "requestParameters": { "imageIds": [{ "imageTag": "latest" }], "acceptedMediaTypes": [ "application/json", "application/vnd.oci.image.manifest.v1+json", "application/vnd.oci.image.index.v1+json", "application/vnd.docker.distribution.manifest.v2+json", "application/vnd.docker.distribution.manifest.list.v2+json", "application/vnd.docker.distribution.manifest.v1+prettyjws" ], "repositoryName": "testrepo", "registryId": "123456789012" }, "responseElements": null, "requestID": "2a1b97ee-5fa3-11e9-a8cd-cd2391aeda93", "eventID": "c84f5880-c2f9-4585-9757-28fa5c1065df", "resources": [{ "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

Esempio: operazione delle policy relative al ciclo di vita delle immagini

L'esempio seguente mostra una CloudTrail voce di registro che indica quando un'immagine è scaduta a causa di una regola della politica del ciclo di vita. Questo tipo di evento può essere individuato applicando un filtro PolicyExecutionEvent per il campo del nome dell'evento.

Quando si testa l'anteprima di una policy del ciclo di vita, Amazon ECR genera un CloudTrail voce di registro con il campo del nome dell'evento di DryRunEvent, con la stessa identica struttura del PolicyExecutionEvent. Modificando il nome dell'evento in DryRunEvent, puoi invece filtrare in base agli eventi a secco.

Importante

A causa delle limitazioni dimensionali dei singoli CloudTrail eventi, per le politiche relative al ciclo di vita in cui 10 o più immagini sono scadute Amazon ECR invia più eventi a CloudTrail. Inoltre, Amazon ECR include un massimo di 100 tag per immagine.

{ "eventVersion": "1.05", "userIdentity": { "accountId": "123456789012", "invokedBy": "AWS Internal" }, "eventTime": "2020-03-12T20:22:12Z", "eventSource": "ecr.amazonaws.com", "eventName": "PolicyExecutionEvent", "awsRegion": "us-west-2", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": null, "responseElements": null, "eventID": "9354dd7f-9aac-4e9d-956d-12561a4923aa", "readOnly": true, "resources": [ { "ARN": "arn:aws:ecr:us-west-2:123456789012:repository/testrepo", "accountId": "123456789012", "type": "AWS::ECR::Repository" } ], "eventType": "AwsServiceEvent", "recipientAccountId": "123456789012", "serviceEventDetails": { "repositoryName": "testrepo", "lifecycleEventPolicy": { "lifecycleEventRules": [ { "rulePriority": 1, "description": "remove all images > 2", "lifecycleEventSelection": { "tagStatus": "Any", "tagPrefixList": [], "countType": "Image count more than", "countNumber": 2 }, "action": "expire" } ], "lastEvaluatedAt": 0, "policyVersion": 1, "policyId": "ceb86829-58e7-9498-920c-aa042e33037b" }, "lifecycleEventImageActions": [ { "lifecycleEventImage": { "digest": "sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45", "tagStatus": "Tagged", "tagList": [ "alpine" ], "pushedAt": 1584042813000 }, "rulePriority": 1 }, { "lifecycleEventImage": { "digest": "sha256:6ab380c5a5acf71c1b6660d645d2cd79cc8ce91b38e0352cbf9561e050427baf", "tagStatus": "Tagged", "tagList": [ "centos" ], "pushedAt": 1584042842000 }, "rulePriority": 1 } ], "lifecycleEventFailureDetails": [ { "lifecycleEventImage": { "digest": "sha256:9117e1bc28cd20751e584b4ccd19b1178d14cf02d134b04ce6be0cc51bff762a", "tagStatus": "Untagged", "tagList": [], "pushedAt": 1584042844000 }, "rulePriority": 1, "failureCode": "ImageReferencedByManifestList", "failureReason": "Requested image referenced by manifest list: [sha256:4b27c83d44a18c31543039d9e8b2786043ec6c8d00804d5800c5148d6b6f65bc]" } ] } }

Esempio: azione di archiviazione delle immagini

L'esempio seguente mostra un CloudTrail voce di registro che dimostra che un'immagine viene archiviata utilizzando UpdateImageStorageClass azione con targetStorageClass impostato su ARCHIVE.

{ "eventVersion": "1.11", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name", "arn": "arn:aws:sts::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Mary_Major", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-04-15T16:42:14Z" } } }, "eventTime": "2019-04-15T16:45:00Z", "eventSource": "ecr.amazonaws.com", "eventName": "UpdateImageStorageClass", "awsRegion": "us-east-2", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "repositoryName": "testrepo", "imageId": { "imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e" }, "targetStorageClass": "ARCHIVE", "registryId": "123456789012" }, "responseElements": { "image": { "registryId": "123456789012", "repositoryName": "testrepo", "imageId": { "imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e" }, "imageStatus": "ARCHIVED" } }, "requestID": "cf044b7d-EXAMPLE", "eventID": "2bfd4ee2-EXAMPLE", "readOnly": false, "resources": [{ "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo", "accountId": "123456789012" }], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management" }

Esempio: azione di ripristino dell'immagine

I seguenti esempi mostrano CloudTrail voci di registro che dimostrano un'immagine in fase di ripristino. Quando si ripristina un'immagine archiviata, vengono generati due eventi:

  1. Un evento di chiamata API all'avvio del ripristino

  2. Un evento di servizio al termine dell'operazione di ripristino asincrono

Evento di chiamata API (avvio del ripristino)

L'esempio seguente mostra la chiamata API iniziale per ripristinare un'immagine utilizzando UpdateImageStorageClass azione con targetStorageClass impostato su STANDARD. La risposta mostra lo stato dell'immagine come ACTIVATING.

{ "eventVersion": "1.11", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name", "arn": "arn:aws:sts::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "Mary_Major", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-04-15T16:42:14Z" } } }, "eventTime": "2019-04-15T16:45:00Z", "eventSource": "ecr.amazonaws.com", "eventName": "UpdateImageStorageClass", "awsRegion": "us-east-2", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "repositoryName": "testrepo", "imageId": { "imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e" }, "targetStorageClass": "STANDARD", "registryId": "123456789012" }, "responseElements": { "image": { "registryId": "123456789012", "repositoryName": "testrepo", "imageId": { "imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e" }, "imageStatus": "ACTIVATING" } }, "requestID": "cf044b7d-EXAMPLE", "eventID": "2bfd4ee2-EXAMPLE", "readOnly": false, "resources": [{ "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo", "accountId": "123456789012" }], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management" }

Evento di servizio (completamento del ripristino)

L'esempio seguente mostra l'evento di servizio generato al termine dell'operazione di ripristino asincrono. Questo tipo di evento può essere individuato applicando un filtro ImageActivationEvent per il campo del nome dell'evento. Il serviceEventDetails la sezione contiene il risultato del ripristino e lo stato finale dell'immagine.

{ "eventVersion": "1.11", "userIdentity": { "accountId": "123456789012", "invokedBy": "AWS Internal" }, "eventTime": "2020-03-12T20:22:12Z", "eventSource": "ecr.amazonaws.com", "eventName": "ImageActivationEvent", "awsRegion": "us-west-2", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": null, "responseElements": null, "eventID": "9354dd7f-EXAMPLE", "readOnly": true, "resources": [ { "ARN": "arn:aws:ecr:us-west-2:123456789012:repository/testrepo", "accountId": "123456789012", "type": "AWS::ECR::Repository" } ], "eventType": "AwsServiceEvent", "managementEvent": true, "recipientAccountId": "123456789012", "serviceEventDetails": { "repositoryName": "testrepo", "imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e", "targetStorageClass": "STANDARD", "result": "SUCCESS", "imageStatus": "ACTIVE" }, "eventCategory": "Management" }

Esempio: azione Image Referrers

L'esempio seguente mostra una AWS CloudTrail voce di registro che dimostra quando un OCI 1.1 il client conforme recupera un elenco di riferimenti, o artefatti di riferimento, per un'immagine utilizzando Referrers API.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name", "arn": "arn:aws:sts::123456789012:user/Mary_Major", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::123456789012:role/Admin", "accountId": "123456789012", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2024-10-08T16:38:39Z", "mfaAuthenticated": "false" }, "ec2RoleDelivery": "2.0" }, "invokedBy": "ecr.amazonaws.com" }, "eventTime": "2024-10-08T17:22:51Z", "eventSource": "ecr.amazonaws.com", "eventName": "ListImageReferrers", "awsRegion": "us-east-2", "sourceIPAddress": "ecr.amazonaws.com", "userAgent": "ecr.amazonaws.com", "requestParameters": { "registryId": "123456789012", "repositoryName": "testrepo", "subjectId": { "imageDigest": "sha256:000b9b805af1cdb60628898c9f411996301a1c13afd3dbef1d8a16ac6dbf503a" }, "nextToken": "urD72mdD/mC8b5-EXAMPLE" }, "responseElements": null, "requestID": "cb8c167e-EXAMPLE", "eventID": "e3c6f4ce-EXAMPLE", "readOnly": true, "resources": [ { "accountId": "123456789012", "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management" }