AWS再入門 AWS Config編

2015.12.09

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

はじめに

当エントリはDevelopers.IOで弊社AWSチームによる『AWS サービス別 再入門アドベントカレンダー 2015』の9日目のエントリです。昨日8日目のエントリは能登の『Amazon EMR』でした。

このアドベントカレンダーの企画は、普段AWSサービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。

本日9日目のテーマは『AWS Config』です。

AWS Config (AWS リソース構成の追跡) | アマゾン ウェブ サービス(AWS 日本語)

目次

サービスの基本的な説明

AWS Configとは、セキュリティとガバナンスを可能にする構成変更の通知構成履歴AWSリソースのインベントリーをお客様へ提供する完全マネージド型のサービスです。
簡単にAWSリソースの構成や変更を可視化することが出来ます。

構成管理・変更管理ツール

構成情報のスナップショットの取得

サポートされているAWSリソースについて、現在の構成情報のスナップショットを自動で取得してくれます。 取得された情報はS3バケットに保存されます。

現在(15/12/9)サポートされているAWSリソースは以下です。

AWSサービス AWSリソース リソースタイプの値
Amazon Elastic Block Store Amazon EBS volume AWS::EC2::Volume
Amazon Elastic Compute Cloud EC2 Dedicated host1 AWS::EC2::Host
EC2 Elastic IP (VPC only) AWS::EC2::EIP
EC2 instance AWS::EC2::Instance
EC2 network interface AWS::EC2::NetworkInterface
EC2 security group AWS::EC2::SecurityGroup
Amazon Virtual Private Cloud Customer gateway AWS::EC2::CustomerGateway
Internet gateway AWS::EC2::InternetGateway
Network access control list (ACL) AWS::EC2::NetworkAcl
Route table AWS::EC2::RouteTable
Subnet AWS::EC2::Subnet
Virtual private cloud (VPC) AWS::EC2::VPC
VPN connection AWS::EC2::VPNConnection
VPN gateway AWS::EC2::VPNGateway
AWS CloudTrail Trail AWS::CloudTrail::Trail

この中で設定を記録したいものだけを選択することも可能です。

AWSリソースの構成情報の検索、閲覧

AWSリソースの構成情報を検索し、閲覧することが出来ます。
AWSリソースにどのような設定がされているのかを可視化出来ます。

AWSリソースの変更履歴の検索、閲覧

AWSリソースの構成が変更を履歴として検索、閲覧することが出来ます。 いつ、どの値が、どのように変更されたかが分かります。

AWSリソースが作成、変更、削除された際の通知

変更がなされたタイミングでSNS経由で通知を行うことが出来ます。 SNSなので、メール送信することも可能ですし、SQSに投げて処理を行うことも可能です。

AWSリソース間の関係性の確認

各AWSリソースがどのような関係性にあるのかを確認することが出来ます。 例えば、

  • セキュリティグループを割り当てているインスタンス
  • インスタンスに紐付けられているEBSボリューム
  • VPC内に構築されているインスタンス

    などです。

AWS Configの構成要素

Configuration Items

とある時点の各設定値のこと。
メタデータ、属性値、関係性などAWS Configの最小構成要素。

Configuration Snapshot

Configuration Itemsの集合。
定期的、もしくは変更のタイミングで取得されてS3に保管される。

Configuration Stream

Configuration Itemsのリスト。
リソースが作成、変更、削除される際にConfiguration Itemsが作成され、それをConfiguration Streamに追加する。
追加されたConfiguration ItemsはSNSでの通知に使用される。

Configuration History

任意の期間のConfiguration Itemsの集合で、設定の履歴。
Configuration HistoryはS3に保管される。

Config Rules

2015/12/9現在、AWS Config Rulesはプレビューです。
本記事の内容は正式リリース時に変更される可能性があります。

AWS Configで取得した設定値を監査して、あるルールに則っているかを自動で確認してくれるサービスです。

マネージドルールとカスタムルール

