CloudFormationのドリフト監視

f:id:ktt1:20200620091829p:plain

CloudFormationのドリフト監視のConfigルール

ガバナンスの取れない組織でIaC使う際の永遠のテーマのひとつである「勝手に手動変更」の監視方法としてAWS Configでマネージドのルールが用意されているみたいです。

テンプレートからでもサクッとつくれるけど、CFnからサクッと作成構築用

AWSTemplateFormatVersion: "2010-09-09"
Description: ""
Resources:
    IAMRole:
        Type: "AWS::IAM::Role"
        Properties:
            Path: "/"
            RoleName: "CloudFormationDiff"
            AssumeRolePolicyDocument: "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":[\"config.amazonaws.com\",\"cloudformation.amazonaws.com\"]},\"Action\":\"sts:AssumeRole\"}]}"
            MaxSessionDuration: 3600
            ManagedPolicyArns: 
              - "arn:aws:iam::aws:policy/service-role/AWSConfigRole"
              - "arn:aws:iam::aws:policy/AWSCloudFormationFullAccess"
            Description: "Allows CloudFormation to create and manage AWS stacks and resources on your behalf."

    ConfigConfigRule:
        Type: "AWS::Config::ConfigRule"
        Properties:
            ConfigRuleName: "cloudformation-stack-drift-detection-check"
            Description: "cloudformation stack drift detection check"
            Scope: 
                ComplianceResourceTypes: 
                  - "AWS::CloudFormation::Stack"
            Source: 
                Owner: "AWS"
                SourceIdentifier: "CLOUDFORMATION_STACK_DRIFT_DETECTION_CHECK"
            InputParameters:
              cloudformationRoleArn: !Sub arn:aws:iam::${AWS::AccountId}:role/${IAMRole}
            MaximumExecutionFrequency: "TwentyFour_Hours"

スタックに対してドリフト検出を定期的にかけるような感じなので、ドリフト検出対象外のリソースはもちろん通知されないみたい。 はやくすべて検出対象になって欲しい。

というより、手動変更を防ぐ対策の方が大切なんだよなぁ。