

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為 的自訂一致性套件建立範本 AWS Config
<a name="custom-conformance-pack"></a>

自訂一致性套件是 AWS Config 規則和修補動作的唯一集合，您可以在 帳戶和 AWS 區域中一起部署，或在 中跨組織部署 AWS Organizations。

若要製作自訂一致性套件，請遵循下列**自訂範本**一節中的步驟，撰寫您要使用的 YAML 檔案，其包含[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)清單。

**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))，使用 AWS Lambda policy-as-code語言。 AWS Config 自訂規則稱為 *AWS Config Custom Lambda 規則*，而使用 Guard 建立 AWS Config 的自訂規則稱為*AWS Config 自訂政策規則*。

## 自訂範本
<a name="create-yaml-file.title"></a>

 **建立您的 YAML 檔案** 

若要建立 YAML 檔案，請開啟文字編輯器，並將檔案儲存為 *.yaml*。

**注意**  
您的檔案將包含**參數**和**資源**區段。

**參數**

YAML 檔案中的 `Parameters`區段適用於您將稍後在 `Resources`區段中新增的一組 AWS Config 規則的規則參數。藉由將下列程式碼區塊複製並貼至 YAML 檔案中，並視需要進行自訂，且針對每個規則參數重複此步驟，即可建立 `Parameters` 區段。

```
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` 區段會列出新增至「自訂一致性套件」的規則。直接在 `Parameters` 區段下方新增下列 `Resources` 區塊，並視需要進行自訂，且針對每個規則重複此步驟。如需規格的詳細資訊，請參閱《[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. 以您在 `Parameters` 區段中建立的相同名稱取代 `NameOfRule`。

1. 對於 AWS Config 受管規則，將 取代`ActualConfigRuleName`為[AWS Config 受管規則清單上適當規則頁面的](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html)標題。針對 AWS Config 自訂規則，請使用您在建立規則時選擇的 Config Rule 名稱。

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 函數的 Amazon Resource Name (ARN)，例如 `arn:aws:lambda:us-east-2:123456789012:function:ActualConfigRuleName`。對於使用 Guard 建立的 AWS Config 自訂規則，不需要此欄位。

您填寫的自訂一致性套件應該會開始看起來類似以下內容，這是使用這些 AWS Config 受管規則的範例：**iam-password-policy**、**access-keys-rotated** 和 **iam-user-unused-credentials-check**。

```
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
```