プログラマでありたい

おっさんになっても、プログラマでありつづけたい

AWS Control Towerとガードレールという設計思想

 前回、Control Towerの削除方法だけ書いていたので、それではあんまりだと思ったのでControl Towerの簡単な紹介とその中核の一つであるガードレールという設計思想を紹介します。

ガードレールという考え方

 従来の考え方では、セキュリティを保つためには多少の不便は仕方ないと、セキュリティと利便性とのトレードオフで語られることが多かったです。一方、AWSはガードレールという考え方を提唱し、『ブレーキをかけるのではなく、どんなスピードを出しても安全なセキュリティ』を確保しようという方策に舵を切っています。
 利便性とのトレードオフは、Gate(関所)と読んでいます。ガードレールは安全柵ですね。何度かお見せしてたかもしれませんが、関所とガードレールの違いを表した図になります。

f:id:dkfj:20200703081137p:plain

ガードレールの実現手段としての予防と検知

 では、そのガードレールをどう実現しているのかというと予防(prevention)と検知(detection)です。予防は、事前に想定される危険性を定義して、そこからそもそも逸脱できなくすることです。実装例としては、個人レベルであればIAMに権限を与えないとかがあたります。またAWSアカウントレベルでは、AWS Organizationsのサービスコントロールポリシー(SCP)で制限するなどになります。
 予防に対して、検知とはなにでしょうか?検知は、セキュリティやガバナンス上で問題ある可能性がある動作を検出することです。例えば、VPCのネットワークの許可ポートの変更を検知したり、ルートユーザーの利用を検知したりとかが該当します。それだったら、検知じゃなく予防で防げばよいのではと思う人もいるかもしれません。しかし、検知の対象となる動作の大半は、実運用上でも必要なことが多いです。それを一律で防ぐのは難しいということで、検知して問題ないかを確認します。あとは、そもそも危険のある動作を全部洗い出して防ぐのも大変というのもあります。
 予防と検知の関係を図でまとめると、次のようになります。

f:id:dkfj:20200703081553p:plain

Control Towerでの予防と検知

 では、Control Towerでは、予防と検知をどのように実装しているのでしょうか?実は、Control Tower自体には直接的な予防と検知の機能を持ちません。予防はOrganizationsのサービスコントロールポリシー(SCP)で実現し、検知はConfig Rulesで実現しています。Control Towerを有効にすると、自動的にこれらの機能をオンにして初期設定をしてしまうのです。そして、状況を収集するようになるといった感じです。
 では、Control Towerが初期設定する設定をみてみましょう。まぁほとんどが予防ですね。ということで、Control TowerがOrganizationsを作るのも納得です。

名前 ガイダンス カテゴリ 動作
ログアーカイブの削除を許可しない 必須 監査ログ 予防
ログアーカイブの保存時に暗号化を有効にする 必須 監査ログ 予防
ログアーカイブのアクセスログ作成を有効にする 必須 監査ログ 予防
ログアーカイブへのポリシーの変更を不許可にします 必須 モニタリング 予防
ログアーカイブへのパブリック読み取りアクセス
を不許可にする
必須 監査ログ 検出
ログアーカイブへのパブリック書き込みアクセス
を不許可にする
必須 監査ログ 検出
ログアーカイブの保持ポリシーを設定する 必須 監査ログ 予防
CloudTrail への設定変更を不許可にします 必須 監査ログ 予防
CloudTrail イベントと CloudWatch logs を統合する 必須 モニタリング 予防
利用可能なすべてのリージョンで
CloudTrail を有効にする
必須 監査ログ 予防
CloudTrail ログファイルの整合性検証を有効にする 必須 監査ログ 予防
AWS Control Tower によって設定された
CloudWatchへの変更を不許可にします
必須 Control Tower
のセットアップ
予防
AWS Config 集約承認の削除を許可しない 必須 Control Tower
のセットアップ
予防
AWS Control Tower によって設定された
AWS Config アグリゲーションへの
変更を不許可にします
必須 Control Tower
のセットアップ
予防
AWS Config への設定変更を不許可にします 必須 監査ログ 予防
利用可能なすべてのリージョンで
AWS Config を有効にする
必須 監査ログ 予防
AWS Control Tower によって設定された
AWS Config ルールへの変更を不許可にします
必須 Control Tower
のセットアップ
予防
EBS 用に最適化されていない
EC2 インスタンスタイプの起動を許可しない
強く推奨 オペレーション 検出
EC2 インスタンスにアタッチされていない
EBS ボリュームを許可しない
強く推奨 オペレーション 検出
EC2 インスタンスにアタッチされた
EBS ボリュームの暗号化を有効にする
強く推奨 データセキュリティ 検出

予防と検知以外のControl Towerの機能

 Control Towerを設定すると、SCPとConfig Rules以外にも沢山のサービスの設定をおこないます。ところどころ言及していたOrganizationsの作成はもちろんのこと、組織ユニット(OU)の作成やログやセキュリティ用のAWSアカウント作成まで行います。また、Security Hubを設定したりAWS SSOまで用意します。

f:id:dkfj:20200703081608p:plain

 それ以外にも、1アカウント1VPCを徹底させるためか、デフォルトのネットワークの作成等も行います。この辺りの一つ一つの機能を解説すると非常に長くなるので、また日を改めて解説します。予防と検知については、技術書典8で発表した、『AWSの薄い本Ⅱ アカウントセキュリティのベーシックセオリー』で詳しく取り上げています。次回、技術書典9でマルチアカウント管理をテーマに1冊書く予定です。それにてIAM本の3部作は完結となります。お楽しみに〜

booth.pm