

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

# 針對 Aurora MySQL 使用 Kerberos 身分驗證
<a name="aurora-mysql-kerberos"></a>

您可以使用 Kerberos 身分驗證來在使用者連線到您的 Aurora MySQL 資料庫叢集時對其進行身分驗證。若要這麼做，請將資料庫叢集設定為使用 AWS Directory Service for Microsoft Active Directory 進行 Kerberos 身分驗證。AWS Directory Service for Microsoft Active Directory 也被稱為 AWS Managed Microsoft AD。其是一個可與 Directory Service 搭配使用的功能。如需進一步了解，請參閱《AWS Directory Service 管理指南》**中的[什麼是 Directory Service？](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)。

請先建立 AWS Managed Microsoft AD 目錄來存放使用者登入資料。然後，將 Active Directory 網域和其他資訊提供給 Aurora MySQL 資料庫叢集。當使用者向 Aurora MySQL 資料庫叢集進行驗證時，身分驗證請求會轉送到 AWS Managed Microsoft AD 目錄。

將您的所有登入資料保留在相同目錄可以節省您的時間和精力。透過這種方式，這樣您就有一個集中的位置來存放及管理多個資料庫叢集的登入資料。使用目錄也可以改善您的整體安全性描述檔。

除此之外，您也可以從自己的內部部署 Microsoft Active Directory 存取登入資料。若要執行這項操作，請建立信任網域關聯，讓 AWS Managed Microsoft AD 目錄信任您的內部部署 Microsoft Active Directory。如此一來 ，使用者就可以透過在存取您內部部署網路的工作負載時的相同 Windows 單一登入 (SSO) 體驗，來存取 Aurora MySQL 資料庫叢集。

資料庫可以使用 Kerberos、AWS Identity and Access Management (IAM)，或同時使用 Kerberos 和 IAM 身分驗證。不過，因為 Kerberos 和 IAM 身分驗證提供了不同的身分驗證方法，所以特定使用者只能使用一種或其他身分驗證方法登入資料庫，但不能同時使用兩者。如需 IAM 身分驗證的詳細資訊，請參閱 [ IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.md)。

