使用適用於 SQL 伺服器的 RDS AWS 受管理的使用中目錄 - Amazon Relational Database Service

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

使用適用於 SQL 伺服器的 RDS AWS 受管理的使用中目錄

當使用者連線 AWS Managed Microsoft AD 至 SQL Server 資料庫執行個體的 RDS 時,您可以使用視窗驗證來驗證使用者。資料庫執行個體搭配使 AWS Directory Service for Microsoft Active Directory用 (也稱為 AWS Managed Microsoft AD) 以啟用 Windows 驗證。當使用者向加入信任網域的 SQL Server 資料庫執行個體進行驗證時,身分驗證請求會轉送到您使用 AWS Directory Service建立的網域目錄。

區域和版本可用性

Amazon RDS 僅 AWS Managed Microsoft AD 支持視窗身份驗證使用。RDS 不支援使用 AD Connector。如需詳細資訊,請參閱下列內容:

如需有關版本和區域可用性的詳細資訊,請參閱透過 RDS for SQL Server 進行 Kerberos 身分驗證

設定 Windows 身分驗證概觀

Amazon RDS 對 Windows 身分驗證使用混合模式。此方法表示主要使用者 (用來建立您的 SQL Server 資料庫執行個體的名稱和密碼) 使用 SQL 身分驗證。因為主要使用者帳戶是具有特殊權限的登入資料,您應該限制對此帳戶的存取。

若要使用現場部署或自行託管的 Microsoft Active Directory 獲得 Windows 身分驗證,請建立樹系信任。信任可以是單向或雙向。如需使用設定樹系信任的詳細資訊 AWS Directory Service,請參閱《AWS Directory Service 管理指南》的建立信任關係的時機。

若要為 SQL Server 資料庫執行個體設定 Windows 身分驗證,請執行下列步驟 (如 為 SQL Server 資料庫執行個體設定 Windows 身分驗證 所詳述):

  1. 使用 AWS Managed Microsoft AD AWS Management Console 或 AWS Directory Service API 建立 AWS Managed Microsoft AD 目錄。

  2. 如果您使用 AWS CLI 或 Amazon RDS API 建立 SQL 伺服器資料庫執行個體,請建立 AWS Identity and Access Management (IAM) 角色。此角色使用受管 IAM 政策 AmazonRDSDirectoryServiceAccess,而且 Amazon RDS 允許對目錄進行呼叫。如果您使用主控台來建立您的 SQL Server 資料庫執行個體, AWS 會為您建立 IAM 角色。

    若要讓角色允許存取,必須在您 AWS 帳戶的 [ AWS 地區] 中啟動 AWS Security Token Service (AWS STS) 端點。 AWS STS 依預設,所有 AWS 區域中的端點都處於作用中狀態,您可以使用它們,而無需執行任何進一步 如需詳細資訊,請參閱《IAM 使用者指南》中的管理 AWS 區域中的 AWS STS

  3. 使用 Microsoft 活動目錄工具在 AWS Managed Microsoft AD 目錄中創建和配置用戶和組。如需在 Microsoft Active Directory 建立使用者的詳細資訊,請參閱 AWS Directory Service 管理指南中的管理 AWS Managed Microsoft AD中的使用者和群組

  4. 如果您打算在不同 VPC 中尋找目錄和資料庫執行個體,請啟用跨 VPC 流量。

  5. 使用 Amazon RDS 從主控台或 Amazon RDS API 建立新的 SQL 伺服器資料庫執行個體。 AWS CLI在建立請求中,您可以提供建立目錄時產生的網域識別符 ("d-*" identifier) 和您建立之角色的名稱。您也可以將現有 SQL Server 資料庫執行個體修改為使用 Windows 身分驗證,方法是設定資料庫執行個體的網域和 IAM 角色參數。

  6. 如同對其他資料庫執行個體一般,使用 Amazon RDS 主要使用者登入資料來連接至 SQL Server 資料庫執行個體。由於資料庫執行個體已加入 AWS Managed Microsoft AD 網域,因此您可以從其網域中的 Active Directory 使用者和群組佈建 SQL Server 登入和使用者。(這些稱為 SQL Server "Windows" 登入。) 您可透過對這些 Windows 登入授予和撤銷的標準 SQL Server 許可來管理資料庫許可。

