[アップデート]AWS Configで4つのリソースが新たにサポートされました
お疲れさまです。とーちです。
AWS Configに4つの新しいリソースタイプのサポートが追加されたので、その内容と実際にVPC Block Public Accessの設定変更を検知するカスタムルールを作成してみた内容を紹介します。
とりあえずまとめ
- AWS Configで4つの新しいリソースタイプがサポート
- AWS::EC2::VPCBlockPublicAccessExclusion
- AWS::EC2::VPCBlockPublicAccessOptions
- AWS::S3Express::BucketPolicy
- AWS::S3Express::DirectoryBucket
- 「カスタマイズ可能なオーバーライドのあるすべてのリソースタイプ」を選択している場合、これらは自動で記録対象に追加される
- AWS Config RulesとConfig Aggregatorでも新しいリソースタイプを利用可能
AWS Configの概要
最初にAWS Configの概要についてさらっとおさらいしておきましょう。
- AWS Configとは:AWS上の各リソースの設定情報とその変更履歴を記録してくれるサービスです。
- AWS ConfigのConfigルールとは:記録されているリソースが設定したルールに準拠しているかを監視することができます。
- AWS ConfigのConfig アグリゲータとは:複数のAWSアカウントやリージョンにまたがるリソースの設定と準拠状況を一元的に確認・管理することができる機能です。
Config ルールと Config アグリゲータでも今回サポートされたリソース種別を使用することができます。
今回のアップデートによりサポートされたリソースは上記の通りなのですが、私は正直あまりAWS Configを触ってこなかったので、「このリソース名が何と紐づくのか?」とピンときませんでした。そこで調べてみたところ、AWS Configは CloudFormationで扱えるリソース単位で監視・管理を行う という仕組みになっていることが分かりました。
例えば「AWS::EC2::VPCBlockPublicAccessExclusion」で検索すると、CloudFormationのリソースとしての情報が出てきます。つまり、AWS ConfigではCloudFormationのリソース定義に基づいてリソースの設定を記録・管理しているというわけですね。
実際に公式ドキュメントにも、各リソースの詳細はCloudFormationのドキュメントを参照するように記載されています。
新しくサポートされたリソースの説明
では、今回追加された各リソースについて詳しく見ていきましょう。
AWS::EC2::VPCBlockPublicAccessOptions
VPC ブロックパブリックアクセス(以後VPCBPA)はインターネットゲートウェイを使った通信を組織的に制御することを目的とした新機能なわけですが、このリソースはそのVPCBPAを有効にするためのリソースです
有効にする際に双方向とするか受信トラフィックのみとするかを指定できます
マネージメントコンソールでいうと以下から設定できるものです
AWS::EC2::VPCBlockPublicAccessExclusion
VPCBPAの制御対象から除外するサブネットやVPCを管理するためのリソースです。
AWS::S3Express::DirectoryBucket
Amazon S3 Express One Zoneは、S3 Standardよりも高いパフォーマンスを提供する代わりに、単一AZにのみデータを保存するストレージクラスです。このリソースはS3 Express One Zoneのバケット(ディレクトリバケット)を作成するためのものです。
詳しくは以下の記事をご参照ください
AWS::S3Express::BucketPolicy
このリソースは簡単ですね。ディレクトリバケットのバケットポリシーを設定するためのリソースになっています。
VPCBPAの変更を検知するConfigルールを作ってみる
では実際に、VPCBlockPublicAccessOptionsの変更を検知するルールを作成してみましょう。
ルールの作成
aws configのルールの作り方は3種類あります。恥ずかしながらGuardを使用したカスタムルールというものがあるのを初めて知りました。のでこちらを使って作ってみます
名前を適当に決めて、デバッグログだけ一応有効にしておきます。
以下のようなGuardルールを作成しました
rule hoge_rule_name when resourceType == "AWS::EC2::VPCBlockPublicAccessOptions" {
configuration.InternetGatewayBlockMode == "block-ingress"
}
Guardルールの書き方については、以下の記事が大変参考になります。下記の記事に詳しく載っていますが、条件判断(今回でいうとconfiguration.InternetGatewayBlockMode == "block-ingress"
の部分)は、Config画面上でConfigが記録したリソース情報のjsonを確認して設定したほうが良いです
評価モードでは一応、以下のようにVPCBlockPublicAccessOptionsだけを指定しておきます
ほかの設定はデフォルトのままとしルールを作成しました。
できあがったルールがこちら
まだVPCBPAは設定してないので、評価結果はない状態です
ルールのテスト
この状態でVPCBPAを設定してみます
なおconfigの記録頻度の設定は連続にしてます
まず双方向にしてみました。この状態だと非準拠のはず
ちゃんと非準拠になりましたね
続いてルールに準拠するようにVPCBPAの設定を変えてみます
するとconfigルール上も準拠状態になりました
ちなみにVPCBPAを無効化するとちゃんとCongigルール上も非準拠状態となりました。
まとめ
いかがでしたでしょうか?AWS Configの新機能により、VPC Block Public AccessやS3 Express One Zone関連の設定変更を監視できるようになりました。特にVPCBPAについては、組織のセキュリティポリシーの遵守状況を監視する際に役立つのではないでしょうか。
以上、とーちでした。