ルールには大きく分けて2つあります。
AWSが提供しているマネージドルールと、自分で作成することの出来るカスタムルールです。

マネージドルールはよく必要とされるルールをAWSが事前に用意したものです。
パラメータを設定することでマネージドルールも多少カスタムすることが可能です。

現在(2015/12/9)用意されているマネージドルールは以下です。

名前 説明 検査時期 パラメータ
CLOUD_TRAIL_ENABLED CloudTrailは有効化する 定期 s3BucketName
snsTopicArn
cloudWatchLogsLogGroupArn
EIP_ATTACHED EIPはインスタンスにアタッチする 変更時
ENCRYPTED_VOLUMES EBSは暗号化する 変更時 kmsId
INCOMING_SSH_DISABLED SSHポートが開放されたSGを作らない 変更時
INSTANCES_IN_VPC EC2はVPC内に作成する 変更時 vpcId
REQUIRED_TAGS ○○というタグを付ける 変更時 tag1key
tag1value
RESTRICTED_INCOMING_TRAFFIC ○○番ポートが開放されたSGを作らない 変更時 blockedPort1
blockedPort2

カスタムルールは自分でルールを作成することが可能です。
ルールの作成にはLambdaファンクションを使用しますので、非常に柔軟なルールを作成することが可能です。
例えば、オープンなSSHポートが設定された場合、予め指定したIPアドレスのみに自動的に制限するなど、検知して、対応するまでを自動化することが可能となるわけです。

変更時検査と定期検査

ルールによる検査の時期は2タイプあります。
AWSリソースが作成・変更された際に検査を実行する変更時検査と、設定のスナップショットがS3に保管されるタイミングで検査する定期変更です。

変更時検査ではスコープを設定することができ、特定のAWSリソースタイプ、特定のAWSリソースID、特定のタグがついたAWSリソースだけを検査の対象とすることが出来ます。
基本的にAWSリソースの検査についてはこちらを使えば宜しいかと思います。

定期検査では、スコープを設定することは出来ず、スナップショット全体の検査となります。
こちらはアカウント全体でどうか、という検査をするときに使用します。
例えば、アカウント全体でのEC2インスタンスの数が一定数を超えていないか等です。

サービス利用のユースケース

AWSリソース構成管理

自分の所有するAWSアカウント上にどんなAWSリソースが存在していて、どんな設定がなされているのかを確認し、無駄なリソースや、設定値の間違いを発見することが出来ます。
構成が変更された時に通知を送ることもできるので、すぐに検知することが出来ます。

監査、コンプライアンス

構成の変更が全て記録されるので、いつ、どのように変更がなされたかがひと目で分かります。
社内ポリシーとして証跡を取得しないといけない場合にはもってこいのサービスです。
※ CloudTrailでも出来るじゃんと思われるかと思いますが、あちらは呼び出されたAPIを全て記録していますので、量がハンパないです。
AWS Configでひとまず確認し、詳細はCloudTrailという併用がベストかと思います。
CloudTrailとConfigはどちらか、ではなくどちらもなのです。

変更管理、トラブルシューティング

AWSリソースの中には関連性を持ったものが多いです。
例えば、セキュリティグループの設定を変更したら、インスタンスにアクセスできなくなったとします。
セキュリティグループを変更した本人であれば原因がすぐ分かるかと思いますが、その他の人は突然アクセスできなくなった!と焦ります。
この時、AWS Configでインスタンスの情報を確認し、関連するセキュリティグループを追えば、おかしな変更がされたことがすぐに分かります。
更に、元の設定値が分かるので、それを戻せばひとまずは状況が回復しますので、トラブルシューティングとしても役立ちます。

あわせて読みたい

さいごに

以上、AWS サービス別 再入門アドベントカレンダー 9日目のエントリ『AWS Config』編でした。地味ではありますが非常に重要なサービスになっていますので、是非ご活用下さい。

明日(12/10)は西澤のEC2編です。お楽しみに!