

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

# AMS 中的直接變更模式
<a name="direct-change-mode-section"></a>

**Topics**
+ [直接變更模式入門](dcm-get-started.md)
+ [安全與合規](dcm-security-n-compliance.md)
+ [直接變更模式中的變更管理](dcm-change-mgmt.md)
+ [使用直接變更模式建立堆疊](dcm-creating-stacks.md)
+ [直接變更模式使用案例](dcm-use-cases.md)

AWS Managed Services (AMS) 直接變更模式 (DCM) 透過提供 AMS Advanced Plus 和 Premium 帳戶的原生 AWS 存取權來佈建和更新 AWS 資源，以擴展 AMS 進階變更管理。使用 DCM 時，您可以選擇使用原生 AWS API （主控台或 CLI/SDK) 或 AMS 進階變更管理變更請求 (RFCs)，而且在任何一種情況下，AMS 都完全支援資源和變更，包括監控、修補程式、備份、事件回應管理。透過 DCM 佈建的資源會在 AMS 服務知識管理系統 (SKMS) 中註冊、加入 AMS 受管 Active Directory 網域 （如適用），並執行 AMS 管理代理程式。使用現有的工具 （例如 CloudFormation、 AWS SDK 和 CDK) 來開發和部署 AMS 受管 CloudFormation 堆疊。

**注意**  
直接變更模式不會移除 AMS 變更管理 RFCs。您可以使用 DCM 完整存取 AMS RFCs。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/Qu1aKIUPT28?si=KrOqr8pniwfh7Nob/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/Qu1aKIUPT28?si=KrOqr8pniwfh7Nob)


# 直接變更模式入門
<a name="dcm-get-started"></a>

首先檢查先決條件，然後在符合資格的 AMS Advanced 帳戶中提交變更請求 (RFC)。

