本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 RDS Custom for SQL Server 執行個體的 Windows 身分驗證
我們建議為擁有加入 AD 網域之 RDS Custom for SQL Server 資料庫執行個體的任何 AWS 帳戶 建立範圍為該 OU 的專用 OU 和服務憑證。透過指定 OU 和服務登入資料,您可以避免衝突許可,並遵循最低權限原則。
Active Directory 層級群組政策可能與 AWS 自動化和許可衝突。我們建議選取僅適用於您為 RDS Custom for SQL Server 建立之 OU 的 GPO。
若要在自我管理或內部部署 AD 中建立 OU 和 AD 網域使用者,您可以將網域控制器連線為網域管理員。
-
若要在 AWS Directory Service 目錄中建立使用者和群組,您必須連線至管理執行個體,而且您必須以具有建立使用者和群組權限的使用者身分登入。如需詳細資訊,請參閱《 管理指南》中的 中的使用者和群組 AWS Managed Microsoft ADAWS Directory Service 管理。
-
若要從 Amazon EC2 Windows Server 執行個體管理您的 Active Directory,您需要在 EC2 執行個體上安裝 Active Directory 網域服務和 Active Directory Lightweight Directory 服務工具。如需詳細資訊,請參閱《 管理指南》中的安裝適用於 的 Active Directory 管理工具 AWS Managed Microsoft AD。 AWS Directory Service
-
我們建議您在單獨的 EC2 執行個體上安裝這些工具以進行管理,而不是在 RDS Custom for SQL Server 資料庫執行個體上安裝這些工具,以便於管理。
以下是 AD 網域服務帳戶的需求:
您必須在 AD 網域中擁有具有委派許可的服務帳戶,才能將電腦加入網域。網域服務帳戶是您 AD 中的使用者帳戶,其已委派執行特定任務的許可。
-
在您加入 RDS Custom for SQL Server 執行個體的組織單位中,將下列許可委派給網域服務帳戶:
已驗證能夠寫入 DNS 主機名稱
已驗證能夠寫入服務主體名稱
建立和刪除電腦物件
-
對於自我管理和內部部署 AD,網域服務帳戶必須是「AWS 委派網域名稱系統管理員」群組的成員。
-
對於 AWS Managed Microsoft AD,網域服務帳戶應該是「DnsAdmins」群組的成員。
這些是將電腦物件加入自我管理 AD 和 所需的最低許可集 AWS Managed Microsoft AD。如需詳細資訊,請參閱 Microsoft Windows Server 文件中的錯誤:當被委派控制的非管理員使用者嘗試將電腦加入網域控制站時,存取遭拒
重要
建立資料庫執行個體後,請勿移動 RDS Custom for SQL Server 在組織單位 (OU) 中建立的電腦物件。移動相關聯的物件可能會導致 RDS Custom for SQL Server 資料庫執行個體設定錯誤。如果您需要移動 Amazon RDS 建立的電腦物件,請使用 ModifyDBInstance 動作來修改具有電腦物件所需位置的網域參數。
主題
步驟 1:在您的 AD 中建立組織單位 (OU)
使用下列步驟在您的 AD 中建立組織單位:
在 AD 中建立 OU
-
以網域管理員身分連線至您的網域 AD。
-
開啟 Active Directory 使用者和電腦,然後選取您要在其中建立 OU 的網域。
-
在網域上按一下滑鼠右鍵,然後選擇新增,然後選擇組織單位。
-
輸入 OU 的名稱。
啟用保護容器免於意外刪除。
-
選擇確定。您的新 OU 會顯示在您的網域下。
對於 AWS Managed Microsoft AD,此 OU 的名稱是根據您在建立目錄時輸入的 NetBIOS 名稱。此 OU 由 擁有 AWS ,並包含您所有 AWS相關的目錄物件,您可以獲得完全控制。根據預設,此 OUs 下有兩個子 OU,即電腦和使用者。RDS Custom 建立的新 OUs 是以 NetBIOS 為基礎的 OU 子系。
步驟 2:建立 AD 網域使用者
網域使用者登入資料用於 Secrets Manager 中的秘密。
在 AD 中建立 AD 網域使用者
開啟 Active Directory 使用者和電腦,然後選取您要建立使用者的網域和 OU。
在使用者上按一下滑鼠右鍵,然後選擇新增,再選擇使用者。
輸入使用者的名字、姓氏和登入名稱。按一下 Next (下一步)。
輸入使用者的密碼。不要選取 使用者必須在下次登入時變更密碼,否則帳戶會停用。按一下 Next (下一步)。
按一下 OK (確定)。您的新使用者會出現在您的網域下。
步驟 3:在自我管理或 中將控制權委派給 AD 使用者 AWS Managed Microsoft AD
將控制權委派給網域中的 AD 網域使用者
-
開啟 Active Directory 使用者和電腦 MMC 嵌入式,然後選取您的網域。
-
在先前建立的 OU 上按一下滑鼠右鍵,然後選擇委派控制。
-
在委派控制精靈中,按一下下一步。
-
在使用者或群組區段中,按一下新增。
-
在選取使用者、電腦或群組中,輸入您建立的 AD 使用者,然後按一下檢查名稱。如果 AD 使用者檢查成功,請按一下確定。
-
在使用者或群組區段中,確認您的 AD 使用者已新增,然後按一下下一步。
-
在要委派的任務區段中,選擇建立要委派的自訂任務,然後按一下下一步。
-
在 Active Directory 物件類型區段中:
在 資料夾中選擇 ONly 下列物件。
選取電腦物件
選取在此資料夾中建立選取的物件
選取刪除此資料夾中選取的物件,然後按下一步。
-
在許可區段中:
保持選取一般。
選取已驗證寫入 DNS 主機名稱。
選取已驗證寫入服務主體名稱,然後按下一步。
-
在完成控制委派精靈中,確認您的設定,然後按一下完成。
步驟 4:建立秘密
在包含您要包含在作用中目錄中之 RDS Custom for SQL Server 資料庫執行個體的相同 AWS 帳戶 和 區域中建立秘密。儲存在 中建立的 AD 網域使用者的登入資料步驟 2:建立 AD 網域使用者。
步驟 5:建立或修改 RDS Custom for SQL Server 資料庫執行個體
建立或修改 RDS Custom for SQL Server 資料庫執行個體,以搭配您的目錄使用。您可以使用主控台、CLI 或 RDS API,將資料庫執行個體與目錄建立關聯。您可採用下列其中一種方式來這麼做:
-
使用主控台、create-db-instance CLI 命令,或 CreateDBInstance RDS API 操作,建立新的 SQL Server 資料庫執行個體。
如需說明,請參閱「建立 Amazon RDS 資料庫執行個體」。
-
使用主控台、modify-db-instance CLI 命令,或 ModifyDBInstance RDS API 操作,修改現有的 SQL Server 資料庫執行個體。
如需說明,請參閱「修改 Amazon RDS 資料庫執行個體」。
-
使用主控台、restore-db-instance-from-db-snapshot CLI 命令,或 RestoreDBInstanceFromDBSnapshot RDS API 操作,從資料庫快照還原 SQL Server 資料庫執行個體。
如需說明,請參閱「還原至資料庫執行個體」。
-
使用主控台、restore-db-instance-to-point-in-time CLI 命令,或 RestoreDBInstanceToPointInTime RDS API 操作,將 SQL Server 資料庫執行個體還原至某個時間點。
如需說明,請參閱將資料庫執行個體還原至 Amazon RDS 的指定時間。
注意
當您使用 時 AWS CLI,資料庫執行個體需要下列參數,才能使用您建立的目錄:
-
針對
--domain-fqdn
參數,請使用自我管理 AD 的完整網域名稱。 -
對於
--domain-ou
參數,使用您在自我管理 AD 中建立的 OU。 -
針對
--domain-auth-secret-arn
參數,請使用您建立之秘密 ARN 的值。
重要
如果您修改資料庫執行個體以加入或移除自我管理 AD 網域 AWS Managed Microsoft AD,或需要重新啟動資料庫執行個體,修改才會生效。您可以選擇立即套用變更,也可以等到下一個維護時段。選擇立即套用選項會導致單一可用區域資料庫執行個體停機。多可用區域資料庫叢集會在完成重新啟動之前執行容錯移轉。如需詳細資訊,請參閱修改 Amazon RDS 資料庫執行個體。
下列 CLI 命令會建立新的 RDS Custom for SQL Server 資料庫執行個體,並將其加入自我管理或 AWS Managed Microsoft AD 網域。
對於 Linux、 macOS或 Unix:
aws rds create-db-instance \ --engine custom-sqlserver-se \ --engine-version 15.00.4312.2.v1 \ --db-instance-identifier
my-custom-instance
\ --db-instance-class db.m5.large \ --allocated-storage 100 --storage-type io1 --iops 1000 \ --master-usernamemy-master-username
\ --master-user-passwordmy-master-password
\ --kms-key-idmy-RDSCustom-key-id
\ --custom-iam-instance-profileAWSRDSCustomInstanceProfileForRdsCustomInstance
\ --domain-fqdn"corp.example.com"
\ --domain-ou"OU=RDSCustomOU,DC=corp,DC=example,DC=com"
\ --domain-auth-secret-arn"arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456"
\ --db-subnet-group-namemy-DB-subnet-grp
\ --vpc-security-group-idsmy-securitygroup-id
\ --no-publicly-accessible \ --backup-retention-period 3 \ --port 8200 \ --region us-west-2 \ --no-multi-az
在 Windows 中:
aws rds create-db-instance ^ --engine custom-sqlserver-se ^ --engine-version 15.00.4312.2.v1 ^ --db-instance-identifier
my-custom-instance
^ --db-instance-class db.m5.large ^ --allocated-storage 100 --storage-type io1 --iops 1000 ^ --master-usernamemy-master-username
^ --master-user-passwordmy-master-password
^ --kms-key-idmy-RDSCustom-key-id
^ --custom-iam-instance-profileAWSRDSCustomInstanceProfileForRdsCustomInstance
^ --domain-fqdn"corp.example.com"
^ --domain-ou"OU=RDSCustomOU,DC=corp,DC=example,DC=com"
^ --domain-auth-secret-arn"arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456"
^ --db-subnet-group-namemy-DB-subnet-grp
^ --vpc-security-group-idsmy-securitygroup-id
^ --no-publicly-accessible ^ --backup-retention-period 3 ^ --port 8200 ^ --region us-west-2 ^ --no-multi-az
重要
如果您的 的 NetBIOS AWS Managed Microsoft AD 是 corpexample,則會顯示為 OU 本身。任何先前建立的新 OU 都會顯示為巢狀 OU。對於 AWS Managed Microsoft AD,將 --domain-ou
設定為 "OU=RDSCustomOU,OU=corpexample,DC=corp,DC=example,DC=com"
。
下列命令會將現有的 RDS Custom for SQL Server 資料庫執行個體修改為使用 Active Directory 網域。
對於 Linux、 macOS或 Unix:
aws rds modify-db-instance \ --db-instance-identifier
my-custom-instance
\ --domain-fqdn"corp.example.com"
\ --domain-ou"OU=RDSCustomOU,DC=corp,DC=example,DC=com"
\ --domain-auth-secret-arn"arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456"
\
在 Windows 中:
aws rds modify-db-instance ^ --db-instance-identifier
my-custom-instance
^ --domain-fqdn"corp.example.com"
^ --domain-ou"OU=RDSCustomOU,DC=corp,DC=example,DC=com"
^ --domain-auth-secret-arn"arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456"
^
下列 CLI 命令會從 Active Directory 網域移除 和 RDS Custom for SQL Server 資料庫執行個體。
對於 Linux、 macOS或 Unix:
aws rds modify-db-instance \ --db-instance-identifier
my-custom-instance
\ --disable-domain
在 Windows 中:
aws rds modify-db-instance ^ --db-instance-identifier
my-custom-instance
^ --disable-domain
使用主控台建立或修改執行個體時,請按一下啟用 Microsoft SQL Server Windows 身分驗證以查看下列選項。

