

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

# 設定您的 Amazon RDS Custom for SQL Server 的環境
<a name="custom-setup-sqlserver"></a>

建立和管理 Amazon RDS Custom for SQL Server 資料庫執行個體的資料庫執行個體之前，請務必執行下列任務。

**Contents**
+ [

## 設定 RDS Custom for SQL Server 的先決條件
](#custom-setup-sqlserver.review)
  + [

### 使用 自動建立執行個體描述檔 AWS 管理主控台
](#custom-setup-sqlserver.instanceProfileCreation)
+ [

## 步驟 1：將所需的許可授予您的 IAM 主體
](#custom-setup-sqlserver.iam-user)
+ [

## 步驟 2：設定網路、執行個體設定檔及加密
](#custom-setup-sqlserver.iam-vpc)
  + [

### 使用 設定 CloudFormation
](#custom-setup-sqlserver.cf)
    + [

#### CloudFormation 所需的參數
](#custom-setup-sqlserver.cf.params)
    + [

#### 下載 CloudFormation 範本檔案
](#custom-setup-sqlserver.cf.download)
    + [

#### 使用 CloudFormation 設定資源
](#custom-setup-sqlserver.cf.config)
  + [

### 手動設定
](#custom-setup-sqlserver.manual)
    + [

#### 請確定您擁有對稱加密 AWS KMS 金鑰
](#custom-setup-sqlserver.cmk)
    + [

#### 手動建立 IAM 角色和執行個體設定檔
](#custom-setup-sqlserver.iam)
      + [

##### 建立 AWSRDSCustomSQLServerInstanceRole IAM 角色
](#custom-setup-sqlserver.iam.create-role)
      + [

##### 將存取政策新增至 AWSRDSCustomSQLServerInstanceRole
](#custom-setup-sqlserver.iam.add-policy)
      + [

##### 建立您的 RDS Custom for SQL Server 執行個體設定檔
](#custom-setup-sqlserver.iam.create-profile)
      + [

##### 將 AWSRDSCustomSQLServerInstanceRole 新增至您的 RDS Custom for SQL Server 執行個體設定檔
](#custom-setup-sqlserver.iam.add-profile)
    + [

#### 手動設定您的 VPC
](#custom-setup-sqlserver.vpc)
      + [

##### 設定您的 VPC 安全群組
](#custom-setup-sqlserver.vpc.sg)
      + [

##### 設定相依的端點 AWS 服務
](#custom-setup-sqlserver.vpc.endpoints)
      + [

##### 設定個體中繼資料服務
](#custom-setup-sqlserver.vpc.imds)
+ [

## 跨執行個體限制
](#custom-setup-sqlserver.cross-instance-restriction)

**注意**  
如需逐步教學課程，了解如何設定必要條件和啟動 Amazon RDS Custom for SQL Server，請參閱[使用 CloudFormation 範本 (網路設定) 開始使用 Amazon RDS Custom for SQL Server](https://aws.amazon.com/blogs/database/get-started-with-amazon-rds-custom-for-sql-server-using-an-aws-cloudformation-template-network-setup/) 和[探索建立 Amazon RDS Custom for SQL Server 執行個體所需的必要條件](https://aws.amazon.com/blogs/database/explore-the-prerequisites-required-to-create-an-amazon-rds-custom-for-sql-server-instance/)。

## 設定 RDS Custom for SQL Server 的先決條件
<a name="custom-setup-sqlserver.review"></a>

建立 RDS Custom to SQL Server 資料庫執行個體之前，請確定您的環境符合本主題中所述的需求。您也可以使用 CloudFormation 範本在 中設定先決條件 AWS 帳戶。如需詳細資訊，請參閱[使用 設定 CloudFormation](#custom-setup-sqlserver.cf)

RDS Custom for SQL Server 需要您設定下列先決條件：
+ 設定建立執行個體所需的 AWS Identity and Access Management (IAM) 許可。這是向 RDS 提出 `create-db-instance` 請求所需的 AWS Identity and Access Management (IAM) 使用者或角色。
+ 設定 RDS Custom for SQL Server 資料庫執行個體所需的先決條件資源：
  + 設定 RDS Custom 執行個體加密所需的 AWS KMS 金鑰。RDS Custom 在建立執行個體以進行加密時，需要客戶受管金鑰。在建立 RDS Custom 資料庫執行個體的請求中，KMS 金鑰 ARN、ID、別名 ARN 或別名名稱會做為 `kms-key-id` 參數傳遞。
  + 設定 RDS Custom for SQL Server 資料庫執行個體內所需的許可。RDS Custom 會在建立時將執行個體設定檔連接至資料庫執行個體，並將其用於資料庫執行個體內的自動化。執行個體設定檔名稱在 RDS Custom 建立請求中設定為 `custom-iam-instance-profile`。您可以從 建立執行個體描述檔， AWS 管理主控台 或手動建立執行個體描述檔。如需詳細資訊，請參閱[使用 自動建立執行個體描述檔 AWS 管理主控台](#custom-setup-sqlserver.instanceProfileCreation)及[手動建立 IAM 角色和執行個體設定檔](#custom-setup-sqlserver.iam)。
  + 根據 RDS Custom for SQL Server 的要求設定聯網設定。RDS Custom 執行個體位於您在執行個體建立時提供的子網路 (使用資料庫子網路群組所設定) 中。這些子網路必須允許 RDS Custom 執行個體與 RDS 自動化所需的服務通訊。

**注意**  
對於上述要求，請確定沒有任何服務控制政策 (SCP) 限制帳戶層級許可。  
如果您正在使用的帳戶是 AWS 組織的一部分，則可能會有限制帳戶層級許可的服務控制政策 (SCP)。確保 SCP 不會限制您使用下列程序所建立使用者與角色上的許可。  
如需 SCP 的詳細資訊，請參閱《*AWS Organizations 使用者指南*》中的[服務控制政策 (SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。使用 [describe-organization](https://docs.aws.amazon.com/cli/latest/reference/organizations/describe-organization.html) AWS CLI 命令來檢查您的帳戶是否為 AWS 組織的一部分。  
如需 AWS Organizations 的詳細資訊，請參閱*AWS Organizations 《 使用者指南*》中的[什麼是 AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)。

如需適用於 RDS Custom for SQL Server 的一般需求，請參閱 [RDS Custom for SQL Server 的一般需求](custom-reqs-limits-MS.md#custom-reqs-limits.reqsMS)。

### 使用 自動建立執行個體描述檔 AWS 管理主控台
<a name="custom-setup-sqlserver.instanceProfileCreation"></a>

RDS Custom 要求您建立及設定執行個體設定檔，以啟動任何 RDS Custom for SQL Server 資料庫執行個體。使用 AWS 管理主控台 在單一步驟中建立和連接新的執行個體描述檔。此選項可在**建立資料庫**、**還原快照**和**還原至時間點**主控台頁面的 RDS Custom 安全區段下使用。選擇**建立新的執行個體設定檔**，以提供執行個體設定檔名稱尾碼。 AWS 管理主控台 會建立新的執行個體描述檔，其具有 RDS Custom 自動化任務所需的許可。若要自動建立新的執行個體描述檔，您的登入 AWS 管理主控台 使用者必須具有 `iam:CreateInstanceProfile`、`iam:CreateRole`、 `iam:AddRoleToInstanceProfile`和 `iam:AttachRolePolicy`許可。

**注意**  
此選項僅能在 AWS 管理主控台中使用。如果您使用 CLI 或 SDK，請使用 RDS Custom 提供的 CloudFormation 範本，或手動建立執行個體設定檔。如需詳細資訊，請參閱[手動建立 IAM 角色和執行個體設定檔](#custom-setup-sqlserver.iam)。

## 步驟 1：將所需的許可授予您的 IAM 主體
<a name="custom-setup-sqlserver.iam-user"></a>

確定您具有足夠存取權可建立 RDS Custom 執行個體。使用主控台或 CLI 建立 RDS Custom for SQL Server 資料庫執行個體的 IAM 角色或 IAM 使用者 (稱為 *IAM 主體*) 必須具有下列任一政策，才能成功建立資料庫執行個體：
+ `AdministratorAccess` 政策
+ 具有下列額外許可的 `AmazonRDSFullAccess` 政策：

  ```
  iam:SimulatePrincipalPolicy
  cloudtrail:CreateTrail
  cloudtrail:StartLogging
  s3:CreateBucket
  s3:PutBucketPolicy
  s3:PutBucketObjectLockConfiguration
  s3:PutBucketVersioning 
  kms:CreateGrant
  kms:DescribeKey
  kms:Decrypt
  kms:ReEncryptFrom
  kms:ReEncryptTo
  kms:GenerateDataKeyWithoutPlaintext
  kms:GenerateDataKey
  ec2:DescribeImages
  ec2:RunInstances
  ec2:CreateTags
  ```

  RDS Custom 會在執行個體建立期間使用這些許可。這些許可會設定您帳戶中 RDS Custom 作業所需的資源。

  如需 `kms:CreateGrant` 許可的詳細資訊，請參閱 [AWS KMS key 管理](Overview.Encryption.Keys.md)。

以下範例 JSON 政策授予必要許可。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ValidateIamRole",
            "Effect": "Allow",
            "Action": "iam:SimulatePrincipalPolicy",
            "Resource": "*"
        },
        {
            "Sid": "CreateCloudTrail",
            "Effect": "Allow",
            "Action": [
                "cloudtrail:CreateTrail",
                "cloudtrail:StartLogging"
            ],
            "Resource": "arn:aws:cloudtrail:*:*:trail/do-not-delete-rds-custom-*"
        },
        {
            "Sid": "CreateS3Bucket",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:PutBucketPolicy",
                "s3:PutBucketObjectLockConfiguration",
                "s3:PutBucketVersioning"
            ],
            "Resource": "arn:aws:s3:::do-not-delete-rds-custom-*"
        },
        {
            "Sid": "CreateKmsGrant",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        }
    ]
}
```

------

IAM 主體需要下列額外許可才能使用自訂引擎版本 (CEV)：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ConfigureKmsKeyEncryptionPermission",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey",
                "kms:Decrypt",
                "kms:ReEncryptFrom",
                "kms:ReEncryptTo",
                "kms:GenerateDataKeyWithoutPlaintext",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key_id"
        },
        {
            "Sid": "CreateEc2Instance",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeImages",
                "ec2:RunInstances",
                "ec2:CreateTags"
            ],
            "Resource": "*"
        }
    ]
}
```

------

將 *111122223333* 取代為您用來建立執行個體的帳戶 ID。將 *us-east-1* 取代 AWS 區域 為您用來建立執行個體的 。以客戶受管金鑰 ID 取代 *key\$1id*。您可以視需要新增多個金鑰。

如需啟動 EC2 執行個體所需資源層級許可的詳細資訊，請參閱[啟動執行個體 (RunInstances)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#iam-example-runinstances)。

此外，IAM 主體在 IAM 角色上需要 `iam:PassRole` 許可。這必須連接到在請求中以 `custom-iam-instance-profile` 參數傳遞的執行個體，才能建立 RDS Custom 資料庫執行個體。稍後會在 [步驟 2：設定網路、執行個體設定檔及加密](#custom-setup-sqlserver.iam-vpc) 中建立執行個體設定檔及其連接的角色。

**注意**  
確保先前列出的許可不受服務控制政策 (SCP)、許可界限或與 IAM 主體相關聯之工作階段政策的限制。

## 步驟 2：設定網路、執行個體設定檔及加密
<a name="custom-setup-sqlserver.iam-vpc"></a>

您可以使用下列任一程序來設定 IAM 執行個體描述檔角色、虛擬私有雲端 AWS KMS (VPC) 和對稱加密金鑰：
+ [使用 設定 CloudFormation](#custom-setup-sqlserver.cf) (建議)
+ [手動設定](#custom-setup-sqlserver.manual)

**注意**  
如果您的帳戶屬於任何 AWS Organizations，請確定執行個體描述檔角色所需的許可不受服務控制政策 (SCPs限制。  
本主題中的網路組態能夠最有效地處理未供公開存取的資料庫執行個體。您無法從 VPC 外部直接與這些資料庫執行個體連線。

### 使用 設定 CloudFormation
<a name="custom-setup-sqlserver.cf"></a>

若要簡化設定，您可以使用 CloudFormation 範本檔案來建立 CloudFormation 堆疊。CloudFormation 範本會根據 RDS Custom 的要求建立所有聯網、執行個體設定檔和加密資源。

若要了解如何建立堆疊，請參閱*CloudFormation 《 使用者指南*》中的[在 CloudFormation 主控台上建立堆疊](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)。

如需如何使用 CloudFormation 範本啟動 Amazon RDS Custom for SQL Server 的教學課程，請參閱 *AWS 資料庫部落格*中的[使用 CloudFormation 範本開始使用 Amazon RDS Custom for SQL Server](https://aws.amazon.com/blogs/database/get-started-with-amazon-rds-custom-for-sql-server-using-an-aws-cloudformation-template-network-setup/)。

**Topics**
+ [

#### CloudFormation 所需的參數
](#custom-setup-sqlserver.cf.params)
+ [

#### 下載 CloudFormation 範本檔案
](#custom-setup-sqlserver.cf.download)
+ [

#### 使用 CloudFormation 設定資源
](#custom-setup-sqlserver.cf.config)

#### CloudFormation 所需的參數
<a name="custom-setup-sqlserver.cf.params"></a>

使用 CloudFormation 設定 RDS Custom 先決條件資源時，需要下列參數：

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html)

#### 由 CloudFormation 建立的資源
<a name="custom-setup-sqlserver.cf.list"></a>

使用預設設定成功建立 CloudFormation 堆疊會在您的 中建立下列資源 AWS 帳戶：
+ 對稱加密 KMS 金鑰，用於加密由 RDS Custom 管理的資料。
+ 執行個體設定檔透過 `AmazonRDSCustomInstanceProfileRolePolicy` 與 IAM 角色相關聯，以提供 RDS Custom 所需的許可。如需詳細資訊，請參閱《AWS 受管政策參考指南》**中的 [AmazonRDSCustomServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSCustomServiceRolePolicy.html)。
+ 具有指定為 CloudFormation 參數之 CIDR 範圍的 VPC。預設值為 `10.0.0.0/16`。
+ 兩個私有子網路，具有參數中指定的 CIDR 範圍，以及 AWS 區域中兩個不同的可用區域。子網路 CIDR 的預設值為 `10.0.128.0/20` 和 `10.0.144.0/20`。
+ 一個公有子網路，具有參數中所指定的 CIDR 範圍。子網路 CIDR 的預設值為 10.0.0.0/20。EC2 執行個體位於此子網路中，可用於連線至 RDS Custom 執行個體。
+ 為 VPC 設定的 DHCP 選項，其網域名稱會解析為 Amazon Domain Name System (DNS) 伺服器。
+ 與兩個私有子網路相關聯且無法存取網際網路的路由表。
+ 與公有子網路相關聯且可存取網際網路的路由表。
+ 與 VPC 相關聯的網際網路閘道，以允許網際網路存取公有子網路。
+ 網路存取控制清單 (ACL)，其與兩個私有子網路相關聯，且僅限存取 HTTPS 和 VPC 內的資料庫連接埠。
+ 與 RDS Custom 執行個體相關聯的 VPC 安全群組。傳出 HTTPS 存取僅限於 RDS Custom 和來自 EC2 執行個體安全群組的傳入資料庫連接埠所需的 AWS 服務 端點。
+ 要與公有子網路中的 EC2 執行個體關聯的 VPC 安全群組。傳出資料庫連接埠的存取權限制為 RDS Custom 執行個體安全群組。
+ 要與為 RDS Custom 所需端點建立的 VPC AWS 服務 端點相關聯的 VPC 安全群組。
+ 在其中建立 RDS Custom 執行個體的資料庫子網路群組。此範本所建立的兩個私有子網路會新增至資料庫子網路群組。
+ RDS Custom 所需的每個端點的 VPC AWS 服務 端點。

除了上述清單之外，將可用性組態設定為多可用區也會建立下列資源：
+ 網路 ACL 規則允許私有子網路之間的通訊。
+ 與 RDS Custom 執行個體相關聯之 VPC 安全群組內多可用區連接埠的傳入和傳出存取權。
+ VPC 端點至 AWS 服務端點 （多可用區域通訊所需）。

此外，設定 RDP 存取組態會建立下列資源：
+ 從來源 IP 位址設定公有子網路的 RDP 存取：
  + 允許 RDP 從您的來源 IP 連線至公有子網路的網路 ACL 規則。
  + 將 RDP 連接埠的存取權從來源 IP 傳入與 EC2 執行個體相關聯的 VPC 安全群組。
+ 設定從公有子網路中的 EC2 執行個體到私有子網路中 RDS 自訂執行個體的 RDP 存取：
  + 網路 ACL 規則允許從公有子網路到私有子網路的 RDP 連線。
  + 從與 EC2 執行個體相關聯的 VPC 安全群組到與 RDS 自訂執行個體相關聯的 VPC 安全群組，對 RDP 連接埠的傳入存取。

使用下列程序為 RDS Custom for SQL Server 建立 CloudFormation 堆疊。

#### 下載 CloudFormation 範本檔案
<a name="custom-setup-sqlserver.cf.download"></a>

**下載範本檔案**

1. 開啟連結 [custom-sqlserver-onboard.zip](samples/custom-sqlserver-onboard.zip) 的內容 (滑鼠右鍵) 功能表，然後選擇 **Save Link As** (另存連結為)。

1. 將檔案儲存並擷取到您的電腦。

#### 使用 CloudFormation 設定資源
<a name="custom-setup-sqlserver.cf.config"></a>

**使用 CloudFormation 設定資源**

1. 開啟位於 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 的 CloudFormation 主控台。

1. 若要啟動「建立堆疊」精靈，請選擇 **Create Stack** (建立堆疊)。

   **Create stack** (建立堆疊) 頁面隨即出現。

1. 對於 **Prepare template** (準備範本)，請選擇 **Template is ready** (範本已準備就緒)。

1. 針對 **Specify template** 執行下列操作：

   1. 針對 **Template source** (範本來源)，選擇 **Upload a template file** (上傳範本檔案)。

   1. 針對**選擇檔案**，導覽至該處並選擇正確檔案。

1. 選擇**下一步**。

   **Specify stack details** (指定堆疊詳細資訊) 頁面隨即出現。

1. 針對**堆疊名稱** 輸入 **rds-custom-sqlserver**。

1. 對於 **Parameters** (參數)，請執行下列動作：

   1. 若要保留預設選項，請選擇 **Next** (下一步)。

   1. 若要變更選項，請選擇適當的可用性組態、聯網組態和 RDP 存取組態，然後選擇**下一步**。

      在變更參數之前，請先仔細閱讀每個參數的說明。
**注意**  
如果您選擇在此 CloudFormation 堆疊中建立至少一個多可用區執行個體，請確定將 CloudFormation 堆疊參數**選取先決條件設定的可用性組態**設定為 `Multi-AZ`。如果您將 CloudFormation 堆疊建立為單一可用區，請在建立第一個多可用區執行個體之前，將 CloudFormation 堆疊更新為多可用區組態。

1. 在 **Configure stack options** (設定堆疊選項) 頁面，選擇 **Next** (下一步)。

1. 在 **Review rds-custom-sqlserver** (檢閱 rds-custom-sqlserver) 頁面上，執行下列操作：

   1. 針對 **Capabilities (功能)**，選取 ****I acknowledge that CloudFormation might create IAM resources with custom names**** (確認可能使用自訂名稱建立 IAM 資源) 核取方塊。

   1. 選擇 **Create Stack** (建立堆疊)。

**注意**  
請勿直接從資源頁面更新從此 CloudFormation 堆疊建立的資源。這可防止您使用 CloudFormation 範本，將未來的更新套用至這些資源。

CloudFormation 會建立 RDS Custom for SQL Server 需要的資源。如果堆疊建立失敗，請詳讀 **Events** 索引標籤，查看哪些資源建立失敗及其狀態原因。

主控台中此 CloudFormation 堆疊的 **Outputs** (輸出) 索引標籤應有要作為用於建立 RDS Custom for SQL Server 資料庫執行個體的參數傳遞的所有資源相關資訊。務必使用由 CloudFormation for RDS Custom 資料庫執行個體建立的 VPC 安全群組與資料庫子網路群組。依預設，RDS 會嘗試連接預設的 VPC 安全群組，此群組可能沒有您需要的存取權。

如果您使用 CloudFormation 建立資源，則可以略過 [手動設定](#custom-setup-sqlserver.manual)。

#### 更新 CloudFormation 堆疊
<a name="custom-setup-sqlserver.cf.update"></a>

您也可以在建立後更新 CloudFormation 堆疊上的部分組態。可更新的組態包括：
+ RDS Custom for SQL Server 的可用性組態
  + **選取先決條件設定的可用性組態**：更新此參數，以在單一可用區與多可用區組態之間切換。如果您將此 CloudFormation 堆疊用於至少一個多可用區執行個體，則必須更新堆疊，以選擇多可用區組態。
+ RDS Custom for SQL Server 的 RDP 存取考量
  + 來源的 IPv4 CIDR 區塊：您可以透過更新此參數來更新來源的 IPv4 CIDR 區塊 (或 IP 位址範圍)。將此參數設為空白會將來源 CIDR 區塊的 RDP 存取組態移除為公有子網路。
  + 設定 RDP 存取 RDS Custom for SQL Server：啟用或停用從 EC2 執行個體到 RDS Custom for SQL Server 執行個體的 RDP 連線。

#### 刪除 CloudFormation 堆疊
<a name="custom-setup-sqlserver.cf.delete"></a>

您在刪除所有使用堆疊中資源的 RDS Custom 執行個體後，可以刪除 CloudFormation 堆疊。RDS Custom 不會追蹤 CloudFormation 堆疊，因此，當有使用堆疊資源的資料庫執行個體時，不會封鎖刪除堆疊。刪除堆疊時，請確定沒有使用堆疊資源的 RDS Custom 資料庫執行個體。

**注意**  
當您刪除 CloudFormation 堆疊時，由該堆疊建立的所有資源皆會遭到刪除，唯 KMS 金鑰除外。KMS 金鑰會進入 pending-deletion 狀態並在 30 天後刪除。若要保留 KMS 金鑰，請在 30 天的寬限期執行 [CancelKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html) 操作。

### 手動設定
<a name="custom-setup-sqlserver.manual"></a>

如果您選擇手動設定資源，請執行以下任務。

**注意**  
若要簡化設定，您可以使用 CloudFormation 範本檔案來建立 CloudFormation 堆疊，而不是手動組態。如需詳細資訊，請參閱[使用 設定 CloudFormation](#custom-setup-sqlserver.cf)。  
您也可以使用 AWS CLI 來完成本節。若是如此，請下載並安裝最新 CLI。

**Topics**
+ [

#### 請確定您擁有對稱加密 AWS KMS 金鑰
](#custom-setup-sqlserver.cmk)
+ [

#### 手動建立 IAM 角色和執行個體設定檔
](#custom-setup-sqlserver.iam)
+ [

#### 手動設定您的 VPC
](#custom-setup-sqlserver.vpc)

#### 請確定您擁有對稱加密 AWS KMS 金鑰
<a name="custom-setup-sqlserver.cmk"></a>

RDS Custom AWS KMS key 需要對稱加密。建立 RDS Custom for SQL Server 資料庫執行個體時，必須提供 KMS 金鑰識別符做為參數 `kms-key-id`。如需詳細資訊，請參閱[建立並連線至 Amazon RDS Custom for SQL Server 的資料庫執行個體](custom-creating-sqlserver.md)。

您有下列選項：
+ 如果您的 中有現有的客戶受管 KMS 金鑰 AWS 帳戶，您可以搭配 RDS Custom 使用它。無需採取進一步動作。
+ 若您已為不同的 RDS Custom 引擎建立客戶受管對稱加密 KMS 金鑰，您可以重複使用相同的 KMS 金鑰。無需採取進一步動作。
+ 若您的帳戶中並無現有的客戶受管對稱加密 KMS 金鑰，請藉由遵循《AWS Key Management Service 開發人員指南》**中的[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)來建立 KMS 金鑰。
+ 如果您要建立 CEV 或 RDS Custom 資料庫執行個體，且 KMS 金鑰位於不同的 中 AWS 帳戶，請務必使用 AWS CLI。您無法搭配跨帳戶 KMS 金鑰使用 AWS 主控台。

**重要**  
RDS Custom 不支援 AWS 受管 KMS 金鑰。

請確定您的對稱加密金鑰將 `kms:Decrypt`和 `kms:GenerateDataKey`操作的存取權授予 IAM 執行個體設定檔中的 AWS Identity and Access Management (IAM) 角色。若您的帳戶中有新的對稱加密金鑰，則不需要變更。否則，請確定對稱加密金鑰政策授予這些操作的存取權。

如需詳細資訊，請參閱[步驟 4：設定 RDS Custom for Oracle 的 IAM](custom-setup-orcl.md#custom-setup-orcl.iam-vpc)。

#### 手動建立 IAM 角色和執行個體設定檔
<a name="custom-setup-sqlserver.iam"></a>

您可以手動建立執行個體設定檔，並使用它來啟動 RDS Custom 執行個體。如果您打算在 中建立執行個體 AWS 管理主控台，請略過本節。 AWS 管理主控台 可讓您建立執行個體描述檔，並將其連接至 RDS Custom 資料庫執行個體。如需詳細資訊，請參閱[使用 自動建立執行個體描述檔 AWS 管理主控台](#custom-setup-sqlserver.instanceProfileCreation)。

當您手動建立執行個體設定檔時，請將執行個體設定檔名稱做為 `custom-iam-instance-profile` 參數傳遞至 CLI `create-db-instance` 命令。RDS Custom 會使用與此執行個體設定檔相關聯的角色來執行自動化，以管理執行個體。

**建立 RDS Custom for SQL Server 的 IAM 執行個體設定檔和 IAM 角色**

1. 建立名為 `AWSRDSCustomSQLServerInstanceRole` 的 IAM 角色，具有可讓 Amazon EC2 擔任此角色的信任政策。

1. 將 AWS 受管政策`AmazonRDSCustomInstanceProfileRolePolicy`新增至 `AWSRDSCustomSQLServerInstanceRole`。

1. 為 RDS Custom for SQL Server 建立名為 `AWSRDSCustomSQLServerInstanceProfile` 的 IAM 執行個體設定檔。

1. 將 `AWSRDSCustomSQLServerInstanceRole` 新增至執行個體設定檔。

##### 建立 AWSRDSCustomSQLServerInstanceRole IAM 角色
<a name="custom-setup-sqlserver.iam.create-role"></a>

下列範例會建立 `AWSRDSCustomSQLServerInstanceRole` 角色。信任政策可讓 Amazon EC2 擔任角色。

```
aws iam create-role \
    --role-name AWSRDSCustomSQLServerInstanceRole \
    --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                  "Service": "ec2.amazonaws.com"
              }
            }
          ]
        }'
```

##### 將存取政策新增至 AWSRDSCustomSQLServerInstanceRole
<a name="custom-setup-sqlserver.iam.add-policy"></a>

若要提供所需的許可，請將 AWS 受管政策連接至 `AmazonRDSCustomInstanceProfileRolePolicy` `AWSRDSCustomSQLServerInstanceRole`。 `AmazonRDSCustomInstanceProfileRolePolicy` 允許 RDS Custom 執行個體傳送和接收訊息，並執行各種自動化動作。

**注意**  
確定存取政策中的許可不受與執行個體設定檔角色相關聯的 SCP 或許可界限所限制。

下列範例會將 AWS 受管政策連接至`AmazonRDSCustomInstanceProfileRolePolicy``AWSRDSCustomSQLServerInstanceRole`角色。

```
aws iam attach-role-policy \
    --role-name AWSRDSCustomSQLServerInstanceRole \
    --policy-arn arn:aws:iam::aws:policy/AmazonRDSCustomInstanceProfileRolePolicy
```

##### 建立您的 RDS Custom for SQL Server 執行個體設定檔
<a name="custom-setup-sqlserver.iam.create-profile"></a>

執行個體設定檔是包含單一 IAM 角色的容器。RDS Custom 會使用執行個體設定檔，將角色傳遞到執行個體。

如果您使用 AWS 管理主控台 為 Amazon EC2 建立角色，主控台會自動建立執行個體描述檔，並在建立角色時為其提供與角色相同的名稱。如下所示建立您的執行個體設定檔，將它命名為 `AWSRDSCustomSQLServerInstanceProfile`。

```
aws iam create-instance-profile \
    --instance-profile-name AWSRDSCustomSQLServerInstanceProfile
```

##### 將 AWSRDSCustomSQLServerInstanceRole 新增至您的 RDS Custom for SQL Server 執行個體設定檔
<a name="custom-setup-sqlserver.iam.add-profile"></a>

將 `AWSRDSCustomInstanceRoleForRdsCustomInstance` 角色新增至先前建立的 `AWSRDSCustomSQLServerInstanceProfile` 設定檔。

```
aws iam add-role-to-instance-profile \
    --instance-profile-name AWSRDSCustomSQLServerInstanceProfile \
    --role-name AWSRDSCustomSQLServerInstanceRole
```

#### 手動設定您的 VPC
<a name="custom-setup-sqlserver.vpc"></a>

根據 Amazon VPC 服務，您的 RDS Custom 資料庫執行個體位於虛擬私有雲端 (VPC)，就像是 Amazon EC2 執行個體或 Amazon RDS 執行個體。您可以提供和設定您自己的 VPC。因此，您可以完全控制您的執行個體網絡設定。

RDS Custom 會將通訊從您的資料庫執行個體傳送到其他 AWS 服務。請確定可從您建立 RDS Custom 資料庫執行個體的子網路存取下列服務：
+ Amazon CloudWatch (`com.amazonaws.region.monitoring`)
+ Amazon CloudWatch Logs (`com.amazonaws.region.logs`)
+ Amazon CloudWatch Events (`com.amazonaws.region.events`)
+ Amazon EC2 (`com.amazonaws.region.ec2` 和 `com.amazonaws.region.ec2messages`)
+ Amazon S3 (`com.amazonaws.region.s3`)
+ AWS Secrets Manager (`com.amazonaws.region.secretsmanager`)
+ AWS Systems Manager (`com.amazonaws.region.ssm` 和 `com.amazonaws.region.ssmmessages`)

若建立多可用區域部署
+ Amazon Simple Queue Service (`com.amazonaws.region.sqs`)

如果 RDS Custom 無法與必要服務進行通訊，則會發佈下列事件：

```
Database instance in incompatible-network. SSM Agent connection not available. Amazon RDS can't connect to the dependent AWS services.
```

```
Database instance in incompatible-network. Amazon RDS can't connect to dependent AWS services. Make sure port 443 (HTTPS) allows outbound connections, and try again. "Failed to connect to the following services: s3 events"
```

若要避免`incompatible-network`錯誤，請確定涉及 RDS Custom 資料庫執行個體之間通訊的 VPC 元件，並 AWS 服務 滿足下列要求：
+ 資料庫執行個體會在連接埠 443 上對其他 AWS 服務進行傳出連線。
+ VPC 允許對來自您 RDS Custom 資料庫執行個體的請求進行傳入回應。
+ RDS Custom 可以正確解析每個 AWS 服務的端點網域名稱。

若您已經為不同的 RDS Custom 資料庫引擎設定 VPC，您可重複使用該 VPC 並略過此程序。

**Topics**
+ [

##### 設定您的 VPC 安全群組
](#custom-setup-sqlserver.vpc.sg)
+ [

##### 設定相依的端點 AWS 服務
](#custom-setup-sqlserver.vpc.endpoints)
+ [

##### 設定個體中繼資料服務
](#custom-setup-sqlserver.vpc.imds)

##### 設定您的 VPC 安全群組
<a name="custom-setup-sqlserver.vpc.sg"></a>

*安全群組*會做為 VPC 執行個體的虛擬防火牆，控制傳入及傳出流量。RDS Custom 資料庫執行個體具有連接至其網路介面的安全群組，會保護執行個體。請確定您的安全群組允許 RDS Custom 與其他 AWS 服務 之間的流量通過 HTTPS。您可以在執行個體建立請求中，將此安全群組做為 `vpc-security-group-ids` 參數傳遞。

**若要設定 RDS Custom 的安全群組**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/vpc](https://console.aws.amazon.com/vpc) 的 Amazon VPC 主控台。

1. 允許 RDS Custom 使用預設安全群組，或建立您自己的安全群組。

   如需詳細說明，請參閱 [建立安全群組以存取在您的 VPC 中您的資料庫執行個體](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup)。

1. 請確定您的安全群組允許連接埠 443 上的傳出連線。RDS Custom 需要此連接埠與相依 AWS 服務通訊。

1. 如果您具備私有 VPC 並使用 VPC 端點，請確定與資料庫執行個體相關聯的安全群組允許連接埠 443 上傳出至 VPC 端點的連線。此外還要確定與 VPC 端點相關聯的安全群組允許連接埠 443 上從資料庫執行個體傳入的連線。

   如果不允許傳入的連線，則 RDS Custom 執行個體無法連線到 AWS Systems Manager 和 Amazon EC2 端點。如需詳細資訊，請參閱《*AWS Systems Manager 使用者指南*》中的[建立 Virtual Private Cloud 端點](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html)。

1. 對於 RDS Custom for SQL Server 多可用區域執行個體，請確定與資料庫執行個體相關聯的安全群組允許連接埠 1120 上對此安全群組本身的傳入和傳出連線。這對於多可用區域 RDS Custom for SQL Server 資料庫執行個體上的對等主機連線是必要的。

如需安全群組的詳細資訊，請參閱《*Amazon VPC 開發人員指南*》中的[您的 VPC 的安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

##### 設定相依的端點 AWS 服務
<a name="custom-setup-sqlserver.vpc.endpoints"></a>

建議您使用下列指示將每個服務的端點新增至 VPC。不過，您可以使用任何解決方案，讓您的 VPC 與服務 AWS 端點通訊。例如，您可以使用網路位址轉譯 (NAT) 或 AWS Direct Connect。

**設定用於 RDS Custom AWS 服務 的端點**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽列上，使用區域選取器來選擇 AWS 區域。

1. 在導覽窗格中選擇**端點**。在主窗格中，選擇 **Create Endpoint (建立端點)**。

1. 對於 **Service category** (服務類別)，選擇 **AWS 服務**。

1. 針對 **Service Name (服務名稱)**，選擇表格中顯示的端點。

1. 在 **VPC** 中，選擇您的 VPC。

1. 在 **Subnets (子網路)** 中，請從每個可用區域選擇要包含的子網路。

   VPC 端點可以跨越多個可用區域。 會為您選擇的每個子網路中的 VPC 端點 AWS 建立彈性網路介面。每個網路界面具有網域名稱系統 (DNS) 主機名稱和私有 IP 地址。

1. 針對 **Security group (安全群組)**，選擇或建立安全群組。

   您可以使用安全群組來控制對端點的存取，就像使用防火牆一樣。請確定安全群組允許連接埠 443 上從資料庫執行個體傳入的連線。如需安全群組的詳細資訊，請參閱《Amazon VPC 使用者指南》**中的 [VPC 的安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

1. 或者，您可以將政策連接至 VPC 端點。端點政策可以控制對您要連線之 AWS 服務 的存取。預設政策允許所有請求通過端點。如果您使用的是自訂政策，請確定該政策中允許來自資料庫執行個體的請求。

1. 選擇**建立端點**。

下表說明如何尋找您的 VPC 傳出通訊所需的端點清單。


| 服務 | 端點格式 | 備註和連結 | 
| --- | --- | --- | 
|  AWS Systems Manager  |  使用下列端點格式： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html)  |  如需每個區域的端點清單，請參閱 *Amazon Web Services 一般參考* 中的 [AWS Systems Manager 端點和配額](https://docs.aws.amazon.com/general/latest/gr/ssm.html)。  | 
|  AWS Secrets Manager  |  使用端點格式 `secretsmanager.region.amazonaws.com`。  |  如需每個區域的端點清單，請參閱 *Amazon Web Services 一般參考* 中的 [AWS Secrets Manager 端點和配額](https://docs.aws.amazon.com/general/latest/gr/asm.html)。  | 
|  Amazon CloudWatch  |  使用下列端點格式： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html)  | 如需每個區域中的端點清單，請參閱：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html) | 
|  Amazon EC2  |  使用下列端點格式： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/custom-setup-sqlserver.html)  |  如需每個區域中的端點清單，請參閱 *Amazon Web Services 一般參考* 中的 [Amazon Elastic Compute Cloud 端點和配額](https://docs.aws.amazon.com/general/latest/gr/ec2-service.html)。  | 
|  Amazon S3  |  使用端點格式 `s3.region.amazonaws.com`。  |  如需每個區域中的端點清單，請參閱 *Amazon Web Services 一般參考* 中的 [Amazon Simple Storage Service 端點和配額](https://docs.aws.amazon.com/general/latest/gr/s3.html)。 若要進一步了解 Amazon S3 的閘道端點，請參閱《*Amazon VPC 開發人員指南*》中的 [Amazon S3 的端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html)。 若要了解如何建立存取點，請參閱《*Amazon VPC 開發人員指南*》中的[建立存取點](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/access-points-create-ap.html)。 若要瞭解如何為 Amazon S3 建立閘道端點，請參閱[閘道 VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-gateway.html)。  | 
|  Amazon Simple Queue Service  | 使用端點格式 sqs.region.amazonaws.com | 如需每個區域中的端點清單，請參閱 [Amazon Simple Queue Service 端點和配額](https://docs.aws.amazon.com/general/latest/gr/sqs-service.html)。 | 

##### 設定個體中繼資料服務
<a name="custom-setup-sqlserver.vpc.imds"></a>

請確定您的執行個體可以執行下列操作：
+ 使用執行個體中繼資料服務版本 2 (IMDSv2) 存取執行個體中繼資料服務。
+ 允許透過連接埠 80 (HTTP) 與 IMDS 連結 IP 地址進行傳出通訊。
+ 從 `http://169.254.169.254` (IMDSv2 連結) 要求執行個體中繼資料。

如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[使用 IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)。

## 跨執行個體限制
<a name="custom-setup-sqlserver.cross-instance-restriction"></a>

當您依照上述步驟建立執行個體描述檔時，它會使用 AWS 受管政策`AmazonRDSCustomInstanceProfileRolePolicy`向 RDS Custom 提供必要的許可，以允許執行個體管理和監控自動化。受管政策可確保許可僅允許存取 RDS Custom 執行自動化所需的資源。建議您使用受管政策來支援新功能並解決安全需求，這些要求會自動套用至現有的執行個體設定檔，而無需手動介入。如需詳細資訊，請參閱 [ 受管政策：AmazonRDSCustomInstanceProfileRolePolicy](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-security-iam-awsmanpol.html#rds-security-iam-awsmanpol-AmazonRDSCustomInstanceProfileRolePolicy)。

`AmazonRDSCustomInstanceProfileRolePolicy` 受管政策限制執行個體設定檔具有跨帳戶存取權，但可能允許存取相同帳戶中跨 RDS Custom 執行個體的一些 RDS Custom 受管資源。根據您的需求，您可以使用許可界限來進一步限制跨執行個體存取。許可界限會定義身分型政策可授予實體的最大許可，但不會自行授予許可。如需詳細資訊，請參閱[使用邊界評估有效許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html#access_policies_boundaries-eval-logic)。

例如，下列邊界政策會限制執行個體描述檔角色存取特定 AWS KMS 金鑰，並限制跨使用不同 AWS KMS 金鑰的執行個體存取 RDS Custom 受管資源。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyOtherKmsKeyAccess",
            "Effect": "Deny",
            "Action": "kms:*",
            "NotResource": "arn:aws:kms:us-east-1:111122223333:key/KMS_key_ID"
        }
    ]
}
```

------

**注意**  
請確定許可界限不會封鎖 `AmazonRDSCustomInstanceProfileRolePolicy` 授予 RDS Custom 的任何許可。