旬のトピック、最新ニュースのマピオンニュース。地図の確認も。

AWS CloudTrailをAWS Organizationsと連携させる時の手順

2023年08月23日11時38分 / 提供:マイナビニュース


今回は、AWS CloudTrailをAWS Organizationsと連携させる時の初期セットアップの手順について説明します。

AWS CloudTrailはAWS Organizationsと連携させることで組織の証跡と呼ばれるAWS Organizations配下のすべてのAWSアカウントのイベントを記録する証跡を作ることができます。この組織の証跡のセットアップ手順について紹介します。
想定しているシステム構成

本稿では、実案件でよくあるマルチアカウント構成でのセットアップ手順を説明します。具体的には、下図のようにセキュリティアカウントとログアーカイブアカウントを用意します。

セキュリティアカウント:管理アカウントから委任管理者として設定され、CloudTrail、Config、Security Hubなどのセキュリティ関連の設定を行うアカウント
ログアーカイブアカウント:各種AWSサービスから出力されたログを保管するアカウント

案件によっては、セキュリティアカウントとログアーカイブアカウントを同一のAWSアカウントとする場合もあるので、自身の案件の状況に応じて適宜読み替えていただければと思います。
委任管理者アカウントの設定

前回も説明しましたが、CloudTrailで委任管理者をサポートしましたので、まずは委任管理者アカウントの設定を行います。

(1)委任管理者アカウントの設定は、管理アカウントでのみ実施できるので、まず管理アカウントにログインを行い、CloudTrailの画面を開きます。

(2)サイドメニューから「設定」をクリックします。

(3)「管理者を登録」ボタンをクリックし、ポップアップ画面で委任管理者として設定するAWSアカウントIDを入力します。

ログアーカイブアカウントの設定

CloudTrailの設定前に、Cloudtrailの証跡を保管するためのS3バケットを用意する必要があるため、ログアーカイブアカウントにてその設定を行います。