您有責任確保您的網域 FQDN 正在解析為網域控制站 IP 地址。如果網域控制站 IPs 未解析,網域聯結操作會失敗,但 RDS Custom for SQL Server 執行個體建立成功。如需故障診斷資訊,請參閱故障診斷 Active Directory。
步驟 6:建立 Windows 身分驗證 SQL Server 登入
使用 Amazon RDS 主要使用者憑證來連線至 SQL Server 資料庫執行個體,如同您對任何其他資料庫執行個體所做一般。由於資料庫執行個體已加入 AD 網域,因此您可以佈建 SQL Server 登入和使用者。您可以從 AD 網域中的 AD 使用者和群組公用程式執行此操作。您可透過對這些 Windows 登入授予和撤銷的標準 SQL Server 許可來管理資料庫許可。
若要讓 AD 使用者使用 SQL Server 進行身分驗證,AD 使用者或使用者所屬的 Active Directory 群組必須存在 SQL Server Windows 登入。精細定義的存取控制是透過授予和撤銷這些 SQL Server 登入的許可來處理。沒有 SQL Server 登入或屬於具有此類登入的 AD 群組的 AD 使用者無法存取 SQL Server 資料庫執行個體。
建立 AD SQL Server 登入需要 ALTER ANY LOGIN
許可。如果您尚未使用此許可建立任何登入,請使用 SQL Server 身分驗證以資料庫執行個體的主要使用者身分連線,並在主要使用者的內容下建立 AD SQL Server 登入。
您可以執行如下的資料定義語言 (DDL) 命令,為 AD 使用者或群組建立 SQL Server 登入。
USE [master] GO CREATE LOGIN [mydomain\myuser] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english]; GO
來自您網域的使用者 (人類和應用程式) 現在可以使用 Windows 身分驗證從加入網域的用戶端機器連線至 RDS Custom for SQL Server 執行個體。
步驟 7:使用 Kerberos 或 NTLM 身分驗證
使用 RDS 端點的 NTLM 身分驗證
每個 Amazon RDS 資料庫執行個體都有一個端點,而每個端點都有資料庫執行個體的 DNS 名稱和連接埠號碼。若要使用 SQL 用戶端應用程式連線至您的資料庫執行個體,您需要資料庫執行個體的 DNS 名稱和連接埠號碼。若要使用 NTLM 身分驗證進行驗證,您必須連線到 RDS 端點。
在計劃中的資料庫維護或計劃外的服務中斷期間,Amazon RDS 會自動容錯移轉至up-to-date次要資料庫,因此無需手動介入即可快速恢復操作。主要和次要執行個體使用相同的端點,其實體網路地址會在容錯移轉程序中轉換為次要執行個體。當容錯移轉發生時,您不必重新設定應用程式。
Kerberos 身分驗證
RDS Custom for SQL Server 的 Kerberos 型身分驗證需要連線到特定服務主體名稱 (SPN)。不過,容錯移轉事件之後,應用程式可能不知道新的 SPN。為了解決此問題,RDS Custom for SQL Server 提供 Kerberos 型端點。
Kerberos 型端點遵循特定格式。如果您的 RDS 端點為
,則對應的 Kerberos 型端點將為 rds-instance-name
.account-region-hash
.aws-region
.rds.amazonaws.com
。rds-instance-name
.account-region-hash
.aws-region
.awsrds.fully qualified domain name (FQDN)
例如,如果 RDS 端點為 ad-test.cocv6zwtircu.us-east-1.rds.amazonaws.com
且網域名稱為 corp-ad.company.com
,則 Kerberos 型端點將為 ad-test.cocv6zwtircu.us-east-1.awsrds.corp-ad.company.com
。
此 Kerberos 型端點可以使用 Kerberos 與 SQL Server 執行個體進行身分驗證,即使在容錯移轉事件之後,因為端點會自動更新以指向主要 SQL Server 執行個體的新 SPN。
尋找您的 CNAME
若要尋找 CNAME,請連線至您的網域控制器並開啟 DNS Manager。導覽至轉送查詢區域和您的 FQDN。
導覽 awsrds、aws-region 以及帳戶和區域特定的雜湊。
如果您要連接 RDS Custom EC2 執行個體,並嘗試使用 CNAME 在本機連線至資料庫,您的連線將使用 NTLM 身分驗證,而不是 Kerberos。
如果從遠端用戶端連接 CNAME 之後,傳回 NTLM 連線,請檢查是否允許列出必要的連接埠。
若要檢查您的連線是否使用 Kerberos,請執行下列查詢:
SELECT net_transport, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SSPID;