1. 確認您想要與 DCM 搭配使用的帳戶符合要求：
   + 帳戶是 AMS Advanced Plus 或 Premium。
   + 帳戶未啟用 Service Catalog。我們目前不支援同時將帳戶加入 DCM 和服務目錄。如果您已加入 Service Catalog，但對 DCM 感興趣，請與您的雲端服務交付管理員 (CSDM) 討論您的需求。如果您決定從 Service Catalog 切換到 DCM、離機 Service Catalog，若要這樣做，請在下面的變更請求中加入 ask。如需 AMS 中 Service Catalog 的詳細資訊，請參閱 [AMS 和服務目錄](https://docs.aws.amazon.com/managedservices/latest/userguide/ams-service-catalog.html)。

1. 使用 管理 \$1 受管帳戶 \$1 直接變更模式 \$1 啟用變更類型 (ct-3rd4781c2nnhp) 提交變更請求 (RFC)。如需逐步解說範例，請參閱[直接變更模式 \$1 啟用](https://docs.aws.amazon.com/managedservices/latest/ctref/management-managed-direct-change-mode-enable.html)。

   處理 CT 之後，預先定義的 IAM 角色`AWSManagedServicesCloudFormationAdminRole`和 `AWSManagedServicesUpdateRole` 會在指定的帳戶中佈建。

1. 使用內部聯合程序，將適當的角色指派給需要 DCM 存取的使用者。

**注意**  
您可以指定任意數量的 SAMLIdentityProviders、 AWS Services 和 IAM 實體 （角色、使用者等） 來擔任角色。您必須提供至少一個：`SAMLIdentityProviderARNs`、 `IAMEntityARNs`或 `AWSServicePrincipals`。如需詳細資訊，請洽詢您公司的 IAM 部門或 AMS 雲端架構師 (CA)。

## 直接變更模式 IAM 角色和政策
<a name="dcm-gs-iam-roles-and-policies"></a>

在 帳戶中啟用直接變更模式時，會部署這些新的 IAM 實體：

`AWSManagedServicesCloudFormationAdminRole`：此角色會授予 CloudFormation 主控台的存取權、建立和更新 CloudFormation 堆疊、檢視偏離報告，以及建立和執行 CloudFormation ChangeSets。此角色的存取權是透過 SAML 供應商管理。

部署並連接到角色`AWSManagedServicesCloudFormationAdminRole`的受管政策如下：
+ AMS 進階多帳戶登陸區域 (MALZ) 應用程式帳戶
  + AWSManagedServices\$1CloudFormationAdminPolicy1
  + AWSManagedServices\$1CloudFormationAdminPolicy2
    + 此政策代表授予 的許可`AWSManagedServicesCloudFormationAdminRole`。您和合作夥伴使用此政策來授予帳戶中現有角色的存取權，並允許該角色啟動和更新帳戶中的 CloudFormation 堆疊。這可能需要額外的 AMS 服務控制政策 (SCP) 更新，以允許其他 IAM 實體啟動 CloudFormation 堆疊。
+ AMS 進階單一帳戶登陸區域 (SALZ) 帳戶
  + AWSManagedServices\$1CloudFormationAdminPolicy1
  + AWSManagedServices\$1CloudFormationAdminPolicy2
  + cdk-legacy-mode-s3-access 【內嵌政策】
  + AWS ReadOnlyAccess 政策

`AWSManagedServicesUpdateRole`：此角色會授予下游 AWS 服務 APIs的限制存取權。該角色部署的受管政策提供變動和非變動 API 操作，但一般限制變動操作 （例如Create/Delete/PUT)，針對某些服務，例如 IAM、KMS、GuardDuty、VPC、AMS 基礎設施資源和組態等。此角色的存取是透過 SAML 供應商管理。

部署並連接到角色`AWSManagedServicesUpdateRole`的受管政策如下：
+ AMS 進階多帳戶登陸區域 應用程式帳戶
  + AWSManagedServicesUpdateBasePolicy 
  + AWSManagedServicesUpdateDenyPolicy 
  + AWSManagedServicesUpdateDenyProvisioningPolicy 
  + AWSManagedServicesUpdateEC2AndRDSPolicy 
  + AWSManagedServicesUpdateDenyActionsOnAMSInfraPolicy
+ AMS 進階單一帳戶登陸區域帳戶
  + AWSManagedServicesUpdateBasePolicy 
  + AWSManagedServicesUpdateDenyProvisioningPolicy 
  + AWSManagedServicesUpdateEC2AndRDSPolicy 
  + AWSManagedServicesUpdateDenyActionsOnAMSInfraPolicy1 
  + AWSManagedServicesUpdateDenyActionsOnAMSInfraPolicy2

除此之外，受管政策`AWSManagedServicesUpdateRole`角色還`ViewOnlyAccess`連接了 AWS 受管政策。

# 安全與合規
<a name="dcm-security-n-compliance"></a>

安全與合規是 AMS Advanced 與身為客戶的您共同的責任。AMS Advanced Direct Change 模式不會變更此共同責任。

## 直接變更模式中的安全性
<a name="dcm-security"></a>

AMS Advanced 提供具有規範登陸區域、變更管理系統和存取管理的額外值。使用直接變更模式時，此責任模型不會變更。不過，您應該知道其他風險。

直接變更模式「更新」角色 （請參閱[直接變更模式 IAM 角色和政策](dcm-get-started.md#dcm-gs-iam-roles-and-policies)) 提供提升的許可，允許可存取該角色的實體變更您帳戶中 AMS 支援服務的基礎設施資源。隨著許可提高，根據資源、服務和動作，存在各種風險，尤其是在由於監督、錯誤或沒有遵守內部程序和控制架構而導致不正確的變更的情況下。

根據 AMS 技術標準，已識別下列風險並提出建議，如下所示。有關 AMS 技術標準的詳細資訊可透過 取得 AWS Artifact。若要存取 AWS Artifact，請聯絡您的 CSDM 以取得指示，或前往 [入門 AWS Artifact](https://aws.amazon.com/artifact/getting-started)。

**AMS-STD-001：標記**

<a name="AMS-STD-001"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/managedservices/latest/onboardingguide/dcm-security-n-compliance.html)

**AMS-STD-002：身分與存取管理 (IAM)**


| 標準 | 是否會中斷 | 風險 | 建議 | 
| --- | --- | --- | --- | 
| 4.7 不允許繞過變更管理程序 (RFC) 的動作，例如啟動或停止執行個體、建立 S3 儲存貯體或 RDS 執行個體等。只要在指派角色的邊界內執行動作，開發人員模式帳戶和自助式佈建模式服務 (SSPS) 就會豁免。 | 是。自助服務動作的目的可讓您執行繞過 AMS RFC 系統的動作。 | 安全存取模型是 AMS 的核心技術面向，而主控台或程式設計存取的 IAM 使用者會規避此存取控制。AMS 變更管理不會監控 IAM 使用者存取。存取只會記錄在 CloudTrail 中。 | IAM 使用者應該有時間限制，並根據最低權限和need-to-know授予許可。 | 

**AMS-STD-003：網路安全**

<a name="AMS-STD-003"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/managedservices/latest/onboardingguide/dcm-security-n-compliance.html)

**AMS-STD-007：記錄**

<a name="AMS-STD-007"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/managedservices/latest/onboardingguide/dcm-security-n-compliance.html)

