設定 RDS Custom for SQL Server 執行個體的 Windows 身分驗證 - Amazon Relational Database Service

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

設定 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 ADAWS 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
  1. 以網域管理員身分連線至您的網域 AD。

  2. 開啟 Active Directory 使用者和電腦,然後選取您要在其中建立 OU 的網域。

  3. 在網域上按一下滑鼠右鍵,然後選擇新增,然後選擇組織單位

  4. 輸入 OU 的名稱。

    啟用保護容器免於意外刪除

  5. 選擇確定。您的新 OU 會顯示在您的網域下。

對於 AWS Managed Microsoft AD,此 OU 的名稱是根據您在建立目錄時輸入的 NetBIOS 名稱。此 OU 由 擁有 AWS ,並包含您所有 AWS相關的目錄物件,您可以獲得完全控制。根據預設,此 OUs 下有兩個子 OU,即電腦和使用者。RDS Custom 建立的新 OUs 是以 NetBIOS 為基礎的 OU 子系。

步驟 2:建立 AD 網域使用者

網域使用者登入資料用於 Secrets Manager 中的秘密。

在 AD 中建立 AD 網域使用者
  1. 開啟 Active Directory 使用者和電腦,然後選取您要建立使用者的網域和 OU。

  2. 使用者上按一下滑鼠右鍵,然後選擇新增,再選擇使用者

  3. 輸入使用者的名字、姓氏和登入名稱。按一下 Next (下一步)

  4. 輸入使用者的密碼。不要選取 使用者必須在下次登入時變更密碼,否則帳戶會停用。按一下 Next (下一步)

  5. 按一下 OK (確定)。您的新使用者會出現在您的網域下。

步驟 3:在自我管理或 中將控制權委派給 AD 使用者 AWS Managed Microsoft AD

將控制權委派給網域中的 AD 網域使用者
  1. 開啟 Active Directory 使用者和電腦 MMC 嵌入式,然後選取您的網域。

  2. 在先前建立的 OU 上按一下滑鼠右鍵,然後選擇委派控制

  3. 委派控制精靈中,按一下下一步

  4. 使用者或群組區段中,按一下新增

  5. 選取使用者、電腦或群組中,輸入您建立的 AD 使用者,然後按一下檢查名稱。如果 AD 使用者檢查成功,請按一下確定

  6. 使用者或群組區段中,確認您的 AD 使用者已新增,然後按一下下一步

  7. 要委派的任務區段中,選擇建立要委派的自訂任務,然後按一下下一步

  8. Active Directory 物件類型區段中:

    在 資料夾中選擇 ONly 下列物件

    選取電腦物件

    選取在此資料夾中建立選取的物件

    選取刪除此資料夾中選取的物件,然後按下一步

  9. 許可區段中:

    保持選取一般

    選取已驗證寫入 DNS 主機名稱

    選取已驗證寫入服務主體名稱,然後按下一步

  10. 完成控制委派精靈中,確認您的設定,然後按一下完成

步驟 4:建立秘密

在包含您要包含在作用中目錄中之 RDS Custom for SQL Server 資料庫執行個體的相同 AWS 帳戶 和 區域中建立秘密。儲存在 中建立的 AD 網域使用者的登入資料步驟 2:建立 AD 網域使用者

Console
  • 在 中 AWS Secrets Manager,選擇儲存新的秘密

  • 針對機密類型,選擇其他類型的機密

  • 對於鍵/值對,新增兩個鍵:

    • 第一個索引鍵,SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME然後輸入值的 AD 使用者名稱 (不含網域字首)。

    • 針對第二個金鑰,輸入SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD並輸入網域上 AD 使用者的密碼。

  • 針對加密金鑰,輸入您用來建立 RDS Custom for SQL Server 執行個體的相同 AWS KMS 金鑰。

  • 針對秘密名稱,選擇以 開頭的秘密名稱do-not-delete-rds-custom-,以允許執行個體描述檔存取此秘密。如果您想要為秘密選擇不同的名稱,請更新 RDSCustomInstanceProfile以存取秘密名稱

  • (選用) 對於描述,輸入秘密名稱的描述。

  • 新增標籤 Key="AWSRDSCustom",Value="custom-sqlserver"

  • 按一下儲存,然後按下一步

  • 對於設定輪換設定,保留預設值並選擇下一步

  • 檢閱秘密的設定,然後按一下存放

  • 選擇新的秘密,並複製秘密 ARN 的值。我們會在下一個步驟中使用此項目來設定您的 Active Directory。

CLI

在 CLI 中執行下列命令來建立秘密:

# Linux based aws secretsmanager create-secret \ --name do-not-delete-rds-custom-DomainUserCredentails \ --description "Active directory user credentials for managing RDS Custom" \ --secret-string "{\"SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME\":\"tester\",\"SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD\":\"xxxxxxxx\"}" \ --kms-key-id <RDSCustomKMSKey> \ --tags Key="AWSRDSCustom",Value="custom-sqlserver" # Windows based aws secretsmanager create-secret ^ --name do-not-delete-rds-custom-DomainUserCredentails ^ --description "Active directory user credentials for managing RDS Custom" ^ --secret-string "{\"SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME\":\"tester\",\"SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD\":\"xxxxxxxx\"}" ^ --kms-key-id <RDSCustomKMSKey> ^ --tags Key="AWSRDSCustom",Value="custom-sqlserver"

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

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

注意

如果您的 RDS Custom for SQL Server 執行個體已手動加入 AD,請檢查 網路組態連接埠規則、 的設定網路驗證,並完成步驟 1 到步驟 4。將 --domain-fqdn--domain-ou和 更新--domain-auth-secret-arn為您的 AD,以便向 RDS Custom 註冊網域聯結憑證和組態,以監控、註冊 CNAME 並採取復原動作。

當您使用 時 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-username my-master-username \ --master-user-password my-master-password \ --kms-key-id my-RDSCustom-key-id \ --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance \ --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-name my-DB-subnet-grp \ --vpc-security-group-ids my-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-password my-master-password ^ --kms-key-id my-RDSCustom-key-id ^ --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance ^ --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-name my-DB-subnet-grp ^ --vpc-security-group-ids my-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 身分驗證以查看下列選項。

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 端點為 rds-instance-name.account-region-hash.aws-region.rds.amazonaws.com,則對應的 Kerberos 型端點將為 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。

導覽 awsrdsaws-region 以及帳戶和區域特定的雜湊

如果您要連接 RDS Custom EC2 執行個體,並嘗試使用 CNAME 在本機連線至資料庫,您的連線將使用 NTLM 身分驗證,而不是 Kerberos。

如果從遠端用戶端連接 CNAME 之後,傳回 NTLM 連線,請檢查是否允許列出必要的連接埠。

若要檢查您的連線是否使用 Kerberos,請執行下列查詢:

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