建立 Kerberos 身分驗證的端點

Kerberos 式身分驗證需要端點是客戶指定的主機名稱、句點,然後接著完整網域名稱 (FQDN)。例如,下列是您會對 Kerberos 式身分驗證使用的端點範例。在此範例中,SQL Server 資料庫執行個體主機名稱是 ad-test,而網域名稱是 corp-ad.company.com

ad-test.corp-ad.company.com

如果您要確定您的連線使用的是 Kerberos,執行下列查詢:

SELECT net_transport, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID;

為 SQL Server 資料庫執行個體設定 Windows 身分驗證

您可以使用 AWS Directory Service for Microsoft Active Directory(也稱為 AWS Managed Microsoft AD) 為 SQL Server 資料庫執行個體設定視窗驗證。若要設定 Windows 身分驗證,請執行下列步驟。

步驟 1:使用建立目錄 AWS Directory Service for Microsoft Active Directory

AWS Directory Service 在 AWS 雲中創建一個完全受管理的 Microsoft 活動目錄。當您建立 AWS Managed Microsoft AD 目錄時, AWS Directory Service 會代表您建立兩個網域控制站和網域名稱服務 (DNS) 伺服器。目錄伺服器是在兩個子網路中建立,而這兩個子網路是在 VPC 內的兩個不同可用區域中。此備援可協助確保即使失敗,仍能存取您的目錄。

建立目 AWS Managed Microsoft AD 錄時,請代表您 AWS Directory Service 執行下列工作:

  • 設定 VPC 內的 Microsoft Active Directory。

  • 建立含有使用者名稱 Admin 與指定密碼的目錄管理員帳戶。您可以使用此帳戶來管理目錄。

    注意

    請務必儲存此密碼。 AWS Directory Service 不會儲存此密碼,也無法擷取或重設密碼。

  • 建立目錄控制器的安全群組。

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

隨著您的 AWS Managed Microsoft AD 目錄建立的管理帳戶具有您的 OU 最常見管理活動的許可:

  • 建立更新或刪除使用者、群組和電腦。

  • 新增資源 (例如檔案或列印伺服器) 至您的網域,然後對您 OU 中的使用者和群組指派這些資源的許可。

  • 建立額外的 OU 和容器。

  • 委派授權。

  • 建立及連結群組政策。

  • 從 Active Directory 資源回收筒還原已刪除的物件。

  • 在活動目錄 Web 服務上運行 AD 和 DNS 視窗 PowerShell 模塊。

管理員帳戶也有權執行下列全網域活動:

  • 管理 DNS 組態 (新增、移除或更新記錄、區域和轉寄站)。

  • 檢視 DNS 事件日誌。

  • 檢視安全事件日誌。

若要建立目錄 AWS Managed Microsoft AD
  1. AWS Directory Service 主控台中,依序選擇 Directories (目錄)Set up directory (設定目錄)

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

  3. 選擇 Next (下一步)

  4. Enter directory information (輸入目錄資訊) 頁面上,提供下列資訊:

    版本

    選擇滿足您需求的版本。

    目錄 DNS 名稱

    目錄的完全合格名稱,例如 corp.example.com。SQL Server 不支援超過 47 個字元的名稱。

    目錄 NetBIOS 名稱

    目錄的簡短名稱,例如:CORP

    目錄描述

    選擇填寫其他目錄說明。

    管理員密碼

    目錄管理員的密碼。目錄建立程序會建立含有使用者名稱 Admin 與這組密碼的管理員帳戶。

    目錄管理員密碼不得包含 admin 一字。密碼區分大小寫,長度須為 8 至 64 個字元。至少須有一位字元屬於以下四種類型中的三類:

    • 小寫字母 (a-z)

    • 大寫字母 (A-Z)

    • 數字 (0-9)

    • 非英數字元 (~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)

    Confirm password (確認密碼)

    重新輸入管理員密碼。

  5. 選擇 Next (下一步)

  6. Choose VPC and subnets (選擇 VPC 和子網路) 頁面上,提供下列資訊:

    VPC

    選擇目錄的 VPC。

    注意

    您可以在不同 VPC 中尋找目錄和資料庫執行個體,但如果您這麼做,請務必啟用跨 VPC 流量。如需更多詳細資訊,請參閱 步驟 4:啟用目錄和資料庫執行個體之間的跨 VPC 流量

    子網路

    選擇目錄伺服器的子網路。這兩個子網路必須位於不同的可用區域。

  7. 選擇 Next (下一步)

  8. 檢閱目錄資訊。如果需要變更,請選擇 Previous (上一步)。若資訊無誤,請選擇 Create directory (建立目錄)

    檢閱和建立頁面

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

