AWS Configの個人利用

やりたいこと~AWS Configに慣れる~

AWSリソースの追跡ができる。
AWSでは数多くのリソースを作成し、管理する必要がある。
AWS Configを使うことでこれらのリソースを管理しやすくなる。

特に個人で使っている場合に恩恵が大きいと感じたのがリソース設定が最適な設定であるかどうかを評価する、というもの
①リソースの管理
リソースが作成、削除、変更されるたびに通知する。
ルールを使用して違反しているリソースに非準拠フラグがつく ←これ

他にもある、があまり個人アカウントだとあまり意味が無いと感じた。
②監査とコンプライアンス
③設定変更の管理とトラブルシューティング
④セキュリティ分析
詳しく知りたい方は以下ドキュメントをお読みください。
https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/WhatIsConfig.html

仕事(大企業案件)では残り3つも重要だろうし、慣れていくに越したことはない。

作業記録

料金も確認してみたがそこまでかかるわけではなさそうなので勉強の為、AWS Configを有効にしてみた。

AWS Configの有効化

・記録するリソースタイプ
[レ] このリージョンでサポートされているすべてのリソースを記録します
[レ] グローバルリソース (AWS IAM リソースなど) を含める
    
・Amazon S3 バケット 
[●] バケットの作成
[ ] アカウントからバケットを選択
[ ] 別のアカウントからバケットを選択
	
・バケット名 ※任意
   
・Amazon SNS トピック
[ ] Amazon SNS トピックへのストリーム設定の変更と通知。

・AWS Config ロール
[●] AWS Config サービスにリンクされたロールの作成
[ ] アカウントからロールを選択

・AWS Config ルール
AWS Config では、定義したルールに対してリソースの設定を確認することができます。開始するには、以下のルールを 1 つまたは複数選択します。 AWS Config をセットアップした後、これらのルールをカスタマイズしたり、AWS Config が提供する他のルールをセットアップしたり、独自のルールを作成したりできます。

すべて選択 116 

非準拠ルール・リソースの修正

ダッシュボードから非準拠ルール・リソースを確認できたのだが、なんと40近くもあることが分かった。
非準拠になってしまっている理由を調べ、どんどん修正して準拠に変えていく作業を行った。
記録しておく。

(非準拠になった)ルール説明対処
ec2-security-group-attached-to-eniセキュリティグループが Amazon Elastic Compute Cloud (EC2) インスタンスまたは Elastic Network Interface (ENI) に接続されていることを確認します。セキュリティグループが EC2 インスタンスまたは ENI に関連付けられていない場合、ルールは NON_COMPLIANT を返します。関連付けられていないセキュリティグループが5つもあった。どれも使う予定なさそうだったので全部削除した。
ec2-instance-detailed-monitoring-enabledEC2 インスタンスに対して詳細モニタリングが有効になっているかどうか確認します。詳細モニタリングは結構お金かかるのでオンにする気はない。ルール自体を削除。
s3-bucket-versioning-enabledS3 バケットに対してバージョン管理が有効になっているかどうかを確認します。オプションで、ルールは MFA 削除が S3 バケットに対して有効になっているかどうかを確認します。s3にバージョニングという機能があることを知った。オンにしておくと間違って削除や更新してしまった場合に復旧できる。
全バケットでバージョニングをオンにした。
acm-certificate-expiration-checkアカウント内の ACM 証明書が、指定された日数以内に有効期限切れとしてマークされるかどうかを確認します。 ACM が提供する証明書は自動的に更新されます。 ACM はインポートした証明書を自動的に更新しません。使っていない不要なacmが3つあったのでまとめて削除。
ec2-instance-no-public-ipAmazon Elastic Compute Cloud (Amazon EC2) インスタンスにパブリック IP が関連付けられているかどうかを確認します。Amazon EC2 インスタンス設定項目に publicIp フィールドが存在する場合、ルールは NON_COMPLIANT です。このルールは IPv4 にのみ適用されます。パブリックipアドレスは付与されていてよいのでルールを削除
rds-snapshot-encryptedAmazon Relational Database Service (Amazon RDS) DB スナップショットが暗号化されているかどうかを確認します。Amazon RDS DB スナップショットが暗号化されていない場合、ルールは NON_COMPLIANT です。RDSはすでに使っておらず、スナップショットも要らないので削除
elb-deletion-protection-enabledElastic Load Balancer で削除保護が有効になっているかどうかを確認します。deletion_protection.enabled が false の場合、ルールは NON_COMPLIANT です。ELBの削除保護を有効にした。
iam-password-policyIAM ユーザーのアカウントパスワードポリシーが、指定された要件を満たすかどうか確認します。パスワードポリシーが有効になっていなかったので有効にした。
iam-user-mfa-enabledAWS Identity and Access Management ユーザーの Multi-Factor Authentication (MFA) が有効かどうかを確認します。引っかかっていたのは以前作成した不要なユーザだったので削除。
iam-user-no-policies-checkいずれの IAM ユーザーにもポリシーがアタッチされていないことを確認します。IAM ユーザーは、IAM グループまたはロールからアクセス許可を継承する必要があります。 引っかかっていたのは以前作成した不要なユーザだったので削除。
ec2-ebs-encryption-by-defaultAmazon Elastic Block Store (EBS) 暗号化がデフォルトで有効になっていることを確認します。暗号化が有効でない場合、ルールは NON_COMPLIANT です。リージョンの暗号化をデフォルトで有効にした。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/EBSEncryption.html
vpc-sg-open-only-to-authorized-portsTCP または UDP ポートがインバウンド 0.0.0.0/0 のセキュリティグループにアクセスできるかどうかを確認します。インバウンド 0.0.0.0/0 のセキュリティグループにアクセス可能なポートがあり、これがルールパラメータで指定されていない場合、ルールは NON_COMPLIANT です。編集でルールのパラメータに、現在0.0.0.0/0で許可しているTCP、UDPポートを追加。
internet-gateway-authorized-vpc-onlyインターネットゲートウェイ (IGW) が承認された Amazon Virtual Private Cloud (VPC) にのみ接続されていることを確認します。IGW が承認された VPC に接続されていない場合、ルールは NON_COMPLIANT です。 編集でルールのパラメータに現在のVPCのIDを追加した。

これ以外にも大分修正して残り20くらいまで減らした。
ちゃんと修正していくと、かなりリソースを綺麗(最適化)にできそうだ。
月あたりいくらかかるか次第だが、そこまで料金かからないなら有効にしておきたい。