

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

# 設定 Amazon RDS for Db2 資料庫執行個體的 Kerberos 身分驗證
<a name="db2-kerberos-setting-up"></a>

您可以使用 AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) 來設定 RDS for Db2 資料庫執行個體的Kerberos身分驗證。若要設定 Kerberos 身分驗證，請依照下列步驟進行：

**Topics**
+ [步驟 1：使用 建立目錄 AWS Managed Microsoft AD](#db2-kerberos-setting-up.create-directory)
+ [步驟 2：建立信任](#db2-kerberos-setting-up-create-forest-trust)
+ [步驟 3：為 Amazon RDS 建立存取的 IAM 角色 Directory Service](#db2-kerberos-setting-up-create-iam-role)
+ [步驟 4：建立和設定使用者](#db2-kerberos-setting-up.create-users)
+ [步驟 5：在 中建立 Db2 管理員群組的 RDS AWS Managed Microsoft AD](#db2-kerberos-setting-up-vpc-peering)
+ [步驟 6：修改資料庫參數](#db2-kerberos-setting-up-modify-db-parameter)
+ [步驟 7：建立或修改 RDS for Db2 資料庫執行個體](#db2-kerberos-setting-up-create-modify)
+ [步驟 8：在 PowerShell 中擷取 Active Directory 群組 SID](#db2-kerberos-setting-up-retrieve-ad-group-sid)
+ [步驟 9：將 SID 到 GroupName 映射新增至您的 RDS for Db2 資料庫執行個體](#db2-kerberos-setting-up-add-sid-group-mapping)
+ [步驟 10：設定 Db2 用戶端](#db2-kerberos-setting-up-create-logins)

## 步驟 1：使用 建立目錄 AWS Managed Microsoft AD
<a name="db2-kerberos-setting-up.create-directory"></a>

Directory Service 在 Active Directory中建立完全受管的 AWS 雲端。當您建立 AWS Managed Microsoft AD 目錄時， 會為您 Directory Service 建立兩個網域控制站和 DNS 伺服器。目錄伺服器是在 VPC 的不同子網路中建立。此備援可協助確保即使失敗，仍能存取您的目錄。

 當您建立 AWS Managed Microsoft AD 目錄時， 會代表您 Directory Service 執行下列任務：
+ 在 VPC 中設定 Active Directory。
+ 建立含有使用者名稱 `Admin` 與指定密碼的目錄管理員帳戶。您可以使用此帳戶來管理目錄。
**重要**  
請務必儲存此密碼。 Directory Service 不會儲存此密碼，而且無法擷取或重設。
+ 建立目錄控制器的安全群組。安全群組必須允許與 RDS for Db2 資料庫執行個體進行通訊。

啟動時 AWS Directory Service for Microsoft Active Directory， AWS 會建立組織單位 (OU)，其中包含目錄的所有物件。此 OU 有您在建立目錄時所輸入的 NetBIOS 名稱，位於根網域中。網域根由 擁有和管理 AWS。

使用 AWS Managed Microsoft AD 目錄建立`Admin`的帳戶具有 OU 最常見管理活動的許可：
+ 建立、更新或刪除使用者。
+ 將資源 (例如檔案或列印伺服器) 新增至您的網域，然後對您 OU 中的使用者指派這些資源的許可。
+ 建立額外的 OU 和容器。
+ 委派授權。
+ 從 Active Directory 資源回收筒還原已刪除的物件。
+ 在 Directory Service上執行 Windows PowerShell 的 Active Directory 和網域名稱服務 (DNS) 模組。

`Admin` 帳戶也有權執行下列全網域活動：
+ 管理 DNS 組態 (新增、移除或更新記錄、區域和轉寄站)。
+ 檢視 DNS 事件日誌。
+ 檢視安全事件日誌。

**使用 建立目錄 AWS Managed Microsoft AD**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/directoryservicev2/](https://console.aws.amazon.com/directoryservicev2/) 開啟 Directory Service 主控台。

1. 選擇**設定目錄**。

1. 選擇 **AWS Managed Microsoft AD**。 AWS Managed Microsoft AD 是目前支援與 Amazon RDS 搭配使用的唯一選項。

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

1. 在 ******Enter directory information (輸入目錄資訊)****** 頁面上，提供下列資訊：
   + **版本** – 選擇滿足您需求的版本。
   + **目錄 DNS 名稱**** **– 目錄的完全合格名稱，例如 `corp.example.com`。
   + **目錄 NetBIOS 名稱**** **– 目錄的選用簡短名稱，例如 `CORP`。
   + **目錄描述** – 目錄的選用描述。
   + **管理員密碼**** **– 目錄管理員的密碼。目錄建立程序會建立含有使用者名稱 `Admin` 與這組密碼的管理者帳戶。

     目錄管理員密碼不得包含 "admin" 字組。密碼區分大小寫，長度須為 8 至 64 個字元。至少須有一位字元屬於以下四種類型中的三類：
     + 小寫字母 (a–z) 
     + 大寫字母 (A–Z) 
     + 數字 (0–9) 
     + 非英數字元 (\~\!@\#$%^&\*\_-\+=`\|\\(){}[]:;"'<>,.?/) 
     + 確認密碼 – 重新輸入管理員密碼。
**重要**  
請確定您儲存此密碼。 Directory Service 不會儲存此密碼，而且無法擷取或重設。

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

1. 在 **Choose VPC and subnets (選擇 VPC 和子網路)** 頁面上，提供下列資訊：
   + **VPC** – 選擇目錄的 VPC。您可在此相同 VPC 或不同 VPC 中建立 RDS for Db2 資料庫執行個體。
   + **子網路** – 選擇目錄伺服器的子網路。這兩個子網路必須位於不同的可用區域。

1. 選擇 **Next (下一步)**。

1. 檢閱目錄資訊。如果需要變更，請選擇 **Previous (上一步)**，然後進行變更。若資訊無誤，請選擇 **Create directory (建立目錄)**。  
![在 Directory Service 主控台中建立目錄時的檢閱和建立視窗。](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/db2-create-ADS-directory.png)

建立目錄需要幾分鐘的時間。成功建立時，**Status (狀態)** 值會變更為 **Active (作用中)**。

若要查看目錄的相關資訊，請選擇**目錄 ID** 底下的目錄 ID。請記下 **Directory ID (目錄 ID)** 值，建立或修改 RDS for Db2 資料庫執行個體時需要此值。

![Directory Service 主控台中具有目錄 ID 的目錄詳細資訊區段。](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/db2-ADS-directory-details.png)


## 步驟 2：建立信任
<a name="db2-kerberos-setting-up-create-forest-trust"></a>

如果您計劃僅使用 AWS Managed Microsoft AD，請跳至 [步驟 3：為 Amazon RDS 建立存取的 IAM 角色 Directory Service](#db2-kerberos-setting-up-create-iam-role)。

若要使用自我管理 Active Directory 來啟用 Kerberos 身分驗證，您必須在自我管理 Active Directory 與 之間建立樹系信任關係。樹系信任是 Microsoft AD 與自我管理 Active Directory 與上一個步驟中 AWS Managed Microsoft AD 建立的 之間的信任關係。信任也可以是雙向，其中兩個 Active Directory 互相信任。如需使用 設定樹系信任的詳細資訊 Directory Service，請參閱《 *AWS Directory Service 管理指南*》中的[何時建立信任關係](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_setup_trust.html)。

## 步驟 3：為 Amazon RDS 建立存取的 IAM 角色 Directory Service
<a name="db2-kerberos-setting-up-create-iam-role"></a>

若要讓 Amazon RDS Directory Service 為您呼叫 ，您需要 AWS 帳戶 使用 受管 IAM 政策 的 IAM 角色`AmazonRDSDirectoryServiceAccess`。此角色允許 Amazon RDS 呼叫 Directory Service。

當您使用 建立資料庫執行個體， AWS 管理主控台 且主控台使用者帳戶具有 `iam:CreateRole`許可時，主控台會自動建立所需的 IAM 角色。在此情況下，角色名稱為 `rds-directoryservice-kerberos-access-role`。否則，您必須手動建立 IAM 角色。當您建立此 IAM 角色時，請選擇 `Directory Service`，然後將 AWS 受管政策連接至`AmazonRDSDirectoryServiceAccess`該角色。

如需為服務建立 IAM 角色的詳細資訊，請參閱《*IAM 使用者指南*》中的[建立角色以委派許可給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

**注意**  
用於 Windows Authentication for RDS for Microsoft SQL Server 的 IAM 角色不可用於 RDS for Db2。

作為使用 `AmazonRDSDirectoryServiceAccess` 受管政策的替代方案，您可以建立具有必要許可的政策。在此情況下，IAM 角色必須有以下 IAM 信任政策：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "directoryservice.rds.amazonaws.com",
          "rds.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

此角色也須具有下列 IAM 角色政策：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "ds:DescribeDirectories",
        "ds:AuthorizeApplication",
        "ds:UnauthorizeApplication",
        "ds:GetAuthorizedApplicationDetails"
      ],
    "Effect": "Allow",
    "Resource": "*"
    }
  ]
}
```

------

## 步驟 4：建立和設定使用者
<a name="db2-kerberos-setting-up.create-users"></a>

您可以使用 Active Directory Users and Computers 工具來建立使用者。這是 Active Directory Domain Services 和 Active Directory Lightweight Directory Services 工具之一。如需詳細資訊，請參閱 Microsoft 文件中的[將使用者和電腦新增至 Active Directory 網域](https://learn.microsoft.com/en-us/troubleshoot/windows-server/identity/create-an-active-directory-server#add-users-and-computers-to-the-active-directory-domain)。在此情況下，使用者是個人或其他實體，例如其電腦屬於網域，而其身分在目錄中維護。

若要在 Directory Service 目錄中建立使用者，您必須連線到以 Windows為基礎的 Amazon EC2 執行個體，該執行個體是 Directory Service 目錄的成員。同時，您必須以具有建立使用者之許可的使用者身分來登入。如需詳細資訊，請參閱《AWS Directory Service 管理指南》**中的[建立使用者](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups_create_user.html)。

## 步驟 5：在 中建立 Db2 管理員群組的 RDS AWS Managed Microsoft AD
<a name="db2-kerberos-setting-up-vpc-peering"></a>

RDS for Db2 不支援主要使用者或兩個 Amazon RDS 預留使用者 `rdsdb` 和 `rdsadmin` 的 Kerberos 身分驗證。相反地，您需要建立一個名為 `masterdba` 的新群組 AWS Managed Microsoft AD。如需詳細資訊，請參閱 Microsoft 文件中的[在 Active Directory 中建立群組帳戶](https://learn.microsoft.com/en-us/windows/security/operating-system-security/network-security/windows-firewall/create-a-group-account-in-active-directory)。您新增至此群組的任何使用者都將具有主要使用者權限。

啟用 Kerberos 身分驗證後，主要使用者會失去 `masterdba` 角色。因此，除非您停用 Kerberos 身分驗證，否則主要使用者將無法存取執行個體本機使用者群組成員資格。若要繼續使用具有密碼登入的主要使用者，請在 AWS Managed Microsoft AD 上建立與主要使用者同名的使用者。然後，將該使用者新增至群組 `masterdba`。

## 步驟 6：修改資料庫參數
<a name="db2-kerberos-setting-up-modify-db-parameter"></a>

如果您打算 AWS Managed Microsoft AD 僅使用 ，請跳至 [步驟 7：建立或修改 RDS for Db2 資料庫執行個體步驟 7：建立或修改資料庫執行個體](#db2-kerberos-setting-up-create-modify)。

若要使用自我管理 Active Directory 來啟用 Kerberos 身分驗證，您必須在參數群組中將參數 `rds.active_directory_configuration` 設定為 `AWS_MANAGED_AD_WITH_TRUST`。根據預設，此參數設定為 `AWS_MANAGED_AD` ，僅適用於 AWS Managed Microsoft AD。

如需修改資料庫參數的相關資訊，請參閱 [修改參數群組中的參數](db2-supported-parameters.md#db2-modifying-parameter-group-parameters)。

## 步驟 7：建立或修改 RDS for Db2 資料庫執行個體
<a name="db2-kerberos-setting-up-create-modify"></a>

建立或修改要搭配您目錄使用的 RDS for Db2 資料庫執行個體。您可以使用 AWS 管理主控台、 AWS CLI或 RDS API，將資料庫執行個體與目錄建立關聯。您可採用下列其中一種方式來這麼做：
+ 使用主控台、[https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 命令或 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) API 作業來建立新的 RDS for Db2 資料庫執行個體。如需說明，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 使用主控台、[https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令，或 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) API 作業，修改現有的 RDS for Db2 資料庫執行個體。如需說明，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
+ 使用主控台、[https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) 命令或 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) API 作業，從資料庫快照還原 RDS for Db2 資料庫執行個體。如需說明，請參閱[還原至資料庫執行個體](USER_RestoreFromSnapshot.md)。
+ 使用主控台、[https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) 命令或 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) API 作業，將 RDS for Db2 資料庫執行個體還原至時間點。如需說明，請參閱[將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)。

僅有 VPC 中的 RDS for Db2 資料庫執行個體支援 Kerberos 身分驗證。資料庫執行個體可在與目錄相同的 VPC 中，或在不同 VPC 中。資料庫執行個體必須使用允許目錄 VPC 內傳入和傳出的安全群組，如此資料庫執行個體才能與目錄通訊。

### 主控台
<a name="db2-kerberos-setting-up-create-modify-console"></a>

使用主控台建立、修改或還原資料庫執行個體時，請在**資料庫身分驗證**區段中選擇**密碼和 Kerberos 身分驗證**。然後選擇 **Browse Directory** (瀏覽目錄)。選取目錄或選擇**建立新目錄**以使用 Directory Service。

![在 Amazon RDS 主控台中選取含有密碼和 Kerberos 身分驗證的資料庫身分驗證區段。](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/db2-database-authentication-directory.png)


### AWS CLI
<a name="db2-kerberos-setting-up-create-modify-cli"></a>

當您使用 時 AWS CLI，資料庫執行個體需要下列參數才能使用您建立的目錄：
+ 針對 `--domain` 參數，使用您建立目錄時產生的網域識別符 ("`d-*`" 識別符)。
+ 針對 `--domain-iam-role-name` 參數，使用您建立的規則，其會使用受管 IAM 政策 `AmazonRDSDirectoryServiceAccess`。

下列範例會修改資料庫執行個體來使用目錄。將範例中的以下預留位置取代為自訂值：
+ {{db\_instance\_name}} – RDS for Db2 資料庫執行個體的名稱。
+ {{directory\_id}} – 您所建立 AWS Directory Service for Microsoft Active Directory 目錄的 ID。
+ {{role\_name}} – 您所建立 IAM 角色的名稱。

```
aws rds modify-db-instance --db-instance-identifier {{db_instance_name}} --domain d-{{directory_id}} --domain-iam-role-name {{role_name}} 
```

**重要**  
如果您修改資料庫執行個體，以啟用 Kerberos 身分驗證，請在進行變更後重新啟動資料庫執行個體。

## 步驟 8：在 PowerShell 中擷取 Active Directory 群組 SID
<a name="db2-kerberos-setting-up-retrieve-ad-group-sid"></a>

安全 ID (SID) 可唯一識別安全主體或安全群組。在 Active Directory 中建立安全群組或帳戶時，Active Directory 會將 SID 指派給群組。若要從 Active Directory 擷取 AD 安全群組 SID，請在屬於 Active Directory 網域的 Windows 用戶端機器中使用 `Get-ADGroup` cmdlet。`Identity` 參數會指定您要使用 SID 的 Active Directory 群組名稱。

下列範例會傳回 Active Directory 群組 `adgroup1` 的 SID。

```
C:\Users\Admin> Get-ADGroup -Identity adgroup1 | select SID

             SID
-----------------------------------------------
S-1-5-21-3168537779-1985441202-1799118680-1612
```

您必須為所有與資料庫相關的群組產生此映射。

## 步驟 9：將 SID 到 GroupName 映射新增至您的 RDS for Db2 資料庫執行個體
<a name="db2-kerberos-setting-up-add-sid-group-mapping"></a>

您需要將上一個步驟中建立的 SID 到 GroupName 映射新增至 RDS for Db2 資料庫執行個體。對於每個映射，請呼叫下列預存程序。將 {{SID}} 和 {{group\_name}} 取代為您自己的資訊。

```
db2 connect to rdsadmin
db2 "call rdsadmin.set_sid_group_mapping(?, '{{SID}}','{{group_name}}')"
```

如需詳細資訊，請參閱[rdsadmin.set\_sid\_group\_mapping](db2-sp-granting-revoking-privileges.md#db2-sp-set-sid-group-mapping)。

如需檢查任務狀態的相關資訊，請參閱 [rdsadmin.get\_task\_status](db2-user-defined-functions.md#db2-udf-get-task-status)。

## 步驟 10：設定 Db2 用戶端
<a name="db2-kerberos-setting-up-create-logins"></a>

**設定 Db2 用戶端**

1. 建立可指向網域的 **/etc/krb5.conf** 檔案 (或同等檔案)。
**注意**  
對於 Windows 作業系統，建立 **C:\\windows\\krb5.ini** 檔案。

1. 確認流量可以在用戶端主機與 之間流動 Directory Service。請使用 Netcat 等網路公用程式檢查以下各項任務：

   1. 確認透過 DNS 傳送至連接埠 53 的流量。

   1. 確認透過 TCP/UDP 傳送至連接埠 53 和 Kerberos 的流量，其中包括用於 Directory Service的連接埠 88 和 464。

1. 確定流量可透過資料庫連接埠在用戶端主機和資料庫執行個體之間往來。您可以使用 `db2` 命令來連線及存取資料庫。

下列範例是 的 /etc/krb5.conf 檔案內容 AWS Managed Microsoft AD：

```
[libdefaults]
default_realm = EXAMPLE.COM
[realms]
EXAMPLE.COM = {
kdc = example.com
admin_server = example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
```