Route 53 Resolver DNS クエリログをクロスアカウントのS3バケットへ保存する
コンサルティング部の吉井です。
Route 53 Resolver DNS クエリログを取得して S3 に保存する機会があったので、設定内容と手順をまとめてみます。
やりたいこと
アカウントAからRoute 53 Resolver DNSクエリログを取得して、ログ保存用AWSアカウントのS3バケットに保存したい。
将来的にはログを取得するアカウントが増えるかもしれない。
最終的な構成
ログ保存用アカウントにS3バケットとクエリログ設定作成し、クエリログ設定はAWS RAM で各アカウントに共有する構成にしました。
この構成にしておくと、アカウント追加時に各アカウントで個別にクエリログ設定を作る必要がなく、運用コストを下げれそうです。
また、バケットポリシーも自動で設定される点も良さそうです。

やってみた
ログ保存用アカウントでの作業
S3
ログを保存しておくS3バケットを作成しておきます。S3バケットはクエリログ設定と同じリージョンで作成する必要があります。

Route 53 クエリログの設定
次にクエリログの設定を作成します。

クエリログの送信先は先ほど作成したS3バケットにしておきます。

RAM
最後にRAMのリソース共有を作成します。

リソースタイプはリゾルバーのクエリログ設定とし、先ほど作成したクエリログの設定を追加・選択します。

アクセス許可はデフォルトのAWSRAMDefaultPermissionResolverQueryLogConfigを使用します。

最後にアカウントA(クエリログを取得したいアカウント)にアクセス権限を追加します。

RAMのリソース共有が作成できれば、ログ保存用AWSアカウントでの作業は終了です。
アカウントA(クエリログを取得したいアカウント)の作業
RAM
RAMからクエリログ設定の共有を承認します。


Route53 クエリログの設定
次に、承認したクエリログ設定にクエリログを取得したいVPCを追加します。


これでアカウントAでの作業は完了です。
最後にログ集約アカウント側でS3バケットポリシーが追加されている事とログが保存されていることを確認しておきます。


問題なさそうですね。
最後に
今回はRoute 53 Resolver DNS クエリログを別アカウントの S3 バケットに保存してみました。
クエリログ設定を AWS RAM で共有することで、アカウント追加時の運用をシンプルにできて良いなと感じました!