與您的內部授權和身分驗證團隊合作，相應地控制直接變更模式角色的許可。

## 直接變更模式中的合規
<a name="dcm-compliance"></a>

直接變更模式與生產和非生產工作負載相容。您有責任確保遵守任何合規標準 （例如 PHI、HIPAA、PCI)，並確保使用直接變更模式符合您的內部控制架構和標準。

# 直接變更模式中的變更管理
<a name="dcm-change-mgmt"></a>

變更管理是 AMS Advanced 用來實作變更請求的程序。變更請求 (RFC) 是由您或 AMS Advanced 透過 AMS Advanced 界面建立的請求，用於對您的受管環境進行變更，並包含特定操作的 AMS Advanced 變更類型 (CT) ID。如需詳細資訊，請參閱[變更管理](https://docs.aws.amazon.com/managedservices/latest/userguide/ex-what-is.html)。

**注意**  
直接變更模式不會移除 AMS 變更管理 RFCs，您仍然可以使用 DCM 完整存取 AMS RFCs。

AMS 直接變更模式 (DCM) 透過提供 AMS Advanced Plus 和 Premium 帳戶的原生 AWS 存取權來佈建和更新 AWS 資源，以擴展 AMS 進階變更管理。已透過 IAM 角色授予直接變更模式許可的使用者，可以使用原生 AWS API 存取來佈建和變更其 AMS Advanced 帳戶中的資源。使用者仍然可以使用相同的 IAM 角色來使用 AMS 進階變更管理 RFCs。在這兩種情況下，AMS 都完全支援資源和變更，包括監控、修補、備份、事件回應管理。在這些帳戶中沒有適當角色的使用者，必須使用 AMS 進階變更管理 RFC 程序進行變更。

## 變更管理使用案例
<a name="dcm-cm-use-cases"></a>

基於安全考量，AMS Advanced 中的某些變更只能透過變更管理請求 (RFC) 程序來完成。`AWSManagedServicesCloudFormationAdminRole` 僅限於透過 CloudFormation (CFN) 採取的動作。如需如何透過 DCM 建立堆疊的詳細資訊，請參閱[使用直接變更模式建立堆疊](https://docs.aws.amazon.com/managedservices/latest/userguide/dcm-creating-stacks.html)。`AWSManagedServicesUpdateRole` 受限於下列動作。

如需每個變更類型的範例逐步解說，包括管理 \$1 受管帳戶 \$1 直接變更模式 \$1 啟用 (ct-3rd4781c2nnhp) 變更類型，請參閱 *AMS 進階變更類型參考*[依分類變更](https://docs.aws.amazon.com/managedservices/latest/ctref/classifications.html)類型區段中相關變更類型的「其他資訊」一節。

<a name="AMS-STD-007"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/managedservices/latest/onboardingguide/dcm-change-mgmt.html)

# 使用直接變更模式建立堆疊
<a name="dcm-creating-stacks"></a>

使用 在 CloudFormation 中啟動堆疊時，有兩個要求`AWSManagedServicesCloudFormationAdminRole`，以便 AMS 管理堆疊：
+ 範本必須包含 `AmsStackTransform`。
+ 堆疊名稱必須以字首開頭，`stack-`後面接著 17 個字元的英數字串。

**注意**  
若要成功使用 `AmsStackTransform`，您必須確認堆疊範本包含 `CAPABILITY_AUTO_EXPAND`功能，以便 CloudFormation (CFN) 建立或更新堆疊。您可以在 create-stack 請求中傳遞 `CAPABILITY_AUTO_EXPAND`來執行此操作。如果在範本中`AmsStackTransform`包含 時未確認此功能，CFN 會拒絕請求。如果您的範本中有轉換，CFN 主控台會確保您傳遞此功能，但當您透過其 APIs 與 CFN 互動時，可能會遺漏此功能。  
每當您使用下列 CFN API 呼叫時，都必須傳遞此功能：  
[CreateChangeSet](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateChangeSet.html)
[ CreateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html#API_CreateStack_RequestParameters)
[UpdateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html)

使用 DCM 建立或更新堆疊時，會在堆疊上執行 CFN 擷取和堆疊更新 CTs 的相同驗證和增強，如需詳細資訊[CloudFormation ，請參閱擷取指導方針、最佳實務和限制](https://docs.aws.amazon.com/managedservices/latest/appguide/cfn-author-templates.html)。例外情況是，AMS 預設安全群組 (SGs) 不會連接到 Auto Scaling 群組 (ASGs) 中的任何獨立 EC2 執行個體或 EC2 執行個體。當您使用獨立 EC2 執行個體或 ASGs 建立 CloudFormation 範本時，您可以連接預設 SGs。

**注意**  
IAM 角色現在可以使用 建立和管理`AWSManagedServicesCloudFormationAdminRole`。

AMS 預設 SGs 具有輸入和輸出規則，允許執行個體成功啟動，並在稍後透過 AMS 操作與您透過 SSH 或 RDP 存取。如果您發現 AMS 預設安全群組過於寬鬆，您可以使用更嚴格的規則建立自己的 SGs，並將其連接到執行個體，只要它仍然允許您和 AMS 操作在事件期間存取執行個體。

AMS 預設安全群組如下：
+ SentinelDefaultSecurityGroupPrivateOnly：可透過此 SSM 參數在 CFN 範本中存取 `/ams/${VpcId}/SentinelDefaultSecurityGroupPrivateOnly`
+ SentinelDefaultSecurityGroupPrivateOnlyEgressAll：可透過此 SSM 參數在 CFN 範本中存取 `/ams/${VpcId}/SentinelDefaultSecurityGroupPrivateOnlyEgressAll`

## AMS 轉換
<a name="dcm-cs-ams-transform"></a>

 將`Transform`陳述式新增至 CloudFormation 範本。這會新增 CloudFormation 巨集，以在啟動時向 AMS 驗證和註冊堆疊。

**JSON **範例

```
"Transform": {
    "Name": "AmsStackTransform",
    "Parameters": {
      "StackId": {"Ref" : "AWS::StackId"}
    }
  }
```

**YAML **範例

```
Transform:
  Name: AmsStackTransform
  Parameters:
    StackId: !Ref 'AWS::StackId'
```

更新現有堆疊的範本時，也請新增 `Transform`陳述式。

**JSON **範例

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description" : "Create an SNS Topic",
    "Transform": {
      "Name": "AmsStackTransform",
      "Parameters": {
        "StackId": {"Ref" : "AWS::StackId"}
     }
  },
  "Parameters": {
    "TopicName": {
      "Type": "String",
      "Default": "HelloWorldTopic"
    }
  },
  "Resources": {
    "SnsTopic": {
      "Type": "AWS::SNS::Topic",
      "Properties": {
        "TopicName": {"Ref": "TopicName"}
      }
    }
  }
}
```

**YAML **範例

```
AWSTemplateFormatVersion: '2010-09-09'
Description: Create an SNS Topic
Transform:
  Name: AmsStackTransform
  Parameters:
    StackId: !Ref 'AWS::StackId'
Parameters:
  TopicName:
    Type: String
    Default: HelloWorldTopic
Resources:
  SnsTopic:
    Type: AWS::SNS::Topic
    Properties:
      TopicName: !Ref TopicName
```

## 堆疊名稱
<a name="dcm-cs-stack-name"></a>

堆疊名稱必須以字首開頭，`stack-`後面接著 17 個字元的英數字串。這是為了維持與在 AMS 堆疊 IDs 上操作之其他 AMS 系統的相容性。 

 以下是產生相容堆疊 IDs的方法範例：

Bash：

```
echo "stack-$(env LC_CTYPE=C tr -dc 'a-z0-9' < /dev/urandom | head -c 17)"
```

Python：

```
import string
import random

'stack-' + ''.join(random.choices(string.ascii_lowercase + string.digits, k=17))
```

Powershell：

```
"stack-" + ( -join ((0x30..0x39) + ( 0x61..0x7A) | Get-Random -Count 17  | % {[char]$_}) )
```

# 直接變更模式使用案例
<a name="dcm-use-cases"></a>

以下是直接變更模式的使用案例：

**透過 進行資源佈建和管理 CloudFormation**
+ 整合現有的 CloudFormation 型工具和程序。

**持續的資源管理和更新**
+ 低風險的小型原子變化。
+ 否則會透過手動或自動 RFC 執行的變更。
+ 需要原生 AWS API 存取的工具。
+ 如果您處於遷移階段，則可以使用 DCM 角色。遷移團隊會利用 DCM 上的許可來建立或修改堆疊。
+ DCM 角色可用於 CI/CD 管道，以建立新的 AMIs、建立 Amazon ECS 任務等。