0Pricing
AWS Solutions Architect · レッスン

AWS Configルールと修復

マネージドルールとカスタムConfigルールをデプロイしてコンプライアンス違反のリソースを検出し、SSM Automationドキュメントで自動修復します。

「AWS Configルールと修復」はCoddyKit上の無料AWS Solutions Architectレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Solutions Architect学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Solutions Architectコースには全4レッスンが含まれています。

AWS Configとは

AWS Configは、AWSリソースの構成状態を継続的に記録し、その構成を望ましいルールに照らして評価する構成監査サービスです。「誰が何をしたか」を記録するCloudTrailとは異なり、AWS Configはこのリソースは現在どのような状態か、また過去の任意の時点でどのような状態だったかを確認できます。さらに、この構成はポリシーに準拠しているかという問いにも答えられるため、ガバナンスとコンプライアンスに最適なサービスです。

構成項目と構成履歴

AWS Configがリソースを記録すると、ある時点におけるリソースの属性、関係、メタデータのスナップショットである構成項目(CI)が作成されます。リソースが変更されるたびに、新しいCIが記録されます。AWS Configは各リソースの完全な構成履歴を保持するため、セキュリティグループが数か月にわたってどのように変化したか、またルールが追加または削除された正確な時刻を確認できます。CIはS3バケットに配信され、オプションでCloudWatch Eventsにも配信できます。

# Get the full configuration history for an EC2 security group
aws configservice get-resource-config-history \
  --resource-type AWS::EC2::SecurityGroup \
  --resource-id sg-0abc1234def567890 \
  --limit 10 \
  --query 'configurationItems[].{Time:configurationItemCaptureTime,Status:configurationItemStatus}'

AWS Configの有効化

AWS Configを使い始めるには、記録するリソースタイプを指定して構成レコーダーを作成し、S3バケットと、オプションで変更通知用のSNSトピックを指定した配信チャネルを作成します。サポートされているすべてのリソースタイプを記録することも、特定のサブセットだけを記録することもできます。構成アグリゲーターを使用すると、複数のアカウントとリージョンのConfigデータを1つのビューに集約し、組織全体のコンプライアンスレポートを作成できます。

# Enable AWS Config recording for all resource types
aws configservice put-configuration-recorder \
  --configuration-recorder \
    name=default,roleARN=arn:aws:iam::111122223333:role/AWSConfigRole \
  --recording-group allSupported=true,includeGlobalResourceTypes=true

# Set up delivery channel
aws configservice put-delivery-channel \
  --delivery-channel \
    name=default,s3BucketName=my-config-bucket-111122223333,snsTopicARN=arn:aws:sns:us-east-1:111122223333:ConfigChanges

aws configservice start-configuration-recorder --configuration-recorder-name default

AWS Configルール:マネージドルール

Configルールは、リソースに求められる構成状態を定義します。AWS Managed Configルールは、一般的なコンプライアンスチェックを対象とした、AWS提供の事前構築済みルールです。たとえば、s3-bucket-public-read-prohibitedはS3バケットがパブリック読み取り可能になっていないことをチェックし、ec2-instance-no-public-ipはEC2インスタンスにパブリックIPが設定されていないことをチェックします。また、iam-password-policyはアカウントのパスワードポリシーが複雑性要件を満たしていることを検証します。300を超えるマネージドルールを利用できます。

# Add the managed rule to check S3 buckets are not publicly readable
aws configservice put-config-rule \
  --config-rule '{
    "ConfigRuleName": "s3-bucket-public-read-prohibited",
    "Source": {
      "Owner": "AWS",
      "SourceIdentifier": "S3_BUCKET_PUBLIC_READ_PROHIBITED"
    },
    "Scope": {
      "ComplianceResourceTypes": ["AWS::S3::Bucket"]
    }
  }'

# View compliance status of all rules
aws configservice describe-compliance-by-config-rule \
  --query 'ComplianceByConfigRules[].{Rule:ConfigRuleName,Compliance:Compliance.ComplianceType}'

