#cloudtrail

2025-03-05

I wanted to automatically disable an IAM user when it does something suspicious. Since this IAM user is used by a script I know that when it deviates that is a good indicator that it was compromised and I need to investigate.

How hard could it be?

Well, it turned out to be a frustrating experience. CloudTrail records events done by users, so this should be easy to setup. But then I started to encounter problems:

* Only the first CloudTrail event is free, so I did not want to create more than one trail
* CloudTrail sends events to EventBridge but only for the current region, which is not enough

I have an organizational trail in the management account. Let's see how easy it is to send these events into a member account!

* CloudTrail can send events to a CloudWatch log then I could set up a subscription filter. This worked for a PoC but ultimately there is a limit of 2 for subscription filters for a log group. So this was a no-go
* Otherwise it writes to S3, so I had to have a Lambda reading the objects as CloudTrail writes them

At this point I had a Lambda that got all CloudTrail events and filters out the interesting ones: ones with AccessDenied error, GetCallerIdentity, and ConsoleLogin. That should be a good start.

EventBus Rules can send events based on a filter, so forwarding these events into an EventBus seems like a good idea. So so far the chain is: CloudTrail => S3 => Lambda => EventBus.

But how can I send these events to the member account? Well, an EventBus Rule, of course. So I created an EventBus in the member account.

Next issue: a CloudFormation stack can't create an EventBus Rule in a different region. Interestingly, it is possible to create *cross-account* but not cross-region. So I needed an EventBus in the target region as well and set up a Rule to forward events there.

Then the very last step is to set up a Rule to filter events for the IAM user(s) and set up a CloudWatch alarm that calls a Lambda that attaches the DenyAll policy to the user.

Since I wanted everything managed by CloudFormation I ended up with an enormous amount of stacks:

* (mgmt acc us-east-1) CloudTrail + Lambda + EventBus
* (mgmt acc us-east-1) EventBus Rule to forward events to the member account
* (member acc us-east-1) EventBus to receive events from the mgmt account
* (member acc us-east-1) EventBus Rule to forward events to the regional EventBus
* (member acc eu-west-1) The target stack with the IAM users and an EventBus to receive events to

What makes it a particularly annoying experience is that there are so many small limitations that make a simpler solution impossible:

* CloudTrail should support filtering by events so that the whole management account => member account part could be saved
* Or: the default EventBus should receive *all* CloudTrail events not just ones for the current region
* EventBus Rule should be allowed to be cross-region. That would have saved me one EventBus
* EventBridge Pipes don't support SNS as a source and also it's not clear if that supports cross-region and cross-account pipes

I wrote about my frustrations in this article: [advancedweb.hu/cloudtrails-hor.

Overall, I'm fairly happy with this solution, but I feel that it would be so much easier if AWS supported some basic features around CloudTrail.

#aws #cloudtrail #eventbridge

Originally published [on my blog](advancedweb.hu/shorts/how-hard)

2024-11-29

New AWS::CloudTrail::Dashboard

Use the Dashboard resource to specify a CloudTrail Lake custom dashboard. A custom dashboard can have up to 10 widgets. For more information, see CloudTrail Lake dashboards in the AWS CloudTrail User Guide.
docs.aws.amazon.com/AWSCloudFo #cloudtrail #cloudformation

Tedi Heriyantotedi@infosec.exchange
2024-08-31

Detecting AWS Account Compromise: Key Indicators in CloudTrail Logs for Stolen API Keys: thehackernews.com/2024/08/dete

#aws #cloudtrail #cloudsecurity

Schrank :shopware: 🐘Schrank@phpc.social
2024-06-19

Dotenv doesn’t work in #lamda, but because it is during init, only white page. And because it is during init, no (symfony) lig in #CloudTrail 🥳🥳 #bref #symfony #CloudWatch

Cc @beberlei @BrocksiNet thanks!

2024-04-22

Our latest blog post provides an introduction to #AWS detection engineering. We present the main log sources #CloudTrail #FlowLogs #GuardDuty for AWS, as well as some relevant events that defenders could use to detect attackers

blog.sekoia.io/aws-detection-e

Gea-Suan Lingslin@abpe.org
2024-02-26

找出任意 S3 bucket 對應的 AWS Account ID

在 Hacker News 上看到「How to find the AWS account ID of any S3 bucket (tracebit.com)」這篇,作者利用不同的額外條件,讓 S3 bucket 產生不同的 res

blog.gslin.org/archives/2024/0

#API #AWS #Cloud #Computer #Murmuring #Network #Security #Service #account #amazon #api #aws #bucket #cloud #cloudtrail #data #endpoint #id #log #policy #s3 #security #service #vpc

2023-12-11

Updated AWS::CloudTrail::EventDataStore

If the FederationEnabled property is set to true, use the FederationRoleArn property to specify the ARN for the federation role. The federation role must exist in your account and provide the required minimum permissions.
docs.aws.amazon.com/AWSCloudFo #cloudtrail #cloudformation

2023-12-11

Updated AWS::CloudTrail::EventDataStore

Use the FederationEnabled property to specify whether you want to federate the event data store.
docs.aws.amazon.com/AWSCloudFo #cloudtrail #cloudformation

2023-11-23

Using Session Names to Log Who Deployed What in CloudTrail
~~
ACM.388 Refactoring my test script that will ultimately be used in EC2 Instances to run deployment jobs
~~
#Cloudtrail #logs #aws #namingconvention #user #process

medium.com/cloud-security/usin

2023-11-20

Updated AWS::CloudTrail::EventDataStore

Use the BillingMode property to specify the billing mode to use for the event data store.
docs.aws.amazon.com/AWSCloudFo #cloudtrail #cloudformation

2023-11-14

Updated AWS::CloudTrail::EventDataStore InsightSelector

Use the AWS::CloudTrail::EventDataStore InsightSelector property to specify the types of Insights events you want to collect in your destination event data store. ApiCallRateInsight and ApiErrorRateInsight are valid Insights types.
docs.aws.amazon.com/AWSCloudFo #cloudtrail #cloudformation

2023-11-13

Updated AWS::CloudTrail::EventDataStore

Use the InsightsDestination property to specify the ARN (or ID suffix of the ARN) of the destination event data store that logs Insights events.
docs.aws.amazon.com/AWSCloudFo #cloudtrail #cloudformation

Luciano Mamminoloige@mastodon.ie
2023-08-18

Have you ever thought about querying your #CloudTrail logs using #SQL with #Athena? 🏛️

This can actually be a great idea, especially if you are managing multiple AWS accounts!

If you want to find out more, check out our latest episode of #AWS Bites 👇

awsbites.com/94-get-the-most-o

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst