Registro de llamadas a la API de CodeArtifact con AWS CloudTrail
CodeArtifact se integra a AWS CloudTrail
Si crea un registro de seguimiento, puede habilitar la entrega continua de eventos de CloudTrail a un bucket de Amazon Simple Storage Service (Amazon S3), incluidos los eventos para CodeArtifact. Si no configura un registro de seguimiento, puede ver los eventos más recientes en la consola de CloudTrail en el Historial de eventos. Mediante la información que recopila CloudTrail, puede determinar la solicitud que se hizo a CodeArtifact, la dirección IP desde la que se hizo la solicitud, quién la hizo y cuándo e información adicional.
Para más información sobre CloudTrail, consulta la Guía del usuario de AWS CloudTrail.
Información de CodeArtifact en CloudTrail
CloudTrail se habilita en su cuenta de AWS cuando la crea. Cuando se produce una actividad en CodeArtifact, esa actividad se registra en un evento de CloudTrail junto con otros eventos de servicio de AWS en Historial de eventos. Puede ver, buscar y descargar los últimos eventos de la cuenta de AWS. Para obtener más información, consulte Visualización de eventos con el historial de eventos de CloudTrail.
Para un registro continuo de los eventos de la cuenta de AWS, incluidos los eventos de CodeArtifact, cree un registro de seguimiento. Un registro de seguimiento permite a CloudTrail enviar archivos de registro a un bucket de Amazon S3. De forma predeterminada, cuando se crea un registro de seguimiento en la consola, el registro de seguimiento se aplica a todas las regiones de AWS. El registro de seguimiento registra los eventos de todas las regiones de la partición de AWS y envía los archivos de registro al bucket de Amazon S3 especificado. Puede configurar otros servicios de AWS para analizar y actuar en función de los datos de eventos recopilados en los registros de CloudTrail. Para obtener más información, consulte los temas siguientes:
Cuando el registro de CloudTrail está habilitado en su cuenta de AWS, las llamadas a la API realizadas a las acciones de CodeArtifact se escriben en los archivos de registro de CloudTrail junto con otros registros de servicio de AWS. CloudTrail determina cuándo debe crearse un nuevo archivo y escribir en él en función del periodo de tiempo y del tamaño del archivo.
CloudTrail registra todas las acciones de CodeArtifact. Por ejemplo, las llamadas a las acciones ListRepositories (en AWS CLI, aws codeartifact
list-repositories), CreateRepository (aws codeartifact
create-repository) y ListPackages (aws codeartifact
list-packages) generan entradas en los archivos de registro de CloudTrail, además de los comandos del cliente del administrador de paquetes. Los comandos del cliente del administrador de paquetes suelen realizar más de una solicitud HTTP al servidor. Cada solicitud genera un evento de registro de CloudTrail independiente.
Entrega de registros de CloudTrail entre cuentas
Hasta tres cuentas independientes reciben los registros de CloudTrail para una sola llamada a la API:
-
La cuenta que realizó la solicitud, por ejemplo, la cuenta que llamó a
GetAuthorizationToken. -
La cuenta del administrador del repositorio: por ejemplo, la cuenta que administra el repositorio al que llamó
ListPackages. -
La cuenta del propietario del dominio, por ejemplo, la cuenta propietaria del dominio que contiene el repositorio en el que se llamó a la API.
En el caso de API como ListRepositoriesInDomain, que son acciones contra un dominio y no contra un repositorio específico, solo la cuenta que realiza la llamada y la cuenta del propietario del dominio reciben el registro de CloudTrail. En el caso de API como ListRepositories que no están autorizadas para ningún recurso, solo la cuenta de la persona que llama recibe el registro de CloudTrail.
Descripción de las entradas de los archivos de registro de CodeArtifact
Los archivos de registro de CloudTrail pueden contener una o más entradas de registro. Cada entrada muestra varios eventos con formato JSON. Un evento de registro representa una única solicitud de cualquier origen e incluye información sobre la acción solicitada, la fecha y la hora de la acción, los parámetros de la solicitud, etcétera. Las entradas de registro no son un rastro de la pila ordenada de las llamadas API públicas, por lo que no aparecen en ningún orden específico.
Temas
Ejemplo: una entrada de registro para llamar a la API GetAuthorizationToken
Una entrada de registro creada por GetAuthorizationToken incluye el nombre de dominio en el campo 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" }
Ejemplo: una entrada de registro para obtener una versión del paquete npm
En las solicitudes realizadas por todos los clientes del administrador de paquetes, incluido el cliente npm, se registran en el campo datos adicionales, como el nombre del dominio, el nombre del repositorio y el nombre del paquete requestParameters. La ruta URL y el método HTTP se registran en el campo 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" }