

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Config のカスタムコンフォーマンスパックのテンプレートの作成
<a name="custom-conformance-pack"></a>

カスタムコンフォーマンスパックは、AWS Config ルールと修復アクションの集合で、アカウントや AWS リージョン、または AWS Organizations の組織全体でまとめてデプロイできます。

カスタムコンフォーマンスパックを作成するには、「**テンプレートをカスタマイズする**セクション」の手順を実行し、使用する [AWS Config マネージドルール](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html)または [AWS Config カスタムルール](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html)のリストを含む YAML ファイルを作成します。

**Topics**
+ [用語](#custom-conformance-pack-terminology)
+ [テンプレートのカスタマイズ](#create-yaml-file.title)

## 用語
<a name="custom-conformance-pack-terminology"></a>

*AWS Config マネージドルール*は、AWS Config が所有する事前に定義済みのルールです。

*AWS Config カスタムルール*は、最初から作成するルールです。

AWS Config カスタムルールを作成するには、Lambda 関数 ([AWS Lambda デベロッパーガイド](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-concepts.html#gettingstarted-concepts-function)) を使用する方法と、ポリシーをコード化する言語である Guard ([Guard GitHub リポジトリ](https://github.com/aws-cloudformation/cloudformation-guard)) を使用する方法の 2 つがあります。AWS Lambda で作成された AWS Config カスタムルールは *AWS Config カスタム Lambda ルール*と呼ばれ、Guard で作成された AWS Config カスタムルールは *AWS Config カスタムポリシールール*と呼ばれます。

## テンプレートのカスタマイズ
<a name="create-yaml-file.title"></a>

 **YAML ファイルの作成** 

YAML ファイルを作成するには、テキストエディタを開き、ファイルを *.yaml* として保存します。

**注記**  
ファイルには**パラメータ**および**リソース**セクションがあります。

** パラメータ**

YAML ファイルの `Parameters` セクションは、`Resources` セクションで後から追加する一連の AWS Config ルールのルールパラメータです。`Parameters` セクションを作成するには、次のコードブロックをコピーして YAML ファイルに貼り付け、必要に応じてカスタマイズし、ルールパラメータごとに繰り返します。

```
Parameters:    
    NameOfRuleParamNameOfRuleParameter: 
        Default: Parameter value
        Type: Type    
    ...
```

例: 

```
Parameters:
    IamPasswordPolicyParamMinimumPasswordLength:
        Default: '14'
        Type: String
```

**注記**  
カスタムコンフォーマンスパックの作成に AWS Config ルールを選択する場合、アカウント内で AWS Config ルールに対して評価されるリソースがプロビジョニングされていることを確認してください。

1. パラメータセクションの `Parameters:` の次の行は、*NameOfRule* \$1 Param \$1 *NameOfRuleParameter* の順序で連結された文字列です。

   1. ルール用に作成した一貫性のある名前を `NameOfRule` に置き換えます。例えば、**iam-password-policy **ルールには **IamPasswordPolicy** などと命名することができます。

   1. 「`Param`」と入力します。

   1. 次に、特定のルールのルールパラメータ名を `NameOfRuleParameter` に置き換えます。AWS Config マネージドルールでは、ルールパラメータ名は [AWS Config マネージドルールのリスト](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html)にあります (例: **MinimumPasswordLength** は **iam-password-policy** ルールのルールパラメータ名)。AWS Config カスタムルールでは、ルールパラメータの名前は、ルールを作成したときに選択した名前です。

1. AWS Config マネージドルールを使用している場合、マネージドルールのリストで適切な AWS Config ルールを見つけることで、特定のルールの `Default` および `Type` に対して許容される値がわかります。AWS Config カスタムルールでは、ルールを作成するときに選択した値を使用します。
**注記**  
各パラメータについて、`Type` は必ず指定する必要があります。`Type` は、「String」、「int」、「double」、「CSV」、「boolean」および「StringMap」のいずれかから選択できます。

**リソース**

`Resources` セクションには、カスタムコンフォーマンスパックに追加されているルールが一覧表示されます。次の `Resources` ブロックを `Parameters` セクションのすぐ下に追加し、必要に応じてカスタマイズし、ルールごとに繰り返します。仕様の詳細については、「[AWS::Config::ConfigRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html#aws-resource-config-configrule-syntax)」を参照してください。

```
Resources:
     NameOfRule:
        Properties:
            ConfigRuleName: ActualConfigRuleName  
            InputParameters:
                NameOfRuleParameter: !Ref NameOfRuleParamNameOfRuleParameter
            Source:
                Owner: Owner
                SourceIdentifier: SOURCE_IDENTIFIER
        Type: AWS::Config::ConfigRule
     ...
```

例: 

```
Resources:
    IamPasswordPolicy:
        Properties:
            ConfigRuleName: iam-password-policy
            InputParameters:
                MinimumPasswordLength: !Ref IamPasswordPolicyParamMinimumPasswordLength
            Source:
                Owner: AWS
                SourceIdentifier: IAM_PASSWORD_POLICY
        Type: AWS::Config::ConfigRule
```

**注記**  
カスタムコンフォーマンスパックの作成に AWS Config ルールを選択する場合、アカウント内で AWS Config ルールに対して評価されるリソースがプロビジョニングされていることを確認してください。詳細については、[[サポートされるリソースタイプ](https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html)] を参照してください。

1. `NameOfRule` セクションで作成したのと同じ名前に `Parameters` を置き換えます。

1. AWS Config マネージドルールでは、適切なルールページのタイトルを添えて[AWS Config マネージドルールのリスト](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html)の該当するルールページのタイトルに `ActualConfigRuleName` を置き換えます。AWS Config カスタムルールでは、ルールの作成時に選択したConfig ルール名を使用します。

1. `Parameters` セクションで使用したのと同じ名前に `NameOfRuleParameter` を置き換えます。コロンの後に、`Parameters` セクションで作成した `!Ref` \$1 *NameOfRule* \$1 Param \$1 *NameOfRuleParameter* の同じ連結した文字列をコピーして貼り付けます。

1. `Owner` を適切な値に変更します。
**注記**  
**AWS Config マネージドルール**  
AWS Config マネージドルールでは、`Owner` の値は `AWS` になります。  
**AWS Config カスタムルール**  
Guard で作成された AWS Config カスタムルールでは、`Owner` の値は `CUSTOM_POLICY` になります。Lambda で作成された AWS Config カスタムルールでは、`Owner` の値は `CUSTOM_LAMBDA` になります。

1. `SOURCE_IDENTIFIER` を適切な値に変更します。
**注記**  
**AWS Config マネージドルール**  
AWS Config マネージドルールでは、[AWS Config マネージルールのリスト](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html)選択するルールのリンクに従って、識別子をコピーします (例： **access-keys-rotated** ルールのソース識別子は **ACCESS\$1KEYS\$1ROTATED**)。   
**AWS Config カスタムルール**  
Lambda で作成した AWS Config カスタムルールの場合、`SourceIdentifier` はルールの AWS Lambda 関数 (`arn:aws:lambda:us-east-2:123456789012:function:ActualConfigRuleName` など) の Amazon リソースネーム (ARN) です。Guardで作成した AWS Config カスタムルールの場合、このフィールドは不要です。

その結果、記入したカスタムコンフォーマンスパックは、**iam-password-policy**、**access-keys-rotated**、および **iam-user-unused-passuld-check** のようになるはずです。これは、これらの AWS Config マネージドルールを使用した例です。

```
Parameters:
    IamPasswordPolicyParamMinimumPasswordLength:
        Default: '14'
        Type: String
    AccessKeysRotatedParamMaxAccessKeyAge:
        Default: '90'
        Type: String
    IamUserUnusedCredentialsCheckParamMaxCredentialUsageAge:
        Default: '45'
        Type: String
Resources:
    IamPasswordPolicy:
        Properties:
            ConfigRuleName: iam-password-policy
            InputParameters:
                MinimumPasswordLength: !Ref IamPasswordPolicyParamMinimumPasswordLength
            Source:
                Owner: AWS
                SourceIdentifier: IAM_PASSWORD_POLICY
        Type: AWS::Config::ConfigRule    
    AccessKeysRotated:
        Properties:
            ConfigRuleName: access-keys-rotated
            InputParameters:
                maxAccessKeyAge: !Ref AccessKeysRotatedParamMaxAccessKeyAge
            Source:
                Owner: AWS
                SourceIdentifier: ACCESS_KEYS_ROTATED
        Type: AWS::Config::ConfigRule
    IamUserUnusedCredentialsCheck:
        Properties:
            ConfigRuleName: iam-user-unused-credentials-check
            InputParameters:
                maxCredentialUsageAge: !Ref IamUserUnusedCredentialsCheckParamMaxCredentialUsageAge
            Source:
                Owner: AWS
                SourceIdentifier: IAM_USER_UNUSED_CREDENTIALS_CHECK
        Type: AWS::Config::ConfigRule
```