Cree una integración para registrar eventos externos AWS con el AWS CLI - AWS CloudTrail

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cree una integración para registrar eventos externos AWS con el AWS CLI

En esta sección, se describe cómo se puede utilizar AWS CLI para crear una integración de CloudTrail Lake para registrar eventos externos AWS.

En él AWS CLI, puede crear una integración con cuatro comandos (tres si ya tiene un banco de datos de eventos que cumpla con los criterios). Los almacenes de datos de eventos que utilice como destinos para una integración deben ser para una sola región y una sola cuenta; no pueden ser multirregionales, no pueden registrar eventos para las organizaciones y solo pueden incluir eventos de actividad. AWS Organizations El tipo de evento en la consola debe ser Events from integrations (Eventos de integraciones). En elAPI, el eventCategory valor debe estar. ActivityAuditLog Para obtener más información acerca de las integraciones, consulte Cree una integración con una fuente de eventos externa a AWS.

  1. Ejecute create-event-data-store para crear un almacén de datos de eventos si aún no tiene uno o varios almacenes de datos de eventos que pueda utilizar para la integración.

    El siguiente AWS CLI comando de ejemplo crea un almacén de datos de eventos que registra los eventos externos AWS. Para los eventos de actividad, el valor del selector de campo eventCategory es ActivityAuditLog. El almacén de datos de eventos tiene establecido un periodo de retención de 90 días. De forma predeterminada, el banco de datos de eventos recopila eventos de todas las regiones, pero dado que recopila eventos que no son AWS eventos, configúrelo en una sola región agregando la --no-multi-region-enabled opción. La protección contra la terminación está habilitada de forma predeterminada y el almacén de datos de eventos no recopila eventos para cuentas de una organización.

    aws cloudtrail create-event-data-store \ --name my-event-data-store \ --no-multi-region-enabled \ --retention-period 90 \ --advanced-event-selectors '[ { "Name": "Select all external events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["ActivityAuditLog"] } ] } ]'

    A continuación, se muestra un ejemplo de respuesta.

    { "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE", "Name": "my-event-data-store", "AdvancedEventSelectors": [ { "Name": "Select all external events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "ActivityAuditLog" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 90, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-10-27T10:55:55.384000-04:00", "UpdatedTimestamp": "2023-10-27T10:57:05.549000-04:00" }

    Necesitarás el ID del almacén de datos de eventos (el sufijo o EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE el del ejemplo de respuesta anterior) para continuar con el siguiente paso y crear tu canal. ARN

  2. Ejecute el create-channelcomando para crear un canal que permita a una aplicación asociada o de origen enviar eventos a un almacén de datos de eventos en el que se almacenen CloudTrail.

    Un canal tiene los siguientes componentes:

    Origen

    CloudTrail utiliza esta información para determinar a qué socios envían los datos del evento CloudTrail en su nombre. Se requiere un origen, que puede ser Custom para todos los eventos válidos que no son de AWS , o el nombre de un origen de eventos asociado. Se permite un máximo de un canal por origen.

    Para obtener más información sobre los valores Source para socios disponibles, consulte Información adicional acerca de los socios de integración.

    Estado de la ingesta

    El estado del canal muestra cuándo se recibieron los últimos eventos de un origen de canal.

    Destinos

    Los destinos son los almacenes de datos de eventos de CloudTrail Lake que reciben eventos del canal. Puede cambiar los almacenes de datos de eventos de destino de un canal.

    Para dejar de recibir eventos de un origen, elimine el canal.

    Necesita el ID de al menos un almacén de datos de eventos de destino para ejecutar este comando. El tipo de destino válido es EVENT_DATA_STORE. Puede enviar los eventos ingeridos a más de un almacén de datos de eventos. El siguiente comando de ejemplo crea un canal que envía eventos a dos almacenes de datos de eventos, representados por ellos IDs en el Location atributo del --destinations parámetro. Los parámetros --destinations, --name y --source son obligatorios. Para ingerir eventos de un CloudTrail socio, especifique el nombre del socio como el valor de--source. Para ingerir eventos de sus propias aplicaciones externas AWS, especifique Custom el valor de. --source

    aws cloudtrail create-channel \ --region us-east-1 \ --destinations '[{"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE"}, {"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEg922-5n2l-3vz1- apqw8EXAMPLE"}]' --name my-partner-channel \ --source $partnerSourceName \

    En respuesta a su create-channel comando, copie el ARN del nuevo canal. Necesitará ARN ejecutar los put-audit-events comandos put-resource-policy y en los siguientes pasos.

  3. Ejecute el put-resource-policycomando para adjuntar una política de recursos al canal. Las políticas de recursos son documentos de JSON política que especifican qué acciones puede realizar un director específico en el recurso y en qué condiciones. Las cuentas definidas como principales en la política de recursos del canal pueden recurrir a ellas PutAuditEvents API para organizar eventos.

    nota

    Si no creas una política de recursos para el canal, solo el propietario del canal podrá llamar PutAuditEvents API al canal.

    La información necesaria para la política está determinada por el tipo de integración.

    • Para una integración directa, es CloudTrail necesario que la política incluya la AWS cuenta IDs del socio y que introduzcas el identificador externo exclusivo proporcionado por el socio. CloudTrail añade automáticamente la AWS cuenta del socio IDs a la política de recursos al crear una integración mediante la CloudTrail consola. Consulte la documentación del socio para obtener información sobre cómo obtener los números de AWS cuenta necesarios para la política.

    • Para integrar la solución, debe especificar al menos un identificador de AWS cuenta como principal y, si lo desea, puede introducir un identificador externo para evitar que el agente se confunda.

    A continuación, se enumeran los requisitos de la política de recursos:

    • El recurso ARN definido en la política debe coincidir con el canal ARN al que está asociada la política.

    • La política contiene solo una acción: cloudtrail-data: PutAuditEvents

    • La política contiene como mínimo una instrucción. La política puede tener como máximo 20 instrucciones.

    • Cada instrucción contiene como mínimo una entidad principal. Una instrucción puede tener como máximo 50 entidades principales.

    aws cloudtrail put-resource-policy \ --resource-arn "channelARN" \ --policy "{ "Version": "2012-10-17", "Statement": [ { "Sid": "ChannelPolicy", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root", "arn:aws:iam::123456789012:root" ] }, "Action": "cloudtrail-data:PutAuditEvents", "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b", "Condition": { "StringEquals": { "cloudtrail:ExternalId": "UniqueExternalIDFromPartner" } } } ] }"

    Para obtener más información sobre las políticas de recursos, consulte AWS CloudTrail ejemplos de políticas basadas en recursos.

  4. Ejecuta la PutAuditEventsAPIpara incorporar los eventos de tu actividad. CloudTrail Necesitarás la carga útil de eventos que deseas CloudTrail añadir. Asegúrate de que no haya información confidencial o de identificación personal en la carga útil del evento antes de incorporarla. CloudTrail Tenga en cuenta que PutAuditEvents API utiliza el cloudtrail-data CLI punto final, no el punto final. cloudtrail

    Los siguientes ejemplos muestran cómo utilizar el put-audit-events CLI comando. Los parámetros --audit-events y --channel-arn son obligatorios. El parámetro --external-id es obligatorio si se define un ID externo en la política de recursos. Necesita el ARN canal que creó en el paso anterior. El valor de --audit-events es una JSON matriz de objetos de eventos. --audit-eventsincluye un identificador obligatorio del evento, la carga útil requerida del evento como valor del evento y una suma de EventData control opcional para ayudar a validar la integridad del evento tras su incorporación. CloudTrail

    aws cloudtrail-data put-audit-events \ --channel-arn $ChannelArn \ --external-id $UniqueExternalIDFromPartner \ --audit-events \ id="event_ID",eventData='"{event_payload}"' \ id="event_ID",eventData='"{event_payload}"',eventDataChecksum="optional_checksum"

    A continuación, se muestra un comando de ejemplo con dos ejemplos de eventos.

    aws cloudtrail-data put-audit-events \ --channel-arn arn:aws:cloudtrail:us-east-1:123456789012:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE \ --external-id UniqueExternalIDFromPartner \ --audit-events \ id="EXAMPLE3-0f1f-4a85-9664-d50a3EXAMPLE",eventData='"{\"eventVersion\":\0.01\",\"eventSource\":\"custom1.domain.com\", ... \}"' \ id="EXAMPLE7-a999-486d-b241-b33a1EXAMPLE",eventData='"{\"eventVersion\":\0.02\",\"eventSource\":\"custom2.domain.com\", ... \}"',eventDataChecksum="EXAMPLE6e7dd61f3ead...93a691d8EXAMPLE"

    El siguiente comando de ejemplo agrega el --cli-input-json parámetro para especificar un JSON archivo (custom-events.json) de carga útil del evento.

    aws cloudtrail-data put-audit-events --channel-arn $channelArn --external-id $UniqueExternalIDFromPartner --cli-input-json file://custom-events.json --region us-east-1

    A continuación se muestra el contenido de muestra del JSON archivo de ejemplo,custom-events.json.

    { "auditEvents": [ { "eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\", \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\", \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\", \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\", \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"}, \"additionalEventData\":{\"key\":\"value\"}, \"sourceIPAddress\":\"12.34.56.78\",\"recipientAccountId\":\"152089810396\"}", "id": "1" } ] }

