本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為 RDS Custom for SQL Server 執行個體設定 Windows 身分驗證
任何 AWS 帳戶 若擁有加入您 AD 網域的 RDS for SQL Server 資料庫執行個體,我們建議為其建立範圍受限於該 OU 的專用 OU 和服務憑證。透過專用 OU 和服務憑證,您可避免衝突的許可,並遵循最低權限的主體。
Active Directory 層級群組政策可能與 AWS 自動化和許可衝突。我們建議選取僅適用於您為 RDS Custom for SQL Server 建立之 OU 的 GPO。
若要在自我管理或內部部署 AD 中建立 OU 和 AD 網域使用者,您可以網域管理員身分連線網域控制器。
-
若要在 Directory Service 目錄中建立使用者和群組,您必須連線到管理執行個體,還必須以具有建立使用者和群組之權限的使用者身分登入。如需詳細資訊,請參閱《AWS Directory Service 管理指南》中的 AWS Managed Microsoft AD 中的使用者和群組管理。
-
若要從 Amazon EC2 Windows Server 執行個體中管理您的 Active Directory,您必須在 EC2 執行個體上安裝 Active Directory 網域服務和 Active Directory 輕量型目錄服務工具。如需詳細資訊,請參閱《AWS Directory Service 管理指南》中的安裝 AWS Managed Microsoft AD 的 Active Directory 管理工具。
-
我們建議您在單獨的 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 在組織單位中建立的電腦物件。移動相關聯的物件可能會導致 RDS Custom for SQL Server 資料庫執行個體設定錯誤。如果您需要移動 Amazon RDS 所建立的電腦物件,請使用 ModifyDBInstance 動作,透過所需的電腦物件位置修改網域參數。
主題
步驟 1:在您的 AD 中建立組織單位
使用下列步驟在您的 AD 中建立組織單位:
在您的 AD 中建立 OU
-
以網域管理員身分連線至您的網域 AD。
-
開啟 Active Directory 使用者和電腦,然後選取您要在其中建立 OU 的網域。
-
在網域上按一下滑鼠右鍵,然後選擇新增,再選擇組織單位。
-
輸入 OU 的名稱。
啟用保護容器免於意外刪除。
-
選擇確定。您的新 OU 會出現在您的網域下方。
對於 AWS Managed Microsoft AD,此 OU 的名稱的基礎,是您建立目錄時所輸入的 NetBIOS 名稱。此 OU 屬於 AWS 且包含您所有 AWS 相關的目錄物件,您對此擁有完全控制權。此 OU 下預設存在兩個子 OU:電腦和使用者。RDS Custom 建立的新 OU 是以 NetBIOS 為基礎的 OU 子系。
步驟 2:建立 AD 網域使用者
網域使用者憑證會用於 Secrets Manager 中的秘密。
在您的 AD 中建立 AD 網域使用者
開啟 Active Directory 使用者和電腦,然後選取您要在其中建立使用者的網域。
在使用者上按一下滑鼠右鍵,然後選擇新增,再選擇使用者。
輸入使用者的名字、姓氏和登入名稱。按一下 Next (下一步)。
輸入使用者的密碼。不要選取使用者在下次登入時必須變更密碼或帳戶已停用。按一下 Next (下一步)。
按一下 OK (確定)。您的新使用者會出現在您的網域下方。
步驟 3:將控制權委派給自我管理或 AWS Managed Microsoft AD 中的 AD 使用者
將控制權委派給網域中的 AD 網域使用者
-
開啟 Active Directory 使用者和電腦 MMC 嵌入式管理單元,然後選取您的網域。
-
在您先前建立的 OU 上按一下滑鼠右鍵,然後選擇委派控制權。
-
在委派控制權精靈中,按下一步。
-
在使用者或群組區段中,按一下新增。
-
在選取使用者、電腦或群組中,輸入您建立的 AD 使用者,然後按一下檢查名稱。如果 AD 使用者檢查成功,請按一下確定。
-
在使用者或群組區段中,確認已新增 AD 使用者,然後按下一步。
-
在要委派的任務區段中,選取建立要委派的自訂任務,然後按下一步。
-
在 Active Directory 物件類型區段中:
選擇僅限資料夾中的下列物件。
選取電腦物件
選取在此資料夾中建立選取的物件
選取刪除此資料夾中選取的物件,然後按下一步。
-
在許可區段中:
保持選取一般。
選取已驗證寫入 DNS 主機名稱。
選取已驗證寫入服務主體名稱,然後按下一步。
-
在完成委派控制權精靈中,請確認您的設定,然後按一下完成。
步驟 4:建立私密
在相同的 AWS 帳戶 帳戶和區域中建立秘密,其中包含要納入自我管理 Active Directory 的 RDS Custom for SQL Server 資料庫執行個體。儲存在 步驟 2:建立 AD 網域使用者 中建立的 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-identifiermy-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-identifiermy-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
重要
如果您 AWS Managed Microsoft AD 的 NetBIOS 是 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-identifiermy-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-identifiermy-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-identifiermy-custom-instance\ --disable-domain
在 Windows 中:
aws rds modify-db-instance ^ --db-instance-identifiermy-custom-instance^ --disable-domain
使用主控台建立或修改執行個體時,請按一下啟用 Microsoft SQL Server Windows 身分驗證,以查看下列選項。
您有責任確保您的網域 FQDN 正在解析為網域控制器 IP 位址。如果網域控制器 IP 未解析,網域聯結作業就會失敗,但 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 資料庫執行個體。
需要 ALTER ANY LOGIN 許可才能建立 AD SQL Server 登入。如果您尚未使用此許可建立任何登入,請使用 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 會自動容錯移轉到最新的次要資料庫,以便操作可以很快繼續執行,而無須人為介入。主要與次要執行個體會使用相同的端點,其實體網路會處理轉換至次要的作業,做為容錯移轉程序的一部分。當容錯移轉發生時,您不必重新設定應用程式。
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;