【AWS】StackSet을 사용하여 다른 계정의 AWS Config Rule 활성화
6772 단어 CloudFormationawsconfigAWS
다른 계정의 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
이 환경은
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
이 부분을 참조하면 템플릿을 만들 수 있습니다. 몇가지 알기 쉬운 포인트로서
MaximumExecutionFrequency
와 InputParameters
가 없어졌습니다. 이 규칙은 필요하지 않으므로 설명하지 않습니다. 다만, 새로 나온 것이 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
로 확장하면 완료됩니다. 다른 계정에서 규칙이 활성화되어 있어야 합니다.요약
이와 관련된 복구 옵션의 템플릿 설명 방법을 요약하고 싶습니다.
Reference
이 문제에 관하여(【AWS】StackSet을 사용하여 다른 계정의 AWS Config Rule 활성화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/chittai/items/b2effed94f7442bc785d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【AWS】StackSet을 사용하여 다른 계정의 AWS Config Rule 활성화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chittai/items/b2effed94f7442bc785d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)