会社でAWS Configについて理解が浅いため、一度動画を見て学び自分用にまとめることとした。
視聴した動画はこちら
AWS Configとは
構成管理にまつわる課題として、実設定とドキュメントとの整合性の乖離や管理コスト、コンプライアンス準拠への負担が挙げられる。これらの課題をクリアして構成管理を楽にしましょうという機能がAWS Config。
概要は次の通り。
- AWSリソースのインベントリ管理、構成変更のためのフルマネージド型サービス
- AWSリソース構成変更をロギング(保存期間はデフォルト7年間)
- 履歴も保存
- 構成情報を定期的にスナップショットしてS3に保存
- SNSを用いた通知も可能
- 構成変更の追跡、セキュリティ分析、トラブルシューティング、コンプライアンス準拠を容易にできる
AWS Configの各機能の役割
保管する3つの処理として、次のものがある。
- ストリーム
- リソースが作成/変更/削除されるたびに作成
- 構成ストリームに追加される
- SNSトピックに連携可能
- ヒストリー
- 任意の機関における各リソースタイプの構成要素の集合(あるEC2に対してどんな設定が過去に変更されたかなど)。
- リソースの設定履歴を指定したS3バケットに保存
- スナップショット
- ある時点でのコンフィグレーションアイテムの集合
- 自動で定期的、あるいは変更トリガーで作成され、指定したS3バケットに保存
対応しているリソース
動画の中では24のサービスでリソース数は60以上対応していると紹介されている。(きっと今はもっと多そう)
公式ページの対応リソース一覧はこちら
AWS Configによる構成管理のメリット
- 構成管理/記録の保存
- 過去の構成状況
- 依存関係の確認
- コンプライアンス準拠
AWS Configで管理する構成情報をへ評価する
- AWS Config Rulesを用いるとルールに用いて変更をして良いかの判断を自動でできる(例:すべてのEBCボリュームが暗号化されているか)。それによって次の恩恵を受けれる。
- 準拠状況のチェック
- 構成修復の実行
- SNSによる通知
- ルールの策定には2種類ある
- マネージドルール
- AWSによって定義・提供される
- 汎用性の高いベーシックルール
- カスタムルール
- 自分でAWS Lambdaをもとにルールを策定可能
- 管理自体は作成者で実施
- マネージドルール
- ルール評価実行のトリガータイミング
- 設定変更
* 関連リソースが作成、変更された際 - 定期的
* 任意の定期的なタイミング(1h毎〜24h毎)
* AWS Configがスナップショットを撮る際
- 設定変更
修復アクション
コンプライアンス違反のリソースに対して、ルールに関連づけられた修正アクションを実行できる。
- 事前入力されたリストから修正アクションを選択
- AWS Systems Manager Automationドキュメントを使用したカスタムの修正アクションを設定。
※ Cloud Watch EventsからLambdaをトリガーしてより細かい修正アクションも実行できる
マネージドルールのユースケース1
実際にどんなユースケースがあってルール設定されているかも動画で紹介があった。
下記の他にもコミュニティベースで融資で作成されているリポジトリというものもある。
- approved-amis-by-id
- 実行中のインスタンスで使用されているAMIが指定したもの(承認済みのもの)かを確認
- required-tags
- リソースに指定したタグがあるか確認
- encrypted-volumes
- アタッチ済みのEBSボリュームが暗号化されているかを確認
- ec2-instance-managed-by-ss
- ec2インスタンスがAWS Systems Managerで管理されているか確認
- vpc-flow-logs-enabled
- VPCのパケット取得(Flow Logs)が有効になっているか確認
マネージドルールのユースケース2
- s3-bucket-public-read-prohibited
- S3バケットでパブリック読み取りアクセスが許可されていないことを確認
- s3-bucket-public-write-prohibited
- S3バケットでパブリック書き込みアクセスが許可されていないことを確認
- rds-snapshots-public-prohibited
- RDSスナップショットが公開禁止されていることを確認
- s3-bucket-server-side-encryption-enabled
- S3でバケットのデフォルト暗号化が有効化されているか確認
- access-keys-rotated
- 有効なアクセスキーが指定日数内にローテションされているか確認
他にもAWS Config単独ではないが
不正ソフトウェア導入に対する自動アクションを設定みたいなこともできるらしい。
ベストプラクティス
量が多いため、動画ではいくつかピックアップされている
記録対象について
#1. すべてのアカウントとリージョンでAWS Configを有効に
→ すべての操作を記録する
→ ミスがあったら気づける仕組みを整えておく
#2. 全てのリソースタイプについて設定変更を記録する
→ 新しく追加されたリソースタイプも自動で記録対象になる
#3. グローバルリソースは1リージョンで記録を有効にする
→ 重複して記録されるのを防ぐ
保存先について
#5. 安全なS3バケットにヒストリーとスナップショットを保存する
→ 特定の人しかアクセスできず、改竄ができない場所へ保存
S3バケットの公開設定をチェックするAWS Managed Ruleも活用
マルチアカウント環境での利用について
#19. Data aggregation機能を使って、管理アカウントから集中管理する
#20. Organizationベースのaggregatorを使う
料金について
AWS Config
リソースに対して記録された設定項目 1記録あたり:0.003USD
AWS Config Rules
記録されたAWS Configルールの評価数(リージョン毎)
最初の10万ルールの評価につき:0.001USD
次の40万ルールの評価につき:0.0008USD
次の500,001以上のルールの評価につき:0.005USD
追加料金
S3,SNS,Lambda,SSM Automation