Konfiguracja AWS CloudTrail w trybie multi-account
Kolejne zadanie to konfiguracja AWS CloudTrail w trybie multi-account.
Kiedy Twoja AWS Organizations ma wiele kont AWS, warto wdrożyć jednolity sposób zbierania logów z usługi CloudTrail. W tym scenariuszu wykorzystane zostanie dedykowane konto AWS, na którym odkładane będą wszystkie logi dla całej multi-account-owej organizacji.
Dodatkowo z wykorzystaniem odpowiednich Resource based policy oraz Service Control Policy zabezpieczysz logi przed modyfikacjami lub skasowaniem.
Video tutorial
Co jest Ci potrzebne do wykonania tego zadania:
- Uruchomiona AWS Organizations,
- Dodatkowe konto AWS dedykowane na przechowywanie logów,
- Tymczasowy dostęp do konta na logi, który pozwoli utworzyć niezbędną konfigurację,
KROKI DO WYKONANIA TEGO ZADANIA
KROK 1: Utworzenie bucketu na logi
Na przygotowanym wcześniej koncie AWS na logi tworzymy S3 bucket, który będzie przeznaczony na przechowywanie wszystkich logów z CloudTrail.
Na początek utwórz bucket w domyślnej konfiguracji, w dalszych krokach będziesz wprowadzał dodatkowe elementy.
KROK 2: Ustawienie uprawnień na bucket’cie
Aby wszystkie konta z organizacji miały możliwość zapisywać logi, niezbędne jest ustawienie odpowiednich uprawnień. W tym przypadku należy skonfigurować odpowiednią resource based policy na poziomie utworzonego wcześniej bucketu S3.
Poniżej znajduje się template takiego policy, w której trzeba zmodyfikować kilka elementów:
- YOUR-BUCKET-NAME – tutaj podmienić na nazwę Twojego bucketu na logi,
- AWS-ACCOUNT-ID – tutaj wstawić ID konta, na którym konfigurujesz CloudTrail,
- YOUR-TRAIL-NAME – nazwę Trail’a, który utworzysz,
- YOUR-ORG-ID – ID Twojej AWS Organizations,
- YOUR-REGION – Region w którym tworzysz konfigurację,
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSCloudTrailAclCheck20150319",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::YOUR-BUCKET-NAME",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudtrail:YOUR-REGION:AWS-ACCOUNT-ID:trail/YOUR-TRAIL-NAME"
}
}
},
{
"Sid": "AWSCloudTrailWrite20150319",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::YOUR-BUCKET-NAME/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudtrail:YOUR-REGION:AWS-ACCOUNT-ID:trail/YOUR-TRAIL-NAME",
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
},
{
"Sid": "AWSCloudTrailOrganizationWrite20150319",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::YOUR-BUCKET-NAME/AWSLogs/YOUR-ORG-ID/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudtrail:YOUR-REGION:AWS-ACCOUNT-ID:trail/YOUR-TRAIL-NAME",
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
Przykładowa S3 Bucket Policy dla konfiguracji CloudTraila organizacyjnego
KROK 3: Utworzenie konfiguracji CloudTrail
Teraz już czas na konfigurację samego ClouTraila. Ten krok należy wykonać na koncie, które wskazane zostało (w domyślnym wariancie będzie to konto MASTER) w opisie S3 Bucket Policy.
Opcjonalnie można również “wydelegować” zarządzanie CloudTrailem na inne konto niż konto Master.
Pamiętaj również, że nazwa traila, musi być zgodna z tym, co zostało określone w bucket policy (KROK 2).
KROK 4: Dodatkowe opcje zabezpieczenia logów CloudTrail
Pierwsza sprawa to oczywiście “odjęcie” uprawnień administracyjnych, które były konieczne do wprowadzenia konfiguracji.
Nadając dostęp w celu przeglądania logów, należałoby wprowadzić minimalne uprawnienia tylko i wyłącznie do odczytu. Poniżej znajdziesz przykład polityki z uprawnieniami tylko i wyłącznie do odczytu logów. Podpowiedź jak nadać taki dostęp znajdziesz w nagraniu Jak skonfigurować AWS IAM Identity Center (SSO)
Wprowadź tylko odpowiedni zmiany:
YOUR-BUCKET-NAME – tutaj podmienić na nazwę Twojego bucketu na logi
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Deny",
"Action": [
"s3:ListBucket"
],
"NotResource": [
"arn:aws:s3:::YOUR-BUCKET-NAME",
"arn:aws:s3:::YOUR-BUCKET-NAME/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::YOUR-BUCKET-NAME",
"arn:aws:s3:::YOUR-BUCKET-NAME/*"
]
}
]
}
Przykład uprawnień do odczytu do bucketu.
Dodatkowe zabezpieczenia logów z użyciem Service Control Policy
Poniżej przykład takiej SCP, którą możesz nałożyć na swoje konto z logami. To, co musisz zrobić to ustawić:
Dodatkowo można jeszcze na poziomie organizacji skonfigurować i nałożyć na to konto Service Control Policy, które będzie również chronić te logi przed jakimikolwiek modyfikacjami.
- YOUR-BUCKET-NAME – tutaj podmienić na nazwę Twojego bucketu na logi,
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Deny",
"Action": [
"s3:UpdateJobStatus",
"s3:UpdateJobPriority",
"s3:RestoreObject",
"s3:ReplicateTags",
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:PutStorageLensConfigurationTagging",
"s3:PutStorageLensConfiguration",
"s3:PutReplicationConfiguration",
"s3:PutObjectVersionTagging",
"s3:PutObjectVersionAcl",
"s3:PutObjectTagging",
"s3:PutObjectRetention",
"s3:PutObjectLegalHold",
"s3:PutObjectAcl",
"s3:PutMetricsConfiguration",
"s3:PutLifecycleConfiguration",
"s3:PutJobTagging",
"s3:PutInventoryConfiguration",
"s3:PutEncryptionConfiguration",
"s3:PutBucketWebsite",
"s3:PutBucketVersioning",
"s3:PutBucketTagging",
"s3:PutBucketRequestPayment",
"s3:PutBucketPublicAccessBlock",
"s3:PutBucketPolicy",
"s3:PutBucketOwnershipControls",
"s3:PutBucketObjectLockConfiguration",
"s3:PutBucketNotification",
"s3:PutBucketLogging",
"s3:PutBucketCORS",
"s3:PutBucketAcl",
"s3:PutAnalyticsConfiguration",
"s3:PutAccountPublicAccessBlock",
"s3:PutAccessPointPolicy",
"s3:PutAccelerateConfiguration",
"s3:ObjectOwnerOverrideToBucketOwner",
"s3:DeleteStorageLensConfigurationTagging",
"s3:DeleteStorageLensConfiguration",
"s3:DeleteObjectVersionTagging",
"s3:DeleteObjectVersion",
"s3:DeleteObjectTagging",
"s3:DeleteObject",
"s3:DeleteJobTagging",
"s3:DeleteBucketWebsite",
"s3:DeleteBucketPolicy",
"s3:DeleteBucketOwnershipControls",
"s3:DeleteBucket",
"s3:DeleteAccessPointPolicy",
"s3:DeleteAccessPoint",
"s3:CreateJob",
"s3:CreateAccessPoint",
"s3:BypassGovernanceRetention",
"s3:AbortMultipartUpload"
],
"Resource": [
"arn:aws:s3:::YOUR-BUCKET-NAME/*"
]
}
]
}
Przykład SCP do wdrożenia na koncie z Logami
BRAWO!
Twoje logi CloudTrail są teraz odpowiednio zbierane i zabezpieczone 🫡
Poprzednia
Następna