AWS Configの拡張機能「AWS Config Rules」の要素を確認してみた #reinvent
時差ボケが未だに治らない森永です。
昨日は4時半に目が冷めました(白目)
re:Inventで満を持して発表されたAWS Config Rules!
恐らく日本で一番AWS Configの記事を書いている私(競合する人がいない)ですが、テンション上がりまくりです。
ですが、地味な機能すぎてあまり知られていないというのも事実です。
(皆さんIoTやLambda拡張やらのキャッチアップで精一杯かと思います)
なので、AWS Config Rulesってどんなサービスなのか、ドキュメントを読み込み、要素を整理してみました!
ご一読いただき興味を持って頂ければ幸いです。
AWS Configのルール機能
AWS Config Rulesと言っても新しいサービスが追加されたわけではありません。
去年のre:Inventで地味に始まったAWS Configの拡張機能として発表されました。
AWS Configの詳しい内容についてはこちらを御覧ください。
簡単に言うと、AWSリソース(EC2やVPCなど)の設定、変更を記録するサービスなのですが、これにルールを作成して設定項目を検査する機能が追加されました。
従来は設定値を確認することは出来たのですが、設定値がガイドラインに従っているかは人力で確認する必要がありました。
マネージドルールとカスタムルール
ルールには大きく分けて2つあります。
AWSが提供しているマネージドルールと、自分で作成することの出来るカスタムルールです。
マネージドルールはよく必要とされるルールをAWSが事前に用意したものです。
パラメータを設定することでマネージドルールも多少カスタムすることが可能です。
現在(2015/10/19)用意されているマネージドルールは以下です。
名前 | 説明 | 検査時期 | パラメータ |
---|---|---|---|
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ファンクションを使用しますので、非常に柔軟なルールを作成することが可能です。
(カスタムルールの作り方は別途記事にします。)
変更時検査と定期検査
ルールによる検査の時期は2タイプあります。 AWSリソースが作成・変更された際に検査を実行する変更時検査と、設定のスナップショットがS3に保管されるタイミングで検査する定期変更です。
変更時検査ではスコープを設定することができ、特定のAWSリソースタイプ、特定のAWSリソースID、特定のタグがついたAWSリソースだけを検査の対象とすることが出来ます。
基本的にAWSリソースの検査についてはこちらを使えば宜しいかと思います。
定期検査では、スコープを設定することは出来ず、スナップショット全体の検査となります。
こちらはアカウント全体でどうか、という検査をするときに使用します。
例えば、アカウント全体でのEC2インスタンスの数が一定数を超えていないか等です。
最後に
ただ設定変更を記録し、通知するだけだったAWS Configにルール機能が追加されたことでAWS Configで出来ることが非常に多くなりました。
特にLambdaを後ろにおいて処理をするので、ガイドラインをコード化出来るようになったといえます。
Guideline as a Code!
あまり生産的ではないコンプライアンスや監査というものをコードにして自動化することで、よりビジネスで重要なところに時間をさくことが出来るようになると思いますので、是非活用頂ければと思います。