1
0

AWS Configを有効化してみた

Posted at

Agenda

本記事では、以下のことを書いています。

  • AWS Configの有効化、初期化方法
  • AWS Configのサービスリンクロールとは何か?
  • AWSグローバルサービスとは何か?

Introduction

AWS Configとは何か?

AWS リソースの設定を継続的に記録・評価するためのフルマネージドサービス

以下のような機能が提供される

  • アカウント内のリソース検出
  • 設定内容の記録
  • リソースの設定内容の詳細や削除・変更・設定履歴の記録

デベロッパーガイド

Action

有効化方法

大きく5つのステップを踏んで有効化していきます

1. AWS Configで記録するリソースタイプを指定
2. 必要なIAMロールを設定
3. 設定履歴やスナップショットのファイルを送信するS3バケットの指定
4. 設定変更を通知するようSNSトピックを設定
5. AWS Configルールを設定
  1. AWS Configのトップ画面から[Get Started]を選択
    config-001.png

  2. 一般設定(General settings)と配信方法(Delivery method)についての設定画面。
    今回は以下のように設定をして「Next」を押す

    • 現在指定中のリージョンの全リソースを記録対象にしたい場合はRecord all resources supported in this region
    • AWSグローバルサービスも対象にしたい場合はInclude global resourcesにチェックを入れる(グローバルサービスとは何ぞや?という人はCommentsを参照)
    • AWS Config RoleでUse an existing AWS Config service-linked roleを選択すると、AWS提供のデフォルト設定ロールがサービスに付与される
    • AWS Configで記録された証跡ログはS3バケットに保管されるのでバケット名の指定が必要
    • 通知設定をしたい場合はSNSトピックも作成
      config-002.png
  3. Configルールに関する設定画面。
    必要に応じてAWS のManaged Ruleにチェックすることで、ルールを遵守してAWSサービスが利用されているかを自動で確認してくれる。
    今回は特にチェックせずデフォルトのまま「Next」を押す
    config-003.png

  4. レビュー画面。
    設定した内容について問題なければ[Confirm]を選択
    config-004.png

  5. 暫くするとセットアップが始まり、評価結果などが見れるようになる
    config-005.png

  6. Amazon SNS画面を見ると、SNSトピックも作成されているので必要に応じてsubscriptionを作成し、通知設定を行います。
    (手順は割愛)
    config-006.png

  7. S3バケットも作成されている。
    証跡ログは${指定したバケット名}/AWSLogs/${指定したPrefix}フォルダ内に格納される。
    config-007.png

  8. AWS Config設定画面は以下の通り。
    Configを有効化するとRecorderが「Recording is on」と表示されます。
    これで各種サービスがルールに遵守しているかなどを自動チェックしてくれます。
    検知した変更などについては指定したS3バケットにログが保管されます。
    config-008.png

    また、AWS Configに付与されているサービスリンクロールは以下のものとなります。
    AWS提供のものを利用する場合は、全てのサービスへのアクセス権が付与され、自動でリソース情報を取得するようになっている。
    config-009.png

  9. CLI上では以下コマンドで設定を確認できる

    // 配信設定のっp確認
    $ aws configservice describe-delivery-channels
    {
        "DeliveryChannels": [
            {
                "name": "default",
                "s3BucketName": "config-bucket-test-20221109",
                "snsTopicARN": "arn:aws:sns:ap-northeast-1:${AccounrtId}:config-topic-test"
            }
        ]
    }
    
    // レコーダー設定の確認
    $ aws configservice describe-configuration-recorders
    {
        "ConfigurationRecorders": [
            {
                "name": "default",
                "roleARN": "arn:aws:iam::${AccounrtId}:role/aws-service-role/config.amazonaws.com/AWSServiceRoleForConfig",
                "recordingGroup": {
                    "allSupported": true,
                    "includeGlobalResourceTypes": true,
                    "resourceTypes": []
                }
            }
        ]
    }
    

初期化方法

AWS Configは一度有効化するとコンソール上からは無効化できないようになっている。

もし、一度設定したAWS Configの設定を初期化したい場合はCLI上にて行う必要がある。
設定の初期化はDeliveryChannel、AWSConfigRecorder設定を削除すればOK。
事前にRecorderの設定はOFFにしておく必要がある。

  1. Recorderの設定を無効化します。
    config-010.png

  2. 削除する前にCLIで設定を確認しましょう。
    CLIでの操作はCloudShellが便利です。

    // DeliveryChannelの設定確認
    $ aws configservice describe-delivery-channels
    {
        "DeliveryChannels": [
            {
                "name": "default",
                "s3BucketName": "config-bucket-test-20221109"
            }
        ]
    }
    
    // AWSConfigRecorderの設定確認
    $ aws configservice describe-configuration-recorders
    {
        "ConfigurationRecorders": [
            {
                "name": "default",
                "roleARN": "arn:aws:iam::${AccountId}:role/aws-service-role/config.amazonaws.com/AWSServiceRoleForConfig",
                "recordingGroup": {
                    "allSupported": true,
                    "includeGlobalResourceTypes": false,
                    "resourceTypes": []
                }
            }
        ]
    }
    
  3. 以下コマンドですぐに削除ができます

    // DeliveryChannelの設定削除
    $ aws configservice delete-delivery-channel --delivery-channel-name default
    
    // AWSConfigRecorderの設定削除
    $ aws configservice delete-configuration-recorder --configuration-recorder-name default
    
    // 再度設定確認すると、削除されていることがわかる
    $ aws configservice describe-delivery-channels
    {
        "DeliveryChannels": []
    }
    $ aws configservice describe-configuration-recorders
    {
        "ConfigurationRecorders": []
    }
    
  4. 削除後、初期セットアップ画面が表示されたら初期化成功
    config-011.png

Comments

AWS Configのサービスリンクロールとは?

AWS Configの機能を利用するために必要な権限が事前に定義されているロール。
これをAWS Configに設定しないと、各サービスに対する設定変更情報などを取得ができない。

AWS提供のサービスリンクロールには、AWS管理のポリシーAWSConfigServiceRolePolicyが付与されている。
ここでAWS Configでサポートしている全サービスへのアクセス許可を実装している。

自分で作成することもできるが、さっさと有効化したい場合はAWSで事前に定義されたロールを利用するのも1つ。

AWS提供のサービスリンクロールは、指定されると同時に作成される。

サービスにリンクされた AWS Config ロール

AWSグローバルサービスとは?

リージョン外で機能するAWSサービス。
リージョン選択画面でグローバルと表示されるサービスは基本的にAWSグローバルサービスである。
IAMやRoute53などはグローバルサービスである。
config-012.png

それとは反対に、リージョン内のサービスはリージョナルサービスと呼ばれたりする。
各種サービスの場所については以下記事などが参考になる
AWS サービスがどこにあるのかまとめ

Reference

  1. コンソールによる AWS Config の設定
  2. AWS Configはとりあえず有効にしよう
  3. AWSマネジメントコンソールから消せないAWS Configの設定をAWSCLIで綺麗にする方法
1
0
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
1
0