Puede comprobar que la integración funciona y CloudTrail que ingiere los eventos del origen correctamente ejecutando el get-channelcomando. El resultado de get-channel muestra la marca de tiempo más reciente en la que se CloudTrail recibieron los eventos.

aws cloudtrail get-channel --channel arn:aws:cloudtrail:us-east-1:01234567890:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE

(Opcional) Cálculo de un valor de la suma de comprobación

La suma de comprobación que especifique como valor EventDataChecksum en una PutAuditEvents solicitud le ayuda a comprobar si CloudTrail recibe el evento que coincide con la suma de comprobación; también ayuda a comprobar la integridad de los eventos. El valor de la suma de comprobación es un SHA256 algoritmo de base 64 que se calcula mediante la ejecución del siguiente comando.

printf %s "{"eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\", \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\", \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\", \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\", \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"}, \"additionalEventData\":{\"key\":\"value\"}, \"sourceIPAddress\":\"source_IP_address\", \"recipientAccountId\":\"recipient_account_ID\"}", "id": "1"}" \ | openssl dgst -binary -sha256 | base64

El comando devuelve la suma de comprobación. A continuación, se muestra un ejemplo.

EXAMPLEDHjkI8iehvCUCWTIAbNYkOgO/t0YNw+7rrQE=

El valor de la suma de comprobación se convierte en el valor de EventDataChecksum en la solicitud PutAuditEvents. Si la suma de comprobación no coincide con la del evento proporcionado, CloudTrail rechaza el evento con un error. InvalidChecksum