**Contents**
+ [Aurora MySQL 資料庫叢集的 Kerberos 身分驗證概觀](#aurora-mysql-kerberos-setting-up-overview)
+ [Aurora MySQL 的 Kerberos 身分驗證限制](#aurora-mysql-kerberos.limitations)
+ [為 Aurora MySQL 資料庫叢集設定 Kerberos 身分驗證](aurora-mysql-kerberos-setting-up.md)
  + [步驟 1：使用 建立目錄 AWS Managed Microsoft AD](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-directory)
  + [步驟 2：(選擇性) 為內部部署 Active Directory 建立信任](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-trust)
  + [步驟 3：建立供 Amazon Aurora 使用的 IAM 角色](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.CreateIAMRole)
  + [步驟 4：建立和設定使用者](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-users)
  + [步驟 5：建立或修改 Aurora MySQL 資料庫叢集](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-modify)
  + [步驟 6：建立使用 Kerberos 身分驗證的 Aurora MySQL 使用者](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-logins)
    + [修改現有的 Aurora MySQL 登入](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos.modify-login)
  + [第 7 步：設定 MySQL 用戶端](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.configure-client)
  + [步驟 8：(選用) 設定不區分大小寫的使用者名稱比較](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.case-insensitive)
+ [使用 Kerberos 身分驗證連線至 Aurora MySQL](aurora-mysql-kerberos-connecting.md)
  + [使用 Aurora MySQL Kerberos 登入，以連線至資料庫叢集](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos-connecting.login)
  + [使用 Aurora 全域資料庫進行 Kerberos 身分驗證](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos-connecting.global)
  + [從 RDS for MySQL 遷移至 Aurora MySQL](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos-connecting.rds)
  + [防止票證快取](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos.destroy-tickets)
  + [Kerberos 身分驗證的記錄](aurora-mysql-kerberos-connecting.md#aurora-mysql-kerberos.logging)
+ [管理網域中的資料庫叢集](aurora-mysql-kerberos-managing.md)
  + [了解網域成員資格](aurora-mysql-kerberos-managing.md#aurora-mysql-kerberos-managing.understanding)

## Aurora MySQL 資料庫叢集的 Kerberos 身分驗證概觀
<a name="aurora-mysql-kerberos-setting-up-overview"></a>

若要設定 Aurora MySQL 資料庫叢集的 Kerberos 身分驗證，請完成下列一般步驟。稍後會提供這些步驟的詳細說明。

1. 使用 AWS Managed Microsoft AD 來建立 AWS Managed Microsoft AD 目錄。您可以使用 AWS 管理主控台、AWS CLI 或 Directory Service 來建立目錄。如需更多說明，請參閱《AWS Directory Service 管理指南》**中的[建立您的 AWS Managed Microsoft AD 目錄](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started_create_directory.html)。

1. 建立使用受管 IAM 政策 `AmazonRDSDirectoryServiceAccess` 的 AWS Identity and Access Management (IAM) 角色。該角色允許 Amazon Aurora 對您的目錄進行呼叫。

   針對可允許存取權的角色，必須在 AWS 區域 中啟用您 AWS 帳戶的 AWS Security Token Service (AWS STS) 端點。AWS STS 端點在所有 AWS 區域 中預設為啟用，您無須採取任何進一步的動作就可以使用這些端點。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[在 AWS 區域 中啟用與停用 AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#sts-regions-activate-deactivate)。

1. 使用 Microsoft Active Directory 工具，在 AWS Managed Microsoft AD 目錄中建立和設定使用者。如需在 Active Directory 建立使用者的詳細資訊，請參閱《*AWS 管理指南*》中的[管理 AWS Directory Service 受管 Microsoft AD 中的使用者和群組](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups.html)。

1. 建立或修改 Aurora MySQL 資料庫叢集。如果您在建立請求中使用 CLI 或 RDS API，請使用 `Domain` 參數指定網域識別符。使用您在建立目錄時產生的 `d-*` 識別符，以及您建立的 IAM 角色名稱。

   如果您修改了現有的 Aurora MySQL 資料庫叢集以使用 Kerberos 身分驗證，將設定資料庫叢集的網域和 IAM 角色參數。在與網域目錄相同的 VPC 中尋找資料庫叢集。

1. 使用 Amazon RDS 主要使用者登入資料來連線到 Aurora MySQL 資料庫叢集。使用 [步驟 6：建立使用 Kerberos 身分驗證的 Aurora MySQL 使用者](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-logins) 中的指示，在 Aurora MySQL 中建立資料庫使用者。

   您透過這種方式建立的使用者可以使用 Kerberos 身分驗證登入 Aurora MySQL 資料庫叢集。如需更多詳細資訊，請參閱 [使用 Kerberos 身分驗證連線至 Aurora MySQL](aurora-mysql-kerberos-connecting.md)。

若要使用內部部署或自行託管的 Microsoft Active Directory 來使用 Kerberos 身分驗證，請建立*樹系信任*。樹系信任是兩個網域群組之間的信任關係。信任可以是單向或雙向。如需使用 Directory Service 設定樹系信任的詳細資訊，請參閱《AWS Directory Service 管理指南》**中的[何時建立信任關係](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_setup_trust.html)。

## Aurora MySQL 的 Kerberos 身分驗證限制
<a name="aurora-mysql-kerberos.limitations"></a>

下列限制適用於 Aurora MySQL 的 Kerberos 身分驗證：
+ Aurora MySQL 的 3.03 及更高版本支援 Kerberos 身分驗證。

  如需 AWS 區域 支援的相關資訊，請參閱 [使用 Aurora MySQL 進行 Kerberos 身分驗證](Concepts.Aurora_Fea_Regions_DB-eng.Feature.KerberosAuthentication.md#Concepts.Aurora_Fea_Regions_DB-eng.Feature.KerberosAuthentication.amy)。
+ 若要搭配使用 Kerberos 身分驗證與 Aurora MySQL，您的 MySQL 用戶端或連接器必須在 Unix 平台上使用 8.0.26 或更高版本，在 Windows 上使用 8.0.27 或更高版本。否則，用戶端 `authentication_kerberos_client` 外掛程式將不可用，您便無法進行身分驗證。
+ Aurora MySQL 僅支援 AWS Managed Microsoft AD。不過，您可以將 Aurora MySQL 資料庫叢集加入至相同 AWS 區域 中，不同帳戶所擁有的共用受管 Microsoft AD 網域。

  您也可以使用您自己的內部部署 Active Directory。如需更多詳細資訊，請參閱 [步驟 2：(選擇性) 為內部部署 Active Directory 建立信任](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-trust)。
+ 使用 Kerberos 驗證從 MySQL 用戶端或 Windows 作業系統上驅動程式連線至 Aurora MySQL 叢集的使用者時，資料庫使用者名稱的字元大小寫預設必須與 Active Directory 中的使用者大小寫相符。例如，若 Active Directory 中的使用者顯示為 `Admin`，則資料庫使用者名稱必須為 `Admin`。

  不過，您現在可以搭配 `authentication_kerberos` 外掛程式使用不區分大小寫的使用者名稱比較。如需更多詳細資訊，請參閱 [步驟 8：(選用) 設定不區分大小寫的使用者名稱比較](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.case-insensitive)。
+ 開啟此功能後，您必須重新啟動讀取器資料庫執行個體才能安裝 `authentication_kerberos` 外掛程式。
+ 不支援 `authentication_kerberos` 外掛程式的資料庫執行個體複寫可能會導致複寫失敗。
+ 若要讓 Aurora 全域資料庫使用 Kerberos 身分驗證，您必須為全域資料庫中的每個資料庫叢集進行設定。
+ 網域名稱必須少於 62 個字元。
+ 開啟 Kerberos 身分驗證後，請勿修改資料庫叢集連接埠。若您修改連接埠，Kerberos 身分驗證會無法運作。

# 為 Aurora MySQL 資料庫叢集設定 Kerberos 身分驗證
<a name="aurora-mysql-kerberos-setting-up"></a>

使用 AWS Managed Microsoft AD 設定 Aurora MySQL 資料庫叢集的 Kerberos 身分驗證。若要設定 Kerberos 身分驗證，請遵循下列步驟。

**Topics**
+ [步驟 1：使用 建立目錄 AWS Managed Microsoft AD](#aurora-mysql-kerberos-setting-up.create-directory)
+ [步驟 2：(選擇性) 為內部部署 Active Directory 建立信任](#aurora-mysql-kerberos-setting-up.create-trust)
+ [步驟 3：建立供 Amazon Aurora 使用的 IAM 角色](#aurora-mysql-kerberos-setting-up.CreateIAMRole)
+ [步驟 4：建立和設定使用者](#aurora-mysql-kerberos-setting-up.create-users)
+ [步驟 5：建立或修改 Aurora MySQL 資料庫叢集](#aurora-mysql-kerberos-setting-up.create-modify)
+ [步驟 6：建立使用 Kerberos 身分驗證的 Aurora MySQL 使用者](#aurora-mysql-kerberos-setting-up.create-logins)
+ [第 7 步：設定 MySQL 用戶端](#aurora-mysql-kerberos-setting-up.configure-client)
+ [步驟 8：(選用) 設定不區分大小寫的使用者名稱比較](#aurora-mysql-kerberos-setting-up.case-insensitive)

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

Directory Service 在 AWS 雲端中建立全受管 Active Directory。當您建立 AWS Managed Microsoft AD 目錄時， 會代表您 Directory Service 建立兩個網域控制站和網域名稱系統 (DNS) 伺服器。目錄伺服器是在 VPC 的不同子網路中建立。此備援有助於確保即使發生故障，您仍然可以存取目錄。

當您建立 AWS Managed Microsoft AD 目錄時， 會代表您 Directory Service 執行下列任務：
+ 在 VPC 內設定 Active Directory。
+ 建立含有使用者名稱 `Admin` 與指定密碼的目錄管理員帳戶。您可以使用此帳戶來管理目錄。
**注意**  
請務必儲存此密碼。 Directory Service 不會儲存它。您可以重設此密碼，但是無法擷取此密碼。
+ 建立目錄控制器的安全群組。

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

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

`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. 在導覽窗格中，選擇 **Directories** (目錄)，然後選擇 **Set up directory** (設定目錄)。

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

1. 輸入下列資訊：  
**目錄 DNS 名稱**  
目錄的完全合格名稱，例如 **corp.example.com**。  
**目錄 NetBIOS 名稱**  
目錄的簡短名稱，例如：**CORP**。  
**目錄描述**  
(選用) 目錄的描述。  
**管理員密碼**  
目錄管理員的密碼。目錄建立程序會建立含有使用者名稱 Admin 與這組密碼的管理員帳戶。  
目錄管理員密碼不得包含 "admin" 字組。密碼區分大小寫，長度須為 8 至 64 個字元。至少須有一位字元屬於以下四種類型中的三類：  
   + 小寫字母 (a–z)
   + 大寫字母 (A–Z)
   + 數字 (0–9)
   + 非英數字元 (\$1\$1@\$1\$1%^&\$1\$1-\$1=`\$1\$1()\$1\$1[]:;"'<>,.?/)  
**Confirm password (確認密碼)**  
重新輸入的管理員密碼。

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

1.  在 **Networking (聯網)** 區段輸入以下資訊，然後選擇 **Next (下一步)**。  
**VPC**  
目錄的 VPC。在相同的 VPC 中建立 Aurora MySQL 資料庫叢集。  
**子網路**  
目錄伺服器的子網路。這兩個子網路必須位於不同的可用區域。

1. 檢閱目錄資訊，並進行必要的變更。若資訊無誤，請選擇 **Create directory (建立目錄)**。  
![\[建立期間的目錄詳細資訊頁面\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/WinAuth2.png)

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

如要查看您目錄的資訊，請在目錄清單中選擇目錄名稱。請記下**目錄 ID**，因為您在建立或修改 Aurora MySQL 資料庫叢集時將需要這個值。

![\[在目錄詳細資訊頁面上的目錄 ID\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/WinAuth3.png)


## 步驟 2：(選擇性) 為內部部署 Active Directory 建立信任
<a name="aurora-mysql-kerberos-setting-up.create-trust"></a>

如果您不打算使用自己的內部部署 Microsoft Active Directory，請跳至[步驟 3：建立供 Amazon Aurora 使用的 IAM 角色](#aurora-mysql-kerberos-setting-up.CreateIAMRole).

若要搭配現場部署 Active Directory 使用 Kerberos 身分驗證，您需要使用現場部署 Microsoft Active Directory 與 AWS Managed Microsoft AD 目錄 （在 中建立） 之間的樹系信任來建立信任網域關係[步驟 1：使用 建立目錄 AWS Managed Microsoft AD](#aurora-mysql-kerberos-setting-up.create-directory)。信任可以是單向的，其中 AWS Managed Microsoft AD 目錄信任內部部署 Microsoft Active Directory。信任也可以是雙向，其中兩個 Active Directory 互相信任。如需使用 設定信任的詳細資訊 Directory Service，請參閱《 *AWS Directory Service 管理指南*》中的[何時建立信任關係](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_setup_trust.html)。

**注意**  
如果您使用內部部署 Microsoft Active Directory：  
Windows 用戶端無法使用 Aurora 自訂端點進行連線。如需詳細資訊，請參閱 [Amazon Aurora 端點連線](Aurora.Overview.Endpoints.md)。
針對[全球資料庫](aurora-global-database.md)：  
Windows 用戶端只能使用全域資料庫主要 AWS 區域 中的執行個體端點或叢集端點進行連線。
Windows 用戶端無法使用次要叢集端點進行連線 AWS 區域。

請確定您的內部部署 Microsoft Active Directory 網域名稱包含對應至新建立之信任關係的 DNS 尾碼路由。以下螢幕擷取畫面顯示了一個範例。

![\[DNS 路由對應至建立的信任\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/kerberos-auth-trust.png)


## 步驟 3：建立供 Amazon Aurora 使用的 IAM 角色
<a name="aurora-mysql-kerberos-setting-up.CreateIAMRole"></a>

若要讓 Amazon Aurora Directory Service 為您呼叫 ，您需要使用 受管 IAM 政策 的 AWS Identity and Access Management (IAM) 角色`AmazonRDSDirectoryServiceAccess`。此角色允許 Aurora 呼叫 Directory Service。

當您使用 建立資料庫叢集 AWS 管理主控台並擁有 `iam:CreateRole`許可時，主控台會自動建立此角色。在此情況下，角色名稱為 `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)。

您可以選擇性地建立具有必要許可的政策，而不是使用受管 IAM 政策 `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="aurora-mysql-kerberos-setting-up.create-users"></a>

您可以使用 Active Directory 使用者和運算集區來建立使用者。這個工具是 Active Directory Domain Services 和 Active Directory 輕量型目錄服務工具的一部分。使用者代表具有目錄存取權的個人或實體。

若要在 Directory Service 目錄中建立使用者，您可以使用已加入 Directory Service 目錄的 Microsoft Windows 為基礎的內部部署或 Amazon EC2 執行個體。您必須以具有建立使用者之許可的使用者身分來登入執行個體。如需詳細資訊，請參閱*《 AWS Managed Microsoft AD Directory Service 管理指南》*中的[管理AWS 中的使用者和群組](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/creating_ad_users_and_groups.html)。

## 步驟 5：建立或修改 Aurora MySQL 資料庫叢集
<a name="aurora-mysql-kerberos-setting-up.create-modify"></a>

建立或修改 Aurora MySQL 資料庫叢集以搭配您的目錄使用。您可以使用 主控台 AWS CLI或 RDS API，將資料庫叢集與目錄建立關聯。您可採用下列其中一種方式來執行此動作：
+ 使用主控台、[ create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) CLI 命令或 [CreateDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) RDS API 操作，建立新的 Aurora MySQL 資料庫叢集。

  如需說明，請參閱[建立 Amazon Aurora 資料庫叢集](Aurora.CreateInstance.md)。
+ 使用主控台、[modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) CLI 命令或 [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) RDS API 操作，修改現有的 Aurora MySQL 資料庫叢集。

  如需說明，請參閱[修改 Amazon Aurora 資料庫叢集](Aurora.Modifying.md)。
+ 使用主控台、[restore-db-cluster-from-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html) CLI 命令或 [RestoreDBClusterFromSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html) RDS API 操作，從資料庫快照還原 Aurora MySQL 資料庫叢集。

  如需說明，請參閱[從資料庫叢集快照還原](aurora-restore-snapshot.md)。
+ 使用主控台、[ restore-db-cluster-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html) CLI 命令或 [RestoreDBClusterToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html) RDS API 操作，將 Aurora MySQL 資料庫叢集還原至某個時間點。

  如需說明，請參閱[將資料庫叢集還原至指定時間](aurora-pitr.md)。

僅有 VPC 中的 Aurora MySQL 資料庫叢集支援 Kerberos 身分驗證。資料庫叢集可在與目錄相同的 VPC 中，或在不同 VPC 中。資料庫叢集的 VPC 必須具備能允許對目錄進行傳出通訊的 VPC 安全群組。

### 主控台
<a name="aurora-mysql-kerberos-setting-up.create-modify.CON"></a>

使用主控台建立、修改或還原資料庫叢集時，請在 **Database authentication** (資料庫身分驗證) 區段中選擇 **Kerberos authentication** (Kerberos 身分驗證)。選擇 **Browse Directory (瀏覽目錄)** 並選取目錄，或是選擇 **Create a new directory (建立新目錄)**。

![\[建立資料庫叢集時的 Kerberos 身分驗證設定\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/kerberos-auth-create-cluster.png)


### AWS CLI
<a name="aurora-mysql-kerberos-setting-up.create-modify.CLI"></a>

當您使用 AWS CLI 或 RDS API 時，請將資料庫叢集與目錄建立關聯。資料庫叢集需要下列參數，才能使用您建立的網域目錄：
+ 針對 `--domain` 參數，使用您建立目錄時產生的網域識別碼 ("d-\$1" 識別碼)。
+ 針對 `--domain-iam-role-name` 參數，使用您建立的規則，其會使用受管 IAM 政策 `AmazonRDSDirectoryServiceAccess`。

例如，下列 CLI 命令會修改資料庫叢集來使用目錄。

對於 Linux、macOS 或 Unix：

```
aws rds modify-db-cluster \
    --db-cluster-identifier mydbcluster \
    --domain d-ID \
    --domain-iam-role-name role-name
```

在 Windows 中：

```
aws rds modify-db-cluster ^
    --db-cluster-identifier mydbcluster ^
    --domain d-ID ^
    --domain-iam-role-name role-name
```

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

## 步驟 6：建立使用 Kerberos 身分驗證的 Aurora MySQL 使用者
<a name="aurora-mysql-kerberos-setting-up.create-logins"></a>

資料庫叢集會加入 AWS Managed Microsoft AD 網域。因此，您可以從您網域中的 Active Directory 使用者中，建立 Aurora MySQL 使用者。資料庫許可會透過標準 Aurora MySQL 許可管理，並從這些使用者授予及撤銷。

您可以允許 Active Directory 使用者與 Aurora MySQL 進行身分驗證。若要執行此作業，請先使用 Amazon RDS 主要使用者登入資料連線到 Aurora MySQL 資料庫叢集，方法與其他任何的資料庫叢集相同。登入之後，請在 Aurora MySQL 中建立具有 Kerberos 身分驗證的外部身分驗證使用者，如下所示：

```
CREATE USER user_name@'host_name' IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';
```
+ 請將 `user_name` 換成使用者名稱。來自您網域的使用者 (人員和應用程式兩者) 現在可以使用 Kerberos 身分驗證從加入網域的用戶端機器連線至資料庫叢集。
+ 以主機名稱取代 `host_name`。您可以使用 `%` 做為萬用字元。您也可以使用特定的 IP 地址做為主機名稱。
+ 以網域的目錄領域名稱取代 *realm\$1name*。領域名稱通常是大寫的 DNS 網域名稱，例如 `CORP.EXAMPLE.COM`。領域是使用相同 Kerberos 金鑰發佈中心的系統群組。

下列範例會建立名為 `Admin` 的資料庫使用者，該名稱會以領域名稱 `MYSQL.LOCAL` 對 Active Directory 進行驗證。

```
CREATE USER Admin@'%' IDENTIFIED WITH 'authentication_kerberos' BY 'MYSQL.LOCAL';
```

### 修改現有的 Aurora MySQL 登入
<a name="aurora-mysql-kerberos.modify-login"></a>

您也可以使用下列語法，修改現有的 Aurora MySQL 登入，以使用 Kerberos 身分驗證：

```
ALTER USER user_name IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';
```

## 第 7 步：設定 MySQL 用戶端
<a name="aurora-mysql-kerberos-setting-up.configure-client"></a>

若要設定 MySQL 用戶端，請執行下列步驟：

1. 建立可指向網域的 `krb5.conf` 檔案 (或同等檔案)。

1. 確認流量可以在用戶端主機與 之間流動 Directory Service。請使用 Netcat 等網路公用程式檢查以下各項：
   + 確認透過 DNS 傳送至連接埠 53 的流量。
   + 確認透過 TCP/UDP 傳送至連接埠 53 和 Kerberos 的流量，其中包括用於 Directory Service的連接埠 88 和 464。

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

以下是 的範例`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
```

下列是內部部署 Microsoft Active Directory 的範例 `krb5.conf` 內容。

```
[libdefaults]
 default_realm = EXAMPLE.COM
[realms]
 EXAMPLE.COM = {
  kdc = example.com
  admin_server = example.com
 }
 ONPREM.COM = {
  kdc = onprem.com
  admin_server = onprem.com
 }
[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
 .onprem.com = ONPREM.COM
 onprem.com = ONPREM.COM  
 .rds.amazonaws.com = EXAMPLE.COM
 .amazonaws.com.rproxy.govskope.us.cn = EXAMPLE.COM
 .amazon.com = EXAMPLE.COM
```

## 步驟 8：(選用) 設定不區分大小寫的使用者名稱比較
<a name="aurora-mysql-kerberos-setting-up.case-insensitive"></a>

根據預設，MySQL 資料庫使用者名稱的字元大小寫必須符合 Active Directory 登入的字元大小寫。不過，您現在可以搭配 `authentication_kerberos` 外掛程式使用不區分大小寫的使用者名稱比較。若要這麼做，請將 `authentication_kerberos_caseins_cmp` 資料庫叢集參數設定為 `true`。

**使用不區分大小寫的使用者名稱比較**

1. 建立自訂資料庫叢集參數群組。請遵循[在 Amazon Aurora 中建立資料庫叢集參數群組](USER_WorkingWithParamGroups.CreatingCluster.md)中的程序。

1. 編輯新的參數群組，將 `authentication_kerberos_caseins_cmp` 的值設定為 `true`。請遵循[在 Amazon Aurora 中修改資料庫叢集參數群組中的參數](USER_WorkingWithParamGroups.ModifyingCluster.md)中的程序。

1. 將資料庫叢集參數群組與您的 Aurora MySQL 資料庫叢集建立關聯。請遵循[將資料庫叢集參數群組與 Amazon Aurora 中的資料庫叢集建立關聯](USER_WorkingWithParamGroups.AssociatingCluster.md)中的程序。

1. 重新啟動資料庫叢集。

# 使用 Kerberos 身分驗證連線至 Aurora MySQL
<a name="aurora-mysql-kerberos-connecting"></a>

為避免發生錯誤，請在 Unix 平台上使用 8.0.26 或更高版本的 MySQL 用戶端，在 Windows 上則使用 8.0.27 或更高版本。

## 使用 Aurora MySQL Kerberos 登入，以連線至資料庫叢集
<a name="aurora-mysql-kerberos-connecting.login"></a>

若要使用 Kerberos 身分驗證連線至 Aurora MySQL，您可以使用 [步驟 6：建立使用 Kerberos 身分驗證的 Aurora MySQL 使用者](aurora-mysql-kerberos-setting-up.md#aurora-mysql-kerberos-setting-up.create-logins) 的指示所建立的資料庫使用者身分登入。

在命令提示字元中，連線至與 Aurora MySQL 資料庫叢集相關聯的其中一個端點。當系統提示您輸入密碼時，請輸入與該使用者名稱相關聯的 Kerberos 密碼。

當您透過 Kerberos 進行身分驗證時，如果*票證授予票證* (TGT) 尚未存在，系統會產生一份 TGT。`authentication_kerberos` 外掛程式會使用 TGT 來取得*服務票證*，然後將其顯示給 Aurora MySQL 資料庫伺服器。

您可以在 Windows 或 Unix 上，透過 Kerberos 身分驗證，以 MySQL 用戶端連線至 Aurora MySQL。

### Unix
<a name="aurora-mysql-kerberos-connecting.login.unix"></a>

您可以使用下列其中一種方法來連線：
+ 手動取得 TGT。在此情況下，您不需要向 MySQL 用戶端提供密碼。
+ 直接向 MySQL 用戶端提供 Active Directory 登入密碼。

在 Unix 平台上，MySQL 用戶端 8.0.26 和更新版本可支援用戶端外掛程式。

**手動取得 TGT 以進行連線**

1. 在命令列界面中，請使用以下命令取得 TGT。

   ```
   kinit user_name
   ```

1. 使用下列 `mysql` 命令登入資料庫叢集的資料庫執行個體端點。

   ```
   mysql -h DB_instance_endpoint -P 3306 -u user_name -p
   ```
**注意**  
如果在資料庫執行個體上輪換 keytab，身分驗證便可能失敗。在此情況下，請重新執行 `kinit` 以取得新的 TGT。

**直接連線**

1. 在命令列界面中，使用下列 `mysql` 命令登入資料庫叢集的資料庫執行個體端點。

   ```
   mysql -h DB_instance_endpoint -P 3306 -u user_name -p
   ```

1. 輸入 Active Directory 使用者的密碼。

### Windows
<a name="aurora-mysql-kerberos-connecting.login.win"></a>

在 Windows 上，身分驗證通常會在登入時完成，因此您不需要手動取得 TGT 即可連線至 Aurora MySQL 資料庫叢集。資料庫使用者名稱的大小寫必須符合 Active Directory 中使用者的字元大小寫。例如，若 Active Directory 中的使用者顯示為 `Admin`，則資料庫使用者名稱必須為 `Admin`。

在 Windows 上，MySQL 用戶端 8.0.27 和更新版本可支援用戶端外掛程式。

**直接連線**
+ 在命令列界面中，使用下列 `mysql` 命令登入資料庫叢集的資料庫執行個體端點。

  ```
  mysql -h DB_instance_endpoint -P 3306 -u user_name
  ```

## 使用 Aurora 全域資料庫進行 Kerberos 身分驗證
<a name="aurora-mysql-kerberos-connecting.global"></a>

Aurora 全域資料庫可支援 Aurora MySQL 的 Kerberos 身分驗證。若要使用主要資料庫叢集的 Active Directory，來驗證次要資料庫叢集上的使用者，請將 Active Directory 複寫到次要 AWS 區域。您可以使用與主要叢集相同的網域 ID，在次要叢集上開啟 Kerberos 身分驗證。只有企業版的 Active Directory 支援 AWS Managed Microsoft AD 複寫。如需詳細資訊，請參閱《AWS Directory Service 管理指南》**中的[多區域複寫](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_configure_multi_region_replication.html)。

## 從 RDS for MySQL 遷移至 Aurora MySQL
<a name="aurora-mysql-kerberos-connecting.rds"></a>

從啟用 Kerberos 身分驗證的 RDS for MySQL 遷移到 Aurora MySQL 之後，請修改使用 `auth_pam` 外掛程式建立的使用者，以使用 `authentication_kerberos` 外掛程式。例如：

```
ALTER USER user_name IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';
```

## 防止票證快取
<a name="aurora-mysql-kerberos.destroy-tickets"></a>

如果 MySQL 用戶端應用程式啟動時不存在有效 TGT，則應用程式可以取得且快取 TGT。若要防止快取 TGT，請在 `/etc/krb5.conf` 檔案中設定組態參數。

**注意**  
此組態僅適用於執行 Unix 的用戶端主機，而非執行 Windows 的用戶端主機。

**為了防止 TGT 快取**
+ 請新增 `[appdefaults]` 區段至 `/etc/krb5.conf`，如下所示：

  ```
  [appdefaults]
    mysql = {
      destroy_tickets = true
    }
  ```

## Kerberos 身分驗證的記錄
<a name="aurora-mysql-kerberos.logging"></a>

`AUTHENTICATION_KERBEROS_CLIENT_LOG` 環境變數會設定 Kerberos 身分驗證的記錄層級。您可以使用日誌進行用戶端偵錯。

允許值為 1 至 5。日誌訊息會寫入標準錯誤輸出。下表描述各個記錄層級。


| Logging level (記錄層級) | 描述 | 
| --- | --- | 
| 1 或未設定 | 沒有記錄 | 
| 2 | 錯誤訊息 | 
| 3 | 錯誤和警告訊息 | 
| 4 | 錯誤、警告和資訊訊息 | 
| 5 | 錯誤、警告、資訊和偵錯訊息 | 

# 管理網域中的資料庫叢集
<a name="aurora-mysql-kerberos-managing"></a>

您可以使用 AWS CLI 或 RDS API 來管理資料庫叢集，以及其與受管 Active Directory 的關係。例如，您可以與適用於 Kerberos 身分驗證的 Active Directory 建立關聯，也可以解除關聯 Active Directory 來停用 Kerberos 身分驗證。您也可以將要由某個 Active Directory 於外部進行身分識別的資料庫叢集移至另一個 Active Directory。

例如，使用 Amazon RDS API，您可以執行下列動作：
+ 如要重新嘗試為失敗的成員資格啟用 Kerberos 身分驗證，請使用 `ModifyDBInstance` API 操作並指定目前成員資格的目錄 ID。
+ 如要更新成員資格的 IAM 角色名稱，請使用 `ModifyDBInstance` API 操作並指定目前成員資格的目錄 ID，以及新的 IAM 角色。
+ 停用資料庫叢集上的 Kerberos 身分驗證，使用 `ModifyDBInstance` API 操作並指定 `none` 做為網域參數。
+ 如要在網域之間移動資料庫叢集，請使用 `ModifyDBInstance` API 操作，並指定新網域的網域識別符做為網域參數。
+ 如要列出每個資料庫叢集的成員資格，請使用 `DescribeDBInstances` API 操作。

## 了解網域成員資格
<a name="aurora-mysql-kerberos-managing.understanding"></a>

在您建立或修改資料庫叢集之後，該執行個體會成為網域的成員。您可以執行 [describe-db-clusters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html) CLI 命令，來檢視資料庫叢集的網域成員資格狀態。資料庫叢集的狀態可以是下列其中一個：
+ `kerberos-enabled` – 資料庫叢集已開啟 Kerberos 身分驗證。
+  `enabling-kerberos` – AWS 正在此資料庫叢集上啟用 Kerberos 身分驗證。
+ `pending-enable-kerberos` – 此資料庫叢集上的 Kerberos 身分驗證啟用處於待處理狀態。
+ `pending-maintenance-enable-kerberos` – AWS 將在下次排定的維護時段嘗試在資料庫叢集上啟用 Kerberos 身分驗證。
+ `pending-disable-kerberos` – 此資料庫叢集上的 Kerberos 身分驗證停用處於待處理狀態。
+ `pending-maintenance-disable-kerberos` – AWS 將在下次排定的維護時段嘗試在資料庫叢集上停用 Kerberos 身分驗證。
+ `enable-kerberos-failed` – 有一個組態問題已禁止 AWS 在資料庫叢集上啟用 Kerberos 身分驗證。請在重新發出資料庫叢集修改命令之前檢查並修正您的組態。
+ `disabling-kerberos` – AWS 正在此資料庫叢集上停用 Kerberos 身分驗證。

由於網路連線問題或 IAM 角色不正確，請求啟用 Kerberos 身分驗證可能失敗。例如，假設您建立了資料庫叢集或修改了現有的資料庫叢集，並且嘗試啟用 Kerberos 身分驗證失敗。在此情況下，請重新發出修改命令，或修改新建立的資料庫叢集以加入網域。