Agenda
本記事では、以下のことを書いています。
- AWS Configの有効化、初期化方法
- AWS Configのサービスリンクロールとは何か?
- AWSグローバルサービスとは何か?
Introduction
AWS Configとは何か?
AWS リソースの設定を継続的に記録・評価するためのフルマネージドサービス
以下のような機能が提供される
- アカウント内のリソース検出
- 設定内容の記録
- リソースの設定内容の詳細や削除・変更・設定履歴の記録
Action
有効化方法
大きく5つのステップを踏んで有効化していきます
1. AWS Configで記録するリソースタイプを指定
2. 必要なIAMロールを設定
3. 設定履歴やスナップショットのファイルを送信するS3バケットの指定
4. 設定変更を通知するようSNSトピックを設定
5. AWS Configルールを設定
-
一般設定(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ルールに関する設定画面。
必要に応じてAWS のManaged Ruleにチェックすることで、ルールを遵守してAWSサービスが利用されているかを自動で確認してくれる。
今回は特にチェックせずデフォルトのまま「Next」を押す
-
Amazon SNS画面を見ると、SNSトピックも作成されているので必要に応じてsubscriptionを作成し、通知設定を行います。
(手順は割愛)
-
S3バケットも作成されている。
証跡ログは${指定したバケット名}/AWSLogs/${指定したPrefix}
フォルダ内に格納される。
-
AWS Config設定画面は以下の通り。
Configを有効化するとRecorderが「Recording is on」と表示されます。
これで各種サービスがルールに遵守しているかなどを自動チェックしてくれます。
検知した変更などについては指定したS3バケットにログが保管されます。
また、AWS Configに付与されているサービスリンクロールは以下のものとなります。
AWS提供のものを利用する場合は、全てのサービスへのアクセス権が付与され、自動でリソース情報を取得するようになっている。
-
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にしておく必要がある。
-
削除する前に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": [] } } ] }
-
以下コマンドですぐに削除ができます
// 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": [] }
Comments
AWS Configのサービスリンクロールとは?
AWS Configの機能を利用するために必要な権限が事前に定義されているロール。
これをAWS Configに設定しないと、各サービスに対する設定変更情報などを取得ができない。
AWS提供のサービスリンクロールには、AWS管理のポリシーAWSConfigServiceRolePolicy
が付与されている。
ここでAWS Configでサポートしている全サービスへのアクセス許可を実装している。
自分で作成することもできるが、さっさと有効化したい場合はAWSで事前に定義されたロールを利用するのも1つ。
AWS提供のサービスリンクロールは、指定されると同時に作成される。
AWSグローバルサービスとは?
リージョン外で機能するAWSサービス。
リージョン選択画面でグローバル
と表示されるサービスは基本的にAWSグローバルサービスである。
IAMやRoute53などはグローバルサービスである。
それとは反対に、リージョン内のサービスはリージョナルサービス
と呼ばれたりする。
各種サービスの場所については以下記事などが参考になる
AWS サービスがどこにあるのかまとめ