(1)組織の証跡用のS3バケットの作成を行います。付与すべきバケットポリシーは公式ドキュメントに記載がありますので、記載の通りの設定を行います。公式ドキュメントのバケットポリシーはわかりにくいところがありますので、少し補足をします。

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSCloudTrailAclCheck20150319",
"Effect": "Allow",
"Principal": {
"Service": [
"cloudtrail.amazonaws.com"
]
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::myOrganizationBucket"※1,
"Condition": {
"StringEquals": {
"aws:SourceArn": "arn:aws:cloudtrail:region:111111111111:trail/trailName"※2
}
}
},
{
"Sid": "AWSCloudTrailWrite20150319"※3,
"Effect": "Allow",
"Principal": {
"Service": [
"cloudtrail.amazonaws.com"
]
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::myOrganizationBucket/AWSLogs/111111111111/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control",
"aws:SourceArn": "arn:aws:cloudtrail:region:111111111111:trail/trailName"
}
}
},
{
"Sid": "AWSCloudTrailOrganizationWrite20150319",
"Effect": "Allow",
"Principal": {
"Service": [
"cloudtrail.amazonaws.com"
]
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::myOrganizationBucket/AWSLogs/o-exampleorgid/*"※4,
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control",
"aws:SourceArn": "arn:aws:cloudtrail:region:111111111111:trail/trailName"
}
}
}
]
}

※1:Resourceに指定している「myOrganizationBucket」は、今回作成するS3バケット名を指定してください
※2:記載例の「111111111111」は 管理アカウントのAWSアカウントID です。セキュリティアカウントのAWSアカウントIDではないのでご注意ください
※3:組織の証跡の場合、このブロックの記載は必須ではありません
※4:組織の証跡は「{バケット名}/AWSLogs/{組織ID}/{管理アカウントのAWSアカウントID}/{メンバーアカウントのAWSアカウントID}」という名前で保管されます。組織IDは管理アカウントで確認可能ですので、事前に確認しておきましょう。


セキュリティアカウントの設定

続いて、セキュリティアカウントの設定を行います。
KMSの設定

CloudTrailの設定を行う前に、KMSにて顧客管理キー(CMK)を作成します。組織の証跡作成時にCMKを新規作成することも可能ですが、今回は事前にCMKを作成し、そのCMKを指定するという流れによるセットアップを紹介します。

CloudTrailの証跡イベントを暗号化するためのCMKの作成を行います。キーポリシーは下記が必要最低限となります。案件状況に応じて適宜権限の追加を検討ください。

Conditionで指定するCloudTrailのARNに注意が必要です。前述のS3バケットでも記載した通り、指定するARNのアカウントIDは 管理アカウントのAWSアカウントID です。セキュリティアカウントのAWSアカウントIDではありません。

{
{
"Version": "2012-10-17",
"Id": "Key policy for CloudTrail",
"Statement": [
{
"Sid": "Enable IAM User Permissions For Security Account",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::セキュリティアカウントのID:root"
]
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Enable IAM User Permissions For Log Archive Account",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::ログアーカイブアカウントのID:root"
]
},
"Action": "kms:Decrypt",
"Resource": "*"
},
{
"Sid": "Allow CloudTrail to encrypt logs",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey*"
],
"Resource": "*",
"Condition": {
"StringLike": {
"kms:EncryptionContext:aws:cloudtrail:arn": [
"arn:aws:cloudtrail:ap-northeast-1:管理アカウントのID:trail/作成するCloudTrailの名前"
]
}
}
},
{
"Sid": "Allow CloudTrail to describe key",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "kms:DescribeKey",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:SourceArn": "arn:aws:cloudtrail:ap-northeast-1:管理アカウントのID:trail/作成するCloudTrailの名前"
}
}
}
]
}

CloudTrailの設定

最後にCloudTrailの設定を行います。この操作はセキュリティアカウントで行います。

(1)CloudTrailのメニューで「証跡の作成」ボタンをクリックします

(2)S3バケットとしてログアーカイブアカウントのS3バケットを指定し、暗号化キーとしてセキュリティアカウントのCMKを指定し、「次へ」をクリックします。

(3)記録するログイベントの設定を行います。以下の画像ではデータイベントやInsightsイベントにチェックを入れていませんが、以下の記事を参考に必要に応じて設定を検討ください。

データイベントをログ記録する
証跡の Insights イベントの記録

(4)確認画面で「証跡の作成」をクリックし、完了します。
課題となりやすいポイント

最後に、CloudtrailをOrganizationsと連携させるにあたり、課題となりやすい個所を紹介します。

(1)複数のアカウントをまたがった操作が多いため、どこで何をすれば良いかがわかりにくいと思いますので、本稿を参考に手順を確認してください。

(2)組織の証跡は特定のAWSアカウントを対象外にすることができないため、Organizations内に既存のAWSアカウントがいる場合、既存のAWSアカウントでは既存の証跡に加えて、組織の証跡が作成され、二重で証跡が取得されることになります。コストや管理面で問題となりますのでご注意ください。

既存の証跡は過去ログがあり、削除も難しいと思いますので、できるだけ既存のAWSアカウントがいない新規のOrganizationsの環境で組織の証跡を利用してください。

(3)上記の課題に関連しますが、管理アカウントのログも対象外にできないため、今回のような構成の場合、ログアーカイブアカウントに管理アカウントのログも集約されます。管理アカウント内の操作ログは見られたくない場合もあると思いますので、そうした場合の利用注意してください。

(4)CloudTrail Lakeと併用する場合、今回のように委任管理者アカウントを利用できないケースがあります。公式ドキュメントにも記載がありますが、CloudTrail Lakeのイベントストアを作成するのオプションとしてイベントデータストアのコピーは委任管理者では対応していません。そのため、CloudTrail Lakeの利用時には注意が必要です。

証跡イベントを組織のイベントデータストアにコピーするには、組織の管理アカウントを使用する必要があります。組織の委任された管理者アカウントを使用して、証跡イベントをコピーすることはできません。

まとめ

今回は、CloudTrailの組織の証跡の作成ステップや組織の証跡を利用時に課題となりやすいポイントについても紹介しました。それほどメジャーな操作ではないため、初めて実施する際は戸惑われたり、手戻りが発生したりするでしょう。本稿がそうした課題の解決の一助になれば幸いです。

次回は、AWS ConfigのOrganizations連携について紹介します。

奥村康晃 おくむらやすあき NTTデータ入社以来、クラウドサービスのAPIを連携させることで効率的な管理を可能とするクラウド管理プラットフォームの開発に従事。現在では、クラウド導入の技術コンサルや組織での技術戦略立案にも携わる。 2023 Japan AWS Ambassadors受賞 この著者の記事一覧はこちら

続きを読む ]

このエントリーをはてなブックマークに追加

関連記事

ネタ・コラムカテゴリのその他の記事

地図を探す

今すぐ地図を見る

地図サービス

コンテンツ

電話帳

マピオンニュース ページ上部へ戻る