Lambdaを使用したカスタムConfigルール

AWS Managedルールで要件を満たせない場合は、AWS Lambda関数を使用してカスタムConfigルールを作成できます。Lambdaは構成項目をイベントペイロードとして受け取り、COMPLIANTまたはNON_COMPLIANTの判定結果を返す必要があります。カスタムルールでは、組織固有の命名規則、必須タグ、承認済みAMI IDなど、コンプライアンスチームが必要とする任意のロジックを適用できます。ルールは変更時(リソースが変更されたとき)、定期的(1、3、6、12、24時間ごと)、またはその両方で評価できます。

# Register a custom Lambda-backed Config rule
aws configservice put-config-rule \
  --config-rule '{
    "ConfigRuleName": "required-tags-enforcer",
    "Source": {
      "Owner": "CUSTOM_LAMBDA",
      "SourceIdentifier": "arn:aws:lambda:us-east-1:111122223333:function:RequiredTagsChecker",
      "SourceDetails": [{
        "EventSource": "aws.config",
        "MessageType": "ConfigurationItemChangeNotification"
      }]
    },
    "Scope": {
      "ComplianceResourceTypes": ["AWS::EC2::Instance","AWS::S3::Bucket"]
    }
  }'

CloudFormation Guardによるプロアクティブルール

Configは、ポリシーをコードとして記述する言語であるAWS CloudFormation Guardを使用したプロアクティブルールにも対応しています。プロアクティブルールは、CloudFormation、AWS CDK、Terraform Cloudを通じてリソースが作成される前に評価を行います。そのため、準拠していない構成を本番環境に存在させた後ではなく、デプロイ時に検出できます。これにより、インフラストラクチャパイプラインにおけるコンプライアンスを左にシフトできます。プロアクティブ評価は比較的新しい機能であり、SAA-C03試験ではシフトレフトガバナンスのシナリオで扱われる可能性があります。

SSMによる自動修復

Configルールを自動修復アクションと組み合わせることで、準拠していないリソースを人手を介さずに修正できます。修復アクションには、AWS Systems Manager(SSM)Automationドキュメントを使用します。たとえば、誰かがパブリックアクセスを有効にしたことでS3バケットが非準拠になった場合、ConfigはAWS-DisableS3BucketPublicReadWrite SSMドキュメントを自動的に実行し、バケットのパブリックアクセスブロックを再度有効にできます。修復は自動(即時)または手動(オンデマンドで実行)に設定できます。

# Add automatic remediation to a Config rule
aws configservice put-remediation-configurations \
  --remediation-configurations '[
    {
      "ConfigRuleName": "s3-bucket-public-read-prohibited",
      "TargetType": "SSM_DOCUMENT",
      "TargetId": "AWS-DisableS3BucketPublicReadWrite",
      "Parameters": {
        "S3BucketName": {"ResourceValue": {"Value": "RESOURCE_ID"}},
        "AutomationAssumeRole": {"StaticValue": {"Values": ["arn:aws:iam::111122223333:role/ConfigRemediationRole"]}}
      },
      "Automatic": true,
      "MaximumAutomaticAttempts": 3,
      "RetryAttemptSeconds": 60
    }
  ]'

設定タイムラインとリソースの関係

AWS Config のコンソールにあるリソースタイムラインには、リソースに対するすべての設定変更がタイムラインとして表示されます。任意の時点までさかのぼり、その時点でリソースがどのような状態だったかを正確に確認できます。ほかのリソースとの関係(たとえば、どのセキュリティグループがアタッチされていたか、どの IAM ロールが関連付けられていたか)も確認できます。関係をクリックすると、関連するリソースのタイムラインに移動します。これにより、Config は根本原因分析に非常に役立ちます。どの変更によって本番環境に障害が発生したのかを正確に特定できます。

# Get current compliance status for all EC2 instances
aws configservice get-compliance-details-by-resource \
  --resource-type AWS::EC2::Instance \
  --resource-id i-0123456789abcdef0 \
  --query 'EvaluationResults[].{Rule:EvaluationResultIdentifier.EvaluationResultQualifier.ConfigRuleName,Compliance:ComplianceType}'

