AWSマルチアカウント環境でセキュリティやガバナンスに準拠しているか環境評価をする
コンニチハ、千葉です。
はじめに
複数チームで利用していくと、たくさんAWSアカウントが増えて、セキュリティやガバナンス、コンプライアンスを守るために中央管理で頑張り、ボトルネックになっていくことがあります。しかし、AWSでは自動化ができるので、チームに権限を委譲したうえでセキュリティ、ガバナンス、コンプライアンスを構築する土台があります。ブロッカーではなく、ガードレールが作れると幸せな世界が築けそうです。
ってことで、AWSにはConfig Rulesというサービスがあり、こちらを導入すると意図しない設定が入っているリソースを可視化したり、通知したりすることができます。 今回は、マルチアカウント環境でどのように管理するがいいのかってのを考えて試してみました。
やりたいこと整理
マルチアカウント環境下にて
- 1つのアカウントでカスタムルールを管理
- 1つのアカウントで情報を収集し表示
- 子アカウントはたくさんあっても運用上負荷が発生しないようにする
です!!
アカウント連携を考える
データの収集
AWS Config の新しいマルチアカウント、マルチリージョンでのデータ集約機能
データ収集部分はアグリゲータを作成することで、収集することができます。収集方法は2パターン!
- Organizationsを指定
- アカウント個別に指定
アカウント個別指定だと、申請される側は承認作業が必要になります。Organizationsを指定すると、なにもしなくても組織に所属しているAWSアカウントでは収集が開始され可視化されました。これはかなり楽です。
ルールの共有
ルールの共有の仕方は、以下のエントリーをご確認ください。ただし、クロスアカウント設定が必要になるのでちょっと複雑になってしまいます。もしかしたら、ルール共有せずに各アカウントにカスタムルールLambda + Config Rulesを作成するCloudFromationを用意し、親アカウントからCloudFormation StackSetsを作るのもてかなと思いました。
やってみた
今回は、Organizationsを使ってアグリゲータを作成し、情報の一元管理をしてみました。
親アカウントで実施
Organizationsから、AWS Configを有効にします。
Configの画面からアグリゲーターを追加します。アグリゲーターを作ることで収集できるようになります。
Organizationsに所属しているアカウントは収集対象にできます。IAMロールを作成します。このIAMロールは、AWS ConfigがOrganizationsに所属しているAWSアカウントを取得するために利用します。また、今回は収集対象を全てのリージョンにしています。
以上で設定完了です。
子アカウントで実施
↓を参考に、子アカウントに対しConfigルールを作成しましょう。子アカウントで作成したルールの評価は親アカウントで作成したアグリゲータに収集され、一括で情報管理できるようになります。
Configのアグリゲータでどのような視点で確認できるのかチェックしてみる
アグリゲータ画面でどんなかんじで集約できるか見てましょう。
集約ビュー
収集したデータのダッシュボードです。対象となっているAWSアカウント一覧から、リソース一覧、準拠していないルールの一覧も確認できます。アカウントまたがって状況を見れるのでとっても便利です。
フィルタもできます。
ルール
複数のAWSアカウントで作成されているルール一覧を確認できます。AWSアカウントやリージョン、ルール非準拠しているものなどでフィルタができます。
Resources
複数のAWSアカウントで作成されている、AWSリソース一覧を取得できます。EC2インスタンス一覧とかも取得できるので、棚卸しとかにも活用できそうです。
最後に
AWS Configのアグリゲータを利用することで、マルチアカウントでのリソース一覧を取得したり、設定がルールに準拠できているか、一目で把握することができました。たくさんルール作って、どんどん権限以上しても安全な仕組みを提供できそうです。