Configルールを使ってAWSリソースの特定タグ有無をチェックする

2020.06.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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

引用: required-tags | AWSドキュメント

ルールの作成

AWS Configのページから [ルール] > [ルールを追加] 選択します。

img

[required-tags] を選択します。

img

このマネージドルールの説明は以下の通り。

リソースに、指定するタグがあるかどうかを確認します。 例えば、'CostCenter' タグが EC2 インスタンスに存在するかどうかを確認できます。複数の値はカンマで区切ります。

ルールのパラメータにチェックしたいタグのキー(必要であれば値)を指定します。 今回は CostCenter タグの有無チェックを行いたいので、以下のような指定です。

img

修復アクションは今回は特に指定せず、他パラメータ(ルール名など)を適当に埋めて [保存] しましょう。

確認

作成したルールの詳細を見てみます。

img

上図のように非準拠( CostCenter タグの付けられていない)リソース一覧を取得できました。

CloudFormationテンプレート

今回の作業の CFnテンプレート版です。 パラメータに Configルール名、チェックしたいタグキー、(オプション)チェックしたいタグ値 を指定します。

おわりに

AWS Config マネージドルールの1つである "required-tags" を使ってみました。

「このマネージドルールに対応しているリソースに限る」制約はありますが、 ノーコードでタグの有無の自動検知が実現できるのはとても便利です。

非準拠となったリソースを SNSに Publishすることもできます。 普段のセキュリティ運用に活用していきましょう。

参考