アカウント間での Config の集約

設定アグリゲータは、複数の AWS アカウントとリージョンの Config データを 1 つのアカウントに集約し、コンプライアンスを一元的にレポートできるようにします。AWS Organizations では、管理アカウントにアグリゲータを作成すると、個別の承認を必要とせずにすべてのメンバーアカウントを自動的に含めることができます。アグリゲータは高度なクエリにも対応しており、SQL に似たインターフェイスを使って、組織全体の非準拠リソースを数秒で検索できます。

# Query all non-compliant resources across an organisation using Advanced Query
aws configservice select-aggregate-resource-config \
  --configuration-aggregator-name OrgAggregator \
  --expression "SELECT resourceId, resourceType, accountId, awsRegion
    WHERE complianceType = 'NON_COMPLIANT'
    AND resourceType = 'AWS::S3::Bucket'"
  --query 'Results'

大規模な修復

何千もの非準拠リソースを管理する場合、Config の修復例外を使うと、文書化した理由と期間を設定して特定のリソースを除外できます。これにより、正当な特殊ケースに対して誤って修復を実行することを避けられます。大規模なクリーンアップでは、コンソールから手動修復を一括で実行するか、Systems Manager State Manager の関連付けを使用して、スケジュールに従い EC2 インスタンス群に望ましい設定を適用できます。Config の検出機能と SSM の適用機能を組み合わせる方法です。

# Add a remediation exception for a specific resource
aws configservice put-remediation-exceptions \
  --config-rule-name s3-bucket-public-read-prohibited \
  --resource-keys ResourceType=AWS::S3::Bucket,ResourceId=my-public-website-bucket \
  --message 'Static website hosting requires public access' \
  --expiration-time 2025-01-01T00:00:00Z

AWS Config と CloudTrail の比較

SAA-C03 でよく出題されるのが、Config と CloudTrail の違いです。CloudTrailは「誰が、いつ、どこから、何を行ったか」に答えます(API 呼び出しの監査ログ)。AWS Configは「リソースは現在どのような状態か、また時間の経過とともにどのような状態だったか」に答えます(設定状態の履歴とコンプライアンス)。両者は補完関係にあります。CloudTrail で誰かが午後 3 時に ModifySecurityGroup を呼び出したことを確認し、Config でセキュリティグループの変更前後の状態を確認できます。完全なセキュリティガバナンスのために、両方を組み合わせて使用してください。

クイックチェック

このレッスンで学んだ AWS Solutions Architect(SAA-C03)の概念を確認してください。

レッスンのまとめ

このレッスンでは、AWS Config は時間の経過に伴う設定状態を記録すること、マネージドルールとカスタムルールは自動またはオンデマンドの評価によって数百種類のリソース属性をチェックすること、そしてSSM Automation による修復は人の介入なしに非準拠リソースを自動修正できることを学びました。次は、エンタープライズ規模のガバナンスに向けた Conformance Packs と Organisation Trails について学びます。

よくある質問

「AWS Configルールと修復」レッスンは無料ですか?

はい。「AWS Configルールと修復」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Solutions Architectコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Solutions Architectコースには全4レッスンが含まれています。

「AWS Configルールと修復」で何を学びますか?

マネージドルールとカスタムConfigルールをデプロイしてコンプライアンス違反のリソースを検出し、SSM Automationドキュメントで自動修復します。 ブラウザで直接実行するハンズオンコードでAWS Solutions Architectを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AWS Solutions Architectを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAWS Solutions Architectは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「AWS Configルールと修復」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAWS Solutions Architectレッスンでコードを書いて実行できますか?

はい。すべてのAWS Solutions Architectレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. CloudTrailの証跡とイベント履歴
  2. CloudTrail Insightsとログファイルの整合性
  3. AWS Configルールと修復
  4. Conformance Packsと組織の証跡
← AWS Solutions Architectに戻る