若要查看目錄的資訊,請選擇目錄清單中的目錄 ID。請記下 Directory ID (目錄 ID)。建立或修改 SQL Server 資料庫執行個體時需要此值。

目錄詳細資訊頁面

步驟 2:建立供 Amazon RDS 使用的 IAM 角色

如果您使用主控台來建立您的 SQL Server 資料庫執行個體,則可以略過此步驟。如果您使用 &CLI; 或 &RDS; API 來建立您的 SQL Server 資料庫執行個體,您必須建立使用受管 IAM 政策 AmazonRDSDirectoryServiceAccess 的 IAM 角色。此角色可讓 Amazon RDS AWS Directory Service 為您撥打電話。

如果您使用自訂原則來加入網域,而不是使用 AWS-managed AmazonRDSDirectoryServiceAccess 政策,請確定您允許該ds:GetAuthorizedApplicationDetails動作。由於 AWS Directory Service API 發生變更,此要求自 2019 年 7 月起生效。

以下 IAM 政策 (AmazonRDSDirectoryServiceAccess) 會提供對 AWS Directory Service的存取。

範例 提供存取權的 IAM 政策 AWS Directory Service
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ds:DescribeDirectories", "ds:AuthorizeApplication", "ds:UnauthorizeApplication", "ds:GetAuthorizedApplicationDetails" ], "Effect": "Allow", "Resource": "*" } ] }

建議您在資源型信任關係中使用 aws:SourceArnaws:SourceAccount 全域條件內容金鑰,將服務的許可限定於特定資來源。這是防止混淆代理人問題最有效的方式。

您可以同時使用全域條件內容索引鍵和包含帳號 ID 的 aws:SourceArn 值。在此情況下,當在相同陳述式中使用 aws:SourceAccount 值和 aws:SourceArn 裡的帳户時,兩者必須使用同樣的帳户 ID。

  • 如果您想要跨服務存取單一資源,請使用 aws:SourceArn

  • 如果您想要允許該帳戶中的任何資源與跨服務使用相關聯,請使用 aws:SourceAccount

在信任關係中,請務必使用 aws:SourceArn 全域條件內容索引鍵,其中包含存取角色的資源之完整 Amazon 資源名稱 (ARN)。為使用 Windows Authentication,請務必包含資料庫執行個體,如下列範例所示。

範例 與 Windows Authentication 全域條件內容索引鍵的信任關係
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier" ] } } } ] }

使用此 IAM 政策和信任關係建立 IAM 角色。如需建立 IAM 角色的詳細資訊,請參閱《IAM 使用者指南》中的建立客戶受管原則

步驟 3:建立和設定使用者和群組

您可以使用 Active Directory 使用者和運算集區來建立使用者及群組。這個工具是 Active Directory Domain Services 和 Active Directory 輕量型目錄服務工具之一。使用者代表具有目錄存取權的個人或實體。群組非常適合對使用者群組授予或拒絕權限,而無需將這些權限逐一套用到各個使用者。

若要在 AWS Directory Service 目錄中建立使用者和群組,您必須連線至屬於 AWS Directory Service 目錄成員的 Windows EC2 執行個體。您也必須以具有建立使用者及群組之許可的使用者身分來登入。如需詳細資訊,請參閱《AWS Directory Service 管理指南》中的新增使用者和群組 (Simple AD 和 AWS Managed Microsoft AD)

