Configルールを使ってAWSリソースの特定タグ有無をチェックする
AWS Config は AWSリソースの構成を記録、管理するためのサービスです。 EC2インスタンスやセキュリティグループなど、AWSリソースが「いつ、どのような変更がされたか」 の履歴を記録してくれます。
また、 AWS Config ルール を利用して AWSリソースの構成の評価ができます。 AWSリソースのあるべき構成を条件としています。条件に違反しているリソースが検出されると 「非準拠」フラグが付けられます。
AWSが管理しているConfigルール(マネージドルール)に required-tags があります。
今回はこの required-tags ルールを使用して、「AWSリソースに特定タグが付いているかどうか」 検知の自動化を試してみます。
前提、注意事項
AWS Config記録を有効化していることが前提です。
また、現在(2020/06/15)時点で required-tags ルールで対応しているAWSリソースは以下のとおりです。
- ACM::Certificate
- AutoScaling::AutoScalingGroup
- CloudFormation::Stack
- CodeBuild::Project
- DynamoDB::Table
- EC2::CustomerGateway
- EC2::Instance
- EC2::InternetGateway
- EC2::NetworkAcl
- EC2::NetworkInterface
- EC2::RouteTable
- EC2::SecurityGroup
- EC2::Subnet
- EC2::Volume
- EC2::VPC
- EC2::VPNConnection
- EC2::VPNGateway
- ElasticLoadBalancing::LoadBalancer
- ElasticLoadBalancingV2::LoadBalancer
- RDS::DBInstance
- RDS::DBSecurityGroup
- RDS::DBSnapshot
- RDS::DBSubnetGroup
- RDS::EventSubscription
- Redshift::Cluster
- Redshift::ClusterParameterGroup
- Redshift::ClusterSecurityGroup
- Redshift::ClusterSnapshot
- Redshift::ClusterSubnetGroup
- S3::Bucket
ルールの作成
AWS Configのページから [ルール] > [ルールを追加] 選択します。
[required-tags] を選択します。
このマネージドルールの説明は以下の通り。
リソースに、指定するタグがあるかどうかを確認します。 例えば、'CostCenter' タグが EC2 インスタンスに存在するかどうかを確認できます。複数の値はカンマで区切ります。
ルールのパラメータにチェックしたいタグのキー(必要であれば値)を指定します。
今回は CostCenter
タグの有無チェックを行いたいので、以下のような指定です。
修復アクションは今回は特に指定せず、他パラメータ(ルール名など)を適当に埋めて [保存] しましょう。
確認
作成したルールの詳細を見てみます。
上図のように非準拠( CostCenter
タグの付けられていない)リソース一覧を取得できました。
CloudFormationテンプレート
今回の作業の CFnテンプレート版です。
パラメータに Configルール名、チェックしたいタグキー、(オプション)チェックしたいタグ値
を指定します。
おわりに
AWS Config マネージドルールの1つである "required-tags" を使ってみました。
「このマネージドルールに対応しているリソースに限る」制約はありますが、 ノーコードでタグの有無の自動検知が実現できるのはとても便利です。
非準拠となったリソースを SNSに Publishすることもできます。 普段のセキュリティ運用に活用していきましょう。