LoginSignup
7
5

More than 3 years have passed since last update.

【AWS Config】基本設定と簡単な動作検証

Last updated at Posted at 2020-07-08

目標

AWS Configを開始し、簡単な動作確認を行う。

AWS Configとは

AWSアカウント内に存在する各種AWSリソース(EC2、EBS、セキュリティグループ、VPCなど)の構成情報を取得し、管理するサービスです。
主要な利用目的としては、以下の2点が挙げられます。

①取得したAWSリソースの構成情報が利用者によって事前定義されたルール(ElasticIPが付与されているか、暗号化ボリュームを利用しているか、必須タグを使用しているか…等)と合致しているかを評価する。
②AWSリソースの構成変更履歴(いつ、どのように作成、変更、削除が行われたか等)を記録する。

より詳しくはAWSドキュメント参考
AWS Config とは

作業の流れ

項番 タイトル
1 Configを開始する
2 動作確認

手順

1.Configを開始する

①AWSコンフィグコンソールへ移動し、今から始めるをクリック
tempsnip.png

②設定
まずはAWS Configで構成情報取得の対象とするAWSリソースを選択します。
今回はデフォルトのこのリージョンでサポートされているすべてのリソースを記録します(AWS Configでサポートされている対象リージョンの全AWSリソースが構成情報管理の対象となります)で設定します(※)。

※補足
グローバルリソース (AWS IAM リソースなど) を含めるを選択すると、IAM ユーザー、グループ、ロール、およびカスタマー管理ポリシーもAWS Configによる構成情報取得の対象となるようです。
またこのリージョンでサポートされているすべてのリソースを記録しますのチェックを外し、特定の型に対象AWSリソースを記載することで、構成情報取得の対象を絞り込むことも可能です(コストパフォーマンスに優れ、かつ注意したいAWSリソースのみに集中出来そうです)

tempsnip.png

次に取得したAWSリソース構成情報のスナップショット格納先S3バケットを設定します。
今回はバケットの作成を選び、新しくバケット作成をしてみます。

tempsnip.png

SNSと連携することで、AWSリソースの構成情報に変更があった場合、Eメール等を利用した通知を行うことができます。
今回は新規作成したSNSトピックと連携させてみます。

Amazon SNSトピックへのストリーム設定の変更と通知。
トピックの作成を選択

tempsnip.png

最後に各種AWSリソースへのアクセス権を付与したIAMロールをAWS Configに付与します。
特に使用したいロールがなければ既存のAWS Configサービスにリンクされたロールを使用でOKかと思います。

tempsnip.png

終わったら次へを押下

②ルール選択
取得したAWSリソースの構成情報と照合するためのルール(※)を選択します。
ここではサンプルとしてEC2のeip-attached(EIPがEC2インスタンスに付与されているか判定)とencrypted-volumes(アタッチされているEBSボリュームが暗号化されているか判定)を選択

※補足
ルールはAWS Configセットアップ後でもカスタマイズ可能です。
ルールにはAWSがベストプラクティスに基づいて提供する「マネージドルール」(今回選択したのはこれ)と、利用者がカスタム開発する「カスタムルール」(Lambdaと連携して動作するようです)が存在します。

tempsnip.png

選択したら次へ押下

③設定内容確認
確認押下
tempsnip.png

④Configダッシュボード作成確認
しばらくしたらAWS Configのダッシュボードが作成されました。
正常に結果反映されるまで数分かかりました。
image.png

⑤SNS通知のセットアップ
SNSコンソールからトピックを選択し、AWS Configと一緒に作成したSNSトピックをクリック
tempsnip.png

対象トピックにはまだサブスクリプション(※)がまだ作成されていないので新規作成します。
サブスクリプションの作成をクリック

※サブスクリプション
あるSNSトピックからのメッセージの受け取り手のこと。
httpやEメール等、様々なプロトコルを介してのトピック通知に対応している。
tempsnip.png

今回はEメールによるSNS通知を利用してみます。
受け取るメールアドレスを入力したら、サブスクリプションの作成をクリック
tempsnip.png

その後、設定したメールアドレスにメールが来るのでConfirm subscriptionをクリックしメールアドレス認証を完了させれば通知設定完了です。
tempsnip.png

2.動作確認

①AWSリソース構成情報と定義ルール間の照合機能
非準拠の定義ルールを全て準拠にしてみます。

<初期状態>
非準拠ルール: 2つ(eip-attachedencrypted-volumesが違反)
非準拠リソース: 3つ(eip-attachedで1つのEIP、encrypted-volumesで2つのEBSボリュームが違反)
image.png

※設定ルール内容
eip-attached:EIPがEC2インスタンスに付与されているか判定
encrypted-volumes:アタッチされているEBSボリュームが暗号化されているか判定

<過程>
eip-attached⇒非準拠EIPをEC2に付与して解消を試みる
tempsnip.png

encrypted-volumes⇒非準拠2ボリュームを暗号化させます(EBSスナップショット取得して暗号化ボリューム作成)。元の非準拠の2ボリュームは削除した

tempsnip.png

各ルール詳細から再評価実行(定期的に評価は行われるが検証迅速化のため実行)
tempsnip.png

<結果>
全ルールを準拠させることが出来ました!
image.png

②AWSリソースの構成変更履歴確認機能
AWS Configでは対象のAWSリソースの作成、変更、削除等が行われた際に、それを構成変更履歴として残します。
試しに、ある1つのセキュリティグループの80番ポートを新たに開けてみたところ、
数分後に変更したセキュリティグループに関するSNSからのメール通知を取得出来ました。
tempsnip.png

メールのリンクをクリックすると、AWSコンソール上からどのような構成情報の変更がなされたかの詳細を確認可能です。
image.png
image.png

また、構成情報のスナップショット格納先として指定したS3バケットには各種リソースの構成情報をまとめたログファイルが格納されているのも確認できました(6時間ごとに格納しているらしい)
image.png

使い終わったら

構成情報取得が不要になった際はAWS Configコンソールの設定オフにするにして余計な課金を防ぎます。
tempsnip.png

またAWS CLIを利用することでAWS Configの設定自体を削除することも可能でした(※)。
※参考にしたサイト
AWSマネジメントコンソールから消せないAWS Configの設定をAWSCLIで綺麗にする方法


# AWS Configの設定状況確認
$ aws configservice describe-delivery-channels
{
    "DeliveryChannels": [
        {
            "snsTopicARN": "arn:aws:sns:ap-northeast-1:932699493995:config-topic",
            "name": "default",
            "s3BucketName": "config-bucket-932699493995"
        }
    ]
}

# AWS Config削除実行
$ aws configservice delete-delivery-channel --delivery-channel-name default

# AWS Config削除確認
$ aws configservice describe-delivery-channels
{
    "DeliveryChannels": []
}
7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5