步驟 4:啟用目錄和資料庫執行個體之間的跨 VPC 流量

如果您打算在相同 VPC 中尋找目錄和資料庫執行個體,請略過本步驟,並移至步驟 5:建立或修改 SQL Server 資料庫執行個體

如果您打算在不同 VPC 中尋找目錄和資料庫執行個體,請使用 VPC 互連或 AWS Transit Gateway 來設定跨 VPC 流量。

下列程序會使用 VPC 互連來啟用 VPC 之間的流量。請遵循《Amazon Virtual Private Cloud 互連指南》什麼是 VPC 互連?的指示。

使用 VPC 互連以啟用跨 VPC 流量
  1. 設定適當的 VPC 路由規則,以確保網路流量可以雙向對流。

  2. 確保資料庫執行個體安全群組可以從目錄的安全群組接收傳入流量。

  3. 確保沒有網路存取控制清單 (ACL) 規則來封鎖流量。

如果目錄擁有不同的 AWS 帳戶,您必須共用該目錄。

在 AWS 帳戶之間共用目錄
  1. 按照AWS Directory Service 《管理指南》中的教學課程:共用目錄以進行無縫 EC2 網域加入中的說明,開始與將在其中建立資料庫執行個體的 AWS 帳戶共用 AWS Managed Microsoft AD 目錄

  2. 使用資料庫執行個體的帳戶登入 AWS Directory Service 主控台,並確保網域具有SHARED狀態,然後再繼續操作。

  3. 使用資料庫執行個體的帳戶登入 AWS Directory Service 主控台時,請記下目錄 ID 值。您可以使用此目錄 ID,將資料庫執行個體加入網域。

步驟 5:建立或修改 SQL Server 資料庫執行個體

建立或修改要搭配您目錄使用的 SQL Server 資料庫執行個體。您可以使用主控台、CLI 或 RDS API,將資料庫執行個體與目錄建立關聯。您可採用下列其中一種方式來這麼做:

Windows 身分驗證只支援 VPC 中的 Server 資料庫執行個體。

若要讓資料庫執行個體使用您建立的網域目錄,需要下列項目:

  • 對於 Directory (目錄),您必須選擇在建立目錄時產生的網域識別碼 (d-ID)。

  • 確定 VPC 安全群組具有可讓資料庫執行個體與目錄通訊的輸出規則。

Microsoft SQL Server Windows 身分驗證目錄

使用時 AWS CLI,資料庫執行個體需要下列參數才能使用您建立的目錄:

  • 針對 --domain 參數,使用您建立目錄時產生的網域識別符 (d-ID)。

  • 針對 --domain-iam-role-name 參數,使用您建立的規則,其會使用受管 IAM 政策 AmazonRDSDirectoryServiceAccess

例如,下列 CLI 命令會修改資料庫執行個體來使用目錄。

對於LinuxmacOS、或Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --domain d-ID \ --domain-iam-role-name role-name

在 Windows 中:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --domain d-ID ^ --domain-iam-role-name role-name
重要

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

步驟 6:建立 Windows 身分驗證 SQL Server 登入

如同對其他資料庫執行個體一般,使用 Amazon RDS 主要使用者登入資料來連接至 SQL Server 資料庫執行個體。由於資料庫執行個體已加入 AWS Managed Microsoft AD 網域,因此您可以佈建 SQL Server 登入和使用者。您可以從網域中的 Active Directory 使用者和群組執行這項操作。您可透過對這些 Windows 登入授予和撤銷的標準 SQL Server 許可來管理資料庫許可。

若要讓 Active Directory 使用者向 SQL Server 進行身分驗證,必須存在使用者或使用者為其成員之群組的 SQL Server Windows 登入。精細定義的存取控制是透過授予和撤銷這些 SQL Server 登入的許可來處理。沒有 SQL Server 登入或屬於具有此類登入的群組的使用者無法存取 SQL Server 資料庫執行個體。

需要 ALTER ANY LOGIN 許可,才能建立 Active Directory SQL Server 登入。如果您尚未使用此許可建立任何登入,請使用 SQL Server 身分驗證,以資料庫執行個體的主要使用者身分連線。

執行資料定義語言 (DDL) 命令來為 Active Directory 使用者或群組建立 SQL Server 登入,如下列範例。

注意

使用 Windows 2000 前版的登入名稱,以格式 domainName\login_name 來指定使用者和群組。您無法使用格式為 login_name@DomainName 的使用者原則名稱 (UPN)。

您只能使用 T-SQL 陳述式,在適用於 SQL 伺服器的 RDS 執行個體上建立視窗驗證登入。您無法使用 SQL 伺服器管理工作室來建立 Windows 驗證登入。

USE [master] GO CREATE LOGIN [mydomain\myuser] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english]; GO

如需詳細資訊,請參閱 Microsoft 開發人員網路文件中的 建立登入 (Transact-SQL)

來自您網域的使用者 (人員和應用程式兩者),現在可以使用 Windows 身分驗證從加入網域的用戶端機器連接至 RDS for SQL Server 執行個體。

管理網域中的資料庫執行個體

您可以使用主控 AWS CLI台或 Amazon RDS API 來管理資料庫執行個體及其與網域的關係。例如,您可以將資料庫執行個體移入、移出或移至網域之間。

例如,使用 Amazon RDS API,您可以執行下列動作:

  • 若要對失敗的成員資格重新嘗試加入網域,請使用 ModifyDBInstance API 操作,並指定目前成員資格的目錄 ID。

  • 如要更新成員資格的 IAM 角色名稱,請使用 ModifyDBInstance API 操作並指定目前成員資格的目錄 ID,以及新的 IAM 角色。

  • 若要從網域移除資料庫執行個體,請使用 ModifyDBInstance API 操作,並指定 none 做為網域參數。

  • 如要在網域之間移動資料庫執行個體,請使用 ModifyDBInstance API 操作,並指定新網域的網域識別符做為網域參數。

  • 若要列出每個資料庫執行個體的成員資格,請使用 DescribeDBInstances API 操作。

了解網域成員資格

在您建立或修改資料庫執行個體之後,執行個體會成為網域的成員。主 AWS 控台會指出資料庫執行個體的網域成員資格狀態。資料庫執行個體的狀態可以是下列其中一個:

  • 已加入 – 執行個體是網域的成員。

  • 加入中 – 執行個體正處於成為網域成員的程序中。

  • 加入待定 – 執行個體成員資格待定。

  • 暫停維護加入 — AWS 會在下一個排定的維護時段中嘗試讓執行個體成為網域的成員。

  • 移除待定 – 從網域移除執行個體待定。

  • 暫停維護移除 — AWS 會在下一個排定的維護時段中嘗試從網域移除執行個體。

  • 失敗 – 組態問題讓執行個體無法加入網域。請在重新發出執行個體修改命令之前檢查並修正您的組態。

  • 移除中 – 正在從網域移除執行個體。

因為網路連線問題或 IAM 角色不正確,成為網域成員的請求可能失敗。例如,您可以建立一個資料庫執行個體或修改現有執行個體,並嘗試讓資料庫執行個體失敗,以便成為網域的成員。在此情況下,請重新發出命令以建立或修改資料庫執行個體,或修改新建立的執行個體以加入網域。

使用 Windows 身分驗證連線至 SQL Server

若要使用 Windows 身分驗證連線至 SQL Server,您必須以網域使用者的身分登入到加入網域的電腦。啟動 SQL Server Management Studio 之後,選擇 Windows 身分驗證做為身分驗證類型,如下所示。

使用 Windows 身分驗證連線至 SQL Server

還原 SQL Server 資料庫執行個體,並將其新增至網域

您可以還原資料庫快照集,或為 SQL Server 資料庫執行個體執行 point-in-time 復原 (PITR),然後將其新增至網域。一旦還原資料庫執行個體,請使用 步驟 5:建立或修改 SQL Server 資料庫執行個體 中的說明程序來修改執行個體,以將資料庫執行個體新增至網域。