1. CloudTrail์ด๋?
!!!!๊ธฐ๋ณธ์ ์ผ๋ก Trail์ API ํธ์ถํ ํ๊ท ์ฝ 15๋ถ ์ด๋ด์ ๋ก๊ทธ๋ฅผ ์ ์กํ๋ค.์ฐธ๊ณ ๋ฌธํ : https://aws.amazon.com/ko/cloudtrail/features/
๊ฐ๋ ์ ๋ฆฌ
- Cloud Trail์ ๋ชจ๋ AWS ๊ณ์ ์์ ๊ณ์ ์์ฑ์ ํ๋์ ๊ธฐ๋ก ์๋์ผ๋ก ์ค์ ํ ํ์ ์์ด ์ง์๋๋ ์๋น์ค์ ์์ฑ, ์์ ๋ฐ ์ญ์ ์์ ์ ์ํด 90์ผ๋์์ ํ๋ ๊ธฐ๋ก
- ์ด๋ฒคํธ ํํฐ๋ง ๊ฐ๋ฅ ๊ณ์ ํ๋์ ๋ณด๊ณ ๊ฒ์ ๋ฐ ๋ค์ด๋ก๋ ๊ฐ๋ฅ → ๋ฆฌ์์ค ๋ณ๊ฒฝ์ ๋ํ ๊ฐ์์ฑ ํ๋ณด
- s3 ์๋ฒ์ธก ์ํธํ SES๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ทธ ์ํธํ ๊ฐ๋ฅ → KMS๋ก๋ ๊ฐ๋ฅํ๋ค.
- ์ด๋ฒคํธ ์ข
๋ฅ
- ๊ด๋ฆฌ ์ด๋ฒคํธ
aws ๊ณ์ ๋ฆฌ์์ค์์ ์ํ๋๋ ๊ด๋ฆฌ ์์
๋ฑ
ex ) ec2 ์์ฑ , ์ญ์ , ์์ ๋ฑ์ ์์ ๊ธฐ๋ก → aws ๊ณ์ ,iam์ญํ ,์์ ํ ip,์๊ฐ,๋ฆฌ์์ค๋ฑ์ ์ ๋ณด ํ์ธ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ ์ด๋ฒคํธ
๋ฆฌ์์ค ์์ฒด or ๋ฆฌ์์ค ๋ด์์ ์ํ๋๋ ์๋น์ค → ๋๋ ํ๋
- Amazon S3 ๊ฐ์ฒด ์์ค API ํ๋(์: GetObject, DeleteObject ๋ฐ PutObject API ์์ )
- AWS Lambda ํจ์ ์คํ ํ๋(Invoke API)
- Cloud Trail Insights
- ๋ฆฌ์์ค ํ๋ก๋น์ ๋ ๊ธ์ฆ
- IAM ์์ ์ ๊ธ์ฆ ๋๋ ์ฃผ๊ธฐ์ ์ ์ง ๊ด๋ฆฌ ํ๋ ๊ฒฉ์ฐจ๊ฐ์ aws๊ณ์ ์ ๋น์ ์์ ํ๋ ์๋ณ
- ๊ด๋ฆฌ ์ด๋ฒคํธ
aws ๊ณ์ ๋ฆฌ์์ค์์ ์ํ๋๋ ๊ด๋ฆฌ ์์
๋ฑ
- ํตํฉ๋๋ ์๋น์ค
- Lambda
- s3 ๋ฒํท ์๋ฆผ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ s3๊ฐ์ฒด ์์ฑ ์ด๋ฒคํธ๋ฅผ lambda์ ๊ฒ์๊ฐ๋ฅ
- trail ์์ s3 ๋ฒํท์ ๋ก๊ทธ๋ฅผ ์ธ๋ lambda๋ฅผ ํธ์ถํ์ฌ ์ฒ๋ฆฌ
- cloudwatch logs
- trail์์ ๊ธฐ๋ก ๊ด๋ฆฌ ๋ฐ ๋ฐ์ดํฐ ์ด๋ฒคํธ๋ฅผ cloudwatch logs๋ก ๋ณด๋ผ์์๋ค.
- ์งํ ํํฐ ์์ฑํ์ฌ ์ด๋ฒคํธ,๊ฒ์ ์ด๋ฒคํธ๋ฅผ ๋ชจ๋ํฐ๋ง๊ฐ๋ฅ
- lambda ๋ฐ elastisearch ๊ฐ์ ๋ค๋ฅธ aws๋ก ์คํธ๋ฆฌ๋ฐ๊ฐ๋ฅ
- cloudwatch ์ด๋ฒคํธ
- ๋ฆฌ์์ค ๋ณ๊ฒฝ ์ฌํญ์ ์๋ ๋์๊ฐ๋ฅ
- trail ์์ ํน์ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋กํ ์ ์คํ ์์ ์ ์ ๊ฐ๋ฅ ex) cloudtrail ์ ์์ ๊ท์น ์ถ๊ฐ์ ๊ฐ์ด ec2 ๋ณด์ ๊ทธ๋ฃน์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ ๊ธฐ๋ก์ lambdaํจ์๋ก ๋ณด๋ด๋ event ๊ท์น์ ์์ฑ๊ฐ๋ฅ
- Lambda
2. ์ค์ต
์ด๋ฒคํธ ๋ก๊ทธ ํ์ธ
- ์ฝ์์ ํตํ์ฌ trail ์ ์
- ์ด๋ฒคํธ ๊ธฐ๋ก์ ํตํ์ฌ ๋ก๊ทธ ํ์ธ → ๊ธฐ๋ณธ์ ์ธ APIํ๋์ ์ํ์ฌ ํ๋ ์์ ์ด ๋ก๊ทธ๊ฐ ๋จ๋๋ค.
์ด๋ฒคํธ ํํฐ๋ง
- ํํฐ๋ง์ ์๊ฐ ๋ฐ ์ฌ๋ฌ ์ด๋ฒคํธ ํจํด์ ๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ ์กฐํ ๊ฐ๋ฅ
- ์ด๋ฒคํธ ์ด๋ฆ์ผ๋ก ํํฐ๋ง api test๋ฅผ ์ํด ๋ฏธ๋ฆฌ ์ธ์คํด์ค๋ฅผ ์์ฑํด๋ → ์ธ์คํด์ค ์์ฑ๋๊ฒ์ ํ์ธํ๊ณ ์ ๊ฒ์ ๊ฒฐ๊ณผ ๋ํ๋์ง์์ → ๋ค๋ฅธ ์ด๋ฒคํธ ์ด๋ฆ์ผ๋ก ๊ฒ์ํด๋ณด์! → ์ด์ ์ auto-scaling ์ผ๋ก ์์ฑ๋ ์ธ์คํด์ค๋ถํฐ ์๊ฐ๋ฐ ๋ฆฌ์์ค ์ ํ๋ฑ์ ํ์ธ ๊ฐ๋ฅ ํด๋น ์ด๋ฒคํธ์ ๋ํ์ฌ ์์ธํ ์๊ณ ์ ์ด๋ฒคํธ ์ ๋ณด ํ์ธ
- ์ด๋ฒคํธ ์์ธ ์ ๋ณด ํ์ธ → ํด๋น ์ด๋ฒคํธ์ ๋ํ ์์ธํ ์ ๋ณด๋ค์ ํ์ธ ๊ฐ๋ฅํ๋ค. ๋ํ, ์ฐธ์กฐ ๋ฆฌ์์ค ๊น์ง ๊ฐ์ด ํ์ธ ๊ฐ๋ฅ
- ์ ๊ณต๋๋ cloudtrail ์ด ๋ฆฌ์คํธ
- ์๊ฐ ํํฐ๋ง → ํน์ ์๊ฐ๋๋ฅผ ์ง์ ํ๊ฑฐ๋ start-end ์๊ฐ์ ์ง์ ๋ ๊ฐ๋ฅํ๋ค.
S3 - Trail ์ถ์
๊ธฐ์กด ๋ฐฉ์์ฒ๋ผ Trail๋ก๋ง ๋ก๊ทธ๋ฅผ ๋ณด๋ ๋ฐ๋ 90์ผ์ด๋ผ๋ ๊ธฐ๊ฐ์ด ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ ์ด์ ์ ๋ฐ์ดํฐ๋ ํ์ธ์ ํ๊ณ ์ถ์ ์ S3๋ฒํท์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.- ์ถ์ ์์ฑ → ๋ก๊ทธ ํ์ผ์ ๋ณดํธํ๊ธฐ ์ํด์ KMS๋ฅผ ์ฌ์ฉ๊ฐ๋ฅ.(์ค์ต์ด๊ธฐ์ ๋ชจ๋ ๊ฒ์ ๋นํ์ฑํ) → ๋ ์์ ๊ฐ๋ ์ ๋ฆฌ๋ฅผ ํ๋ฉด์ ์ฐ๋ ๊ฐ๋ฅํ ์๋น์ค ์ค watch logs๋ฅผ ์ด์ฉํ ์๋์๋ค.
- ์ด๋ฒคํธ ์ ํ → kms ์ด๋ฒคํธ๋ ์ ์ธ ๋ชจ๋ apiํ๋ (์ด๋ฒคํธ๋ ๊ด๋ฆฌ ์ด๋ฒคํธ๋ง ๋๋จธ์ง๋ ์ถ๊ฐ๋น์ฉ)
- ์์ฑ ์งํ → ์ด์ ์ ์ถ์ ์ ์์ฑํด๋์ผ๋ฏ๋ก ๋ฐ๋ก ์์ฑ์ ํ์ง ์์๋ค.
- ๋ฒํท ์์ฑ ํ์ธ → ๋ค์ค ๋ฆฌ์ ์ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฏ๋ก ๋ชจ๋ ๋ฆฌ์ ์ ์ ๋ณด๊ฐ ๋ํ๋๋ค. ๋ฐ๋ผ์, ๋ณธ์ธ์ด ํด๋นํ๋ ๋ฆฌ์ ์ ๋ํด์ ๋ก๊ทธ ์ ๋ณด๋ฅผ ํ์ธํ๋ฉด ๋๋ค.
- ๋ก๊ทธ ํ์ธ → ํด๋น ๋ก๊ทธ๋ค์ด ์์ฑ๋จ์ ํ์ธํ๋ค. (ํด๋น ๋ ์ง์ ๋ํด์ ๋ํ๋๋ฉฐ ์๊ฐ๋ณ๋ก ํ์ธ๊ฐ๋ฅ ํ์ง๋ง, ๋ค์ UI๊ฐ ๋จ์ด์ ธ์ ์๋ณํ๊ธฐ๊ฐ ์ด๋ ต๋ค... ํ์ธํด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์ ์กด์ฌ → ํด๋น ๊ฐ์ฒด์ URL์ ํตํ์ฌ ์ ์ํ ๊ฒฐ๊ณผ ์์ฐํ๋ค....
athena๋ฅผ ์ด์ฉํ s3 ๋ก๊ทธ ๋ถ์
์ด์ ์ trail ์์ ์์ฑํ ์ถ์ ์ ์๋ณํ๊ธฐ์ ์์ด ๋ถํธํจ์ด ์กด์ฌํ์ฌ ํน์ ์ฟผ๋ฆฌ๋ค์ ์ด์ฉํด์ ํธ๋ฆฌํ๊ฒ ๋ณด๊ณ ์ ํ๋ ์ด์ ๋์ดํ ์๋ ์์ผ๋ฉฐ ํด๋น ๋ก๊ทธ๋ค์ ๋ถ์ํด๋ณด์!- Athena ํ
์ด๋ธ ์์ฑ
→ ํด๋น ํ
์ด๋ธ์์ฑ์ trail ์ ๋ํ ์ ๋ณด๋ฅผ ๋ํ๋ด ์ค๋ค.
→ ๋ํ ์ด์ ์ ์ถ์ ์ผ๋ก ์์ฑํ ๋ฒํท์ ์ง์ ํ๋ค (ํด๋น ๋ฒํท์ ์กด์ฌํ๋ ๋ก๊ทธ๋ฅผ ๋์์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์งํํ๊ธฐ๋๋ฌธ์ด๋ค.)
→ ๋ค์์ฒ๋ผ ์ฟผ๋ฆฌํ์์ ํ์ธ ๊ฐ๋ฅCREATE EXTERNAL TABLE cloudtrail_logs_aws_cloudtrail_logs_186086016278_655f63bf ( eventVersion STRING, userIdentity STRUCT< type: STRING, principalId: STRING, arn: STRING, accountId: STRING, invokedBy: STRING, accessKeyId: STRING, userName: STRING, sessionContext: STRUCT< attributes: STRUCT< mfaAuthenticated: STRING, creationDate: STRING>, sessionIssuer: STRUCT< type: STRING, principalId: STRING, arn: STRING, accountId: STRING, userName: STRING>>>, eventTime STRING, eventSource STRING, eventName STRING, awsRegion STRING, sourceIpAddress STRING, userAgent STRING, errorCode STRING, errorMessage STRING, requestParameters STRING, responseElements STRING, additionalEventData STRING, requestId STRING, eventId STRING, resources ARRAY<STRUCT< arn: STRING, accountId: STRING, type: STRING>>, eventType STRING, apiVersion STRING, readOnly STRING, recipientAccountId STRING, serviceEventDetails STRING, sharedEventID STRING, vpcEndpointId STRING ) COMMENT 'CloudTrail table for aws-cloudtrail-logs-186086016278-655f63bf bucket' ROW FORMAT SERDE 'com.amazon.emr.hive.serde.CloudTrailSerde' STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://CloudTrail_bucket_name/AWSLogs/Account_ID/CloudTrail/'; TBLPROPERTIES ('classification'='cloudtrail');
- ํ ์ด๋ธ ์์ฑ ํ์ธ
- ๊ฐ๋จํ๊ฒ event name์ select ์ฟผ๋ฆฌ
- ์์ธ ๋ฆฌ์ ์์๋ง ๋ฐ์ํ ์ด๋ฒคํธ ํ์ธ
- ์คํ ์ค์ธ ์ธ์คํด์ค ํ์ธ
AWS CLI๋ฅผ ํตํ ํ์ธ
CLI๋ ํํ์ด์ง์์ ์ค์น๊ฐ๋ฅ https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-windows.html→ AWS Cli ์ค์น
https://docs.aws.amazon.com/ko_kr/awscloudtrail/latest/userguide/view-cloudtrail-events-cli.html - ๋ช ๋ น๋ค ์ฐธ์กฐ ๊ฐ๋ฅ
aws cloudtrail lookup-event help - > ์ด๋ฒคํธ์ ๋ํ ๋ช
๋ น์ค ๋์๋ฐ๊ธฐ aws cloudtrail lookup-event --max-results 1 (default 10 1~50๊น์ง ๊ฐ๋ฅ) aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=RunInstances -> ์ธ์คํด์ค ๊ตฌ๋๋ ์ด๋ฒคํธ ๊ธฐ๋ก (์ด๋ฒคํธ ์ด๋ฆ์ผ๋ก ์กฐํ) aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventSource,AttributeValue=ec2.amazonaws.com -> EventSource ์กฐํ aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceType,AttributeValue=AWS::S3::Bucket -> ๋ฆฌ์์ค ์ ํ
- ์ต์ ์ด๋ฒคํธ ๊ธฐ๋ก 1๊ฐ ์กฐํ
- ๊ตฌ๋ํ ์ธ์คํด์ค ์ด๋ ฅ
CloudWatch logs ๋ฐ insight ์ด์ฉ
- cloud trail ํ์ ์ ์์ฑ์ s3 ๋ฒํท ์ด์ธ์๋ cloudwatch๋ก ๋ก๊ทธ๊ทธ๋ฃน ์์ฑ๊ฐ๋ฅ
- cloudwatch ๋ก๊ทธ๊ทธ๋ฃน - ๋ก๊ทธ ์คํธ๋ฆผ → ์ธ๋ถ ์ ๋ณด๋ ํด๋น ์คํธ๋ฆผ์ ํ์ธ
- ๋ก๊ทธ ์ด๋ฒคํธ ํํฐ๋ง ํจํด → ์ญ์ ๋ ์ธ์คํด์ค ์กฐํ์ ๋ํ๋จ
cloudwatch logs
- ๋ก๊ทธ ๊ทธ๋ฃน ์ ํ
- ํํฐ๋ง
→ ์ํ๋ ํจํด์ผ๋ก ํํฐ๋ง์ด ๊ฐ๋ฅํ๋ค.
- ์ฟผ๋ฆฌ ์กฐํฉ์
stats count(*) by eventSource, eventName, awsRegion -> ์๋น์ค ,์ด๋ฒคํธ ์ด๋ฆ ,๋ฆฌ์ ๋ฑ์ ๊ฐฏ์ |filter eventName="TerminateInstances" -> ํ์ดํ๋ผ์ธ์ผ๋ก ์ข ๋ฃ๋ ์ธ์คํด์ค ์กฐํ
cloudwatch insight์ด์ฉํ์ฌ query
์ํ์ฟผ๋ฆฌ : https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-examples.html
๋จ์ผ ์์ฒญ์ ์ต๋ 20๊ฐ์ ๋ก๊ทธ๊ทธ๋ฃน ์ฟผ๋ฆฌ ๊ฐ๋ฅ ์ฟผ๋ฆฌ๊ฐ ์๋ฃ๋์ง ์์ ๊ฒฝ์ฐ 15๋ถ ํ์ ์ฟผ๋ฆฌ๊ฐ ์๊ฐ ์ด๊ณผ๋ฉ๋๋ค. ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ 7์ผ ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
3.๊ฒฐ๋ก
Trail์ ์ด์ฉํ์ฌ AWS๊ณ์ ๋ด์์ ์ผ์ด๋๋ ๋ชจ๋ ์ด๋ฒคํธ์ ๋ํ ๋ก๊ทธ๋ฅผ ์๋์ผ๋ก ๋จ์ ์ง๊ธฐ ๋๋ฌธ์90์ผ๊ฐ์ ๊ธฐ๋ก์ด ์ง๋ ๋ฐ์ดํฐ๋ค๋ S3 ๋ฅผ ์ด์ฉํ์ฌ ์ฅ๊ธฐ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ด ํ ์ ์์ด ์๋นํ ์ ์ฉํ๊ฒ ์ฌ์ฉ ํ ์ ์๋ ์๋น์ค์ธ ๊ฒ ๊ฐ๋ค.
๋ํ, s3 ๋ฒํท์ผ๋ก ์ง๋ ๋ก๊ทธ๋ค์ ๋ถ์ํ๊ธฐ์๋ ๋ถํธํจ์ด ์กด์ฌํ์ฌ Athena๋ฅผ ์ด์ฉํ๋ค๋ฉด ํน์ ์ฟผ๋ฆฌ๋ฌธ์ ์ด์ฉํ์ฌ ํ ์ด๋ธ์ ๋ํ๋ colume ๋ช ์ ์ด์ฉํ์ฌ ํํฐ๋ฅผ ํ ์์๋ค.
'Management & Governance' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
athena log query (0) | 2021.03.08 |
---|
Uploaded by Notion2Tistory v1.1.0