【AWS】StackSet을 사용하여 다른 계정의 AWS Config Rule 활성화

다른 계정의 AWS Config Rule을 활성화하고 싶습니다.



CloudFormation을 사용하여 다른 계정의 설정을 변경하는 경우 StackSets를 사용합니다.

StackSets 샘플을 보면 Config Rule을 설정하는 샘플 템플릿이 있습니다. 이것을 참고로, 다른 룰을 유효화할 때에 어떻게 템플릿을 작성하는지를 정리해 두려고 합니다.

환경 전제



이 환경은 Organization에서 동일한 OU에있는 계정을 대상으로합니다. 관리 계정 A에서 다른 계정 B의 Config Rule을 활성화합니다. 활성화하는 규칙은 관리되는 규칙을 대상으로 합니다.

StackSets 템플릿을 만드는 방법



StackSets의 템플릿은 YAML 파일로 선언적으로 실시합니다만, 순서대로 작성 방법에 대해서 봐 갑니다.

Config 설정값



우선, 템플릿에 기술하는 내용입니다만, 기본은 Config Rule을 GUI로부터 유효화하려고 했을 때에 나오는 화면의 설정치가 됩니다. 이번에는 예로 ec2-stopped-instance를 선택해 보겠습니다. 여기서 포인트는 トリガールールのパラメータ입니다. 이는 트리거가 設定変更일 때와 定期的의 두 패턴의 경우가 있기 때문입니다. 그리고 룰의 파라미터도 있는 경우와 없는 경우가 있습니다.

즉, 패턴으로는 아래 4가지로 나눌 수 있습니다. 이번에는 2와 3에 대해 보고 싶습니다. 1. 설정 변경 + 파라미터 있음 1. 설정 변경 + 파라미터 없음 1. 정기적 + 파라미터 있음 1. 정기적 + 파라미터 없음 YAML 전체 앞에서 설명한 번호 3에 해당하는 ec2-stopped-instance를 활성화하는 YAML을 살펴 보겠습니다. 여기서 하는 것은 규칙을 활성화하는 것에 대한 설명이므로 전체 설명은 하지 않고 대상으로 좁혀 설명합니다. AWSTemplateFormatVersion: 2010-09-09 Description: Enables an AWS Config rules Metadata: AWS::CloudFormation::Interface: ParameterGroups: - Label: default: Common Configuration Parameters: - Frequency - Label: default: Rule ec2-stopped-instance Configuration Parameters: - AllowedDays ParameterLabels: Frequency: default: Frequency AllowedDays: default: AllowedDays Parameters: AllowedDays: Type: String Description: "[Option] The number of days an ec2 instance can be stopped before it is NON_COMPLIANT." Default: 30 Frequency: Type: String Default: 24hours Description: Maximum rule execution frequency AllowedValues: - 1시간 - 3시간 - 6시간 - 12hours - 24시간 Conditions: HasAllowedDays: !Not - !Equals - !Ref AllowedDays - "" Mappings: Settings: FrequencyMap: 1hour : One_Hour 3hours : Three_Hours 6hours : Six_Hours 12hours : Twelve_Hours 24hours : TwentyFour_Hours Resources: CheckForStoppedInstances: Type: AWS::Config::ConfigRule Properties: ConfigRuleName: CheckForStoppedInstances Description: Checks whether there are instances stopped for more than the allowed number of days. MaximumExecutionFrequency: !FindInMap - 설정 - FrequencyMap - !Ref Frequency Source: Owner: AWS SourceIdentifier: EC2_STOPPED_INSTANCE InputParameters: AllowedDays: !If - HasAllowedDays - !Ref AllowedDays - !Ref AWS::NoValue 여기서 규칙을 정의하는 것은 Resource 절입니다. 이것은 정기적이므로 얼마나 멀리 규칙을 확인할지 결정해야합니다. 이것을 설정하고 있는 것이 MaximumExecutionFrequency 입니다. 위쪽을 보면 알 수 있지만 5 가지 선택 중에서 선택합니다. Source의 SourceIdentifier가 실제로 어떤 관리 규칙을 대상으로 하는지를 설명합니다. 그리고 InputParameters 로 파라미터를 지정합니다. 이것은 위의 Parameters 절에 설명되어 있습니다. 즉, 정리적으로 정기적 + 파라미터가 있는 경우, 정기적으로 필요한 파라미터는 MaximumExecutionFrequency 로 파라미터의 설정에 필요한 것은 InputParameters 인 것을 알 수 있습니다. 그 이외는 설정 변경+파라미터 없이도 같습니다. Resources: CheckForStoppedInstances: Type: AWS::Config::ConfigRule Properties: ConfigRuleName: CheckForStoppedInstances Description: Checks whether there are instances stopped for more than the allowed number of days. MaximumExecutionFrequency: !FindInMap - 설정 - FrequencyMap - !Ref Frequency Source: Owner: AWS SourceIdentifier: EC2_STOPPED_INSTANCE InputParameters: AllowedDays: !If - HasAllowedDays - !Ref AllowedDays - !Ref AWS::NoValue 단, 매회 규칙의 GUI를 확인하는 것도 귀찮기 때문에 필요한 파라미터 등은 아래 URL에서 확인하는 것도 가능합니다. htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 콘후 ぃ / ぁ st / ゔ ぇぺぺ ぐ で / 마나게 드 루 ぇ s-by- 아 ws- 콘후 ぃ g. HTML

그런 다음 設定変更+パラメータ無し에 대해 확인합니다. 이것은 eip-attached를 예로 들어 보겠습니다. 이번에는 GUI가 아니라 위의 문서를 확인하겠습니다.
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 콘후 ぃ / ぁ st / ゔ ぇぺぺ ぐ い で / 에 p 아들 ぇ d. HTML
  • 식별자: EIP_ATTACHED
  • 트리거 타입: 설정 변경
  • 파라미터: 없음

  • 이 부분을 참조하면 템플릿을 만들 수 있습니다. 몇가지 알기 쉬운 포인트로서 MaximumExecutionFrequencyInputParameters가 없어졌습니다. 이 규칙은 필요하지 않으므로 설명하지 않습니다. 다만, 새로 나온 것이 Scope입니다.
    Resources:
      CheckForEIPAttached:
        Type: AWS::Config::ConfigRule
        Properties:
          Description: Checks whether all EIP addresses allocated to a VPC are attached to EC2 instances or in-use ENIs.
          Source:
            Owner: AWS
            SourceIdentifier: EIP_ATTACHED
          Scope:
            ComplianceResourceTypes:
              - AWS::EC2::EIP
    

    실제로 규칙을 GUI로 확인하면 아래와 같이 되어 있습니다.

    구성 변경의 경우 대상 자원을 지정해야 합니다. 아래에서 확인해 주시면 좋겠습니다만, GUI 화면에서 본 것을 전기하는 편이 확실하다고 생각합니다. 이번에는 AWS::EC2::EIP입니다. htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 콘후 ぃ / ぁ st / ゔ ぇ ぺ ぺ ぐ で / れそう r せ こ ん ぃ g ー れ ふ れせ. html

    이상으로부터, 設定変更+パラメータ無し 를 정리하면. 구성 변경에서는 Scope에서 대상 리소스를 지정해야 하며 InputParameters에 대한 설명이 필요하지 않습니다.

    그런 다음 이것을 StackSets로 확장하면 완료됩니다. 다른 계정에서 규칙이 활성화되어 있어야 합니다.

    요약



    이와 관련된 복구 옵션의 템플릿 설명 방법을 요약하고 싶습니다.

    좋은 웹페이지 즐겨찾기