本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 Windows Authentication for SQL Server 資料庫執行個體
您可以使用 AWS Directory Service for Microsoft Active Directory,也稱為 AWS Managed Microsoft AD,來設定SQL伺服器資料庫執行個體的 Windows 身分驗證。若要設定 Windows 身分驗證,請執行下列步驟。
步驟 1:使用 建立目錄 AWS Directory Service for Microsoft Active Directory
AWS Directory Service 在 AWS 雲端中建立完全受管的 Microsoft Active Directory。當您建立 AWS Managed Microsoft AD 目錄時, 會代表您 AWS Directory Service 建立兩個網域控制站和網域名稱服務 (DNS) 伺服器。目錄伺服器是在 內兩個不同可用區域中的兩個子網路中建立VPC。此備援可協助確保即使失敗,仍能存取您的目錄。
當您建立 AWS Managed Microsoft AD 目錄時, 會代表您 AWS Directory Service 執行下列任務:
-
在 中設定 Microsoft Active DirectoryVPC。
-
建立含有使用者名稱 Admin 與指定密碼的目錄管理員帳戶。您可以使用此帳戶來管理目錄。
-
建立目錄控制器的安全群組。
當您啟動 時 AWS Directory Service for Microsoft Active Directory, 會 AWS 建立包含目錄所有物件的組織單位 (OU)。此 OU 具有您在建立目錄時輸入的 NetBIOS 名稱,位於網域根中。網域根由 擁有和管理 AWS。
隨著您的 AWS Managed Microsoft AD 目錄建立的管理帳戶具有您的 OU 最常見管理活動的許可:
-
建立更新或刪除使用者、群組和電腦。
-
新增資源 (例如檔案或列印伺服器) 至您的網域,然後對您 OU 中的使用者和群組指派這些資源的許可。
-
建立其他 OUs和 容器。
-
委派授權。
-
建立及連結群組政策。
-
從 Active Directory 資源回收筒還原已刪除的物件。
-
在 Active Directory Web Service 上執行 AD 和 DNS Windows PowerShell 模組。
管理員帳戶也有權執行下列全網域活動:
-
管理DNS組態 (新增、移除或更新記錄、區域和轉送器)。
-
檢視DNS事件日誌。
-
檢視安全事件日誌。
若要使用 建立目錄 AWS Managed Microsoft AD
-
在 AWS Directory Service 主控台
中,依序選擇 Directories (目錄) 和 Set up directory (設定目錄)。 -
選擇 AWS Managed Microsoft AD。這是目前唯一支援與 Amazon 搭配使用的選項RDS。
-
選擇 Next (下一步)。
-
在 Enter directory information (輸入目錄資訊) 頁面上,提供下列資訊:
- 版本
-
選擇滿足您需求的版本。
- 目錄DNS名稱
-
目錄的完全合格名稱,例如
corp.example.com
。SQL 伺服器不支援超過 47 個字元的名稱。 - Directory NetBIOS 名稱
-
目錄的簡短名稱,例如:
CORP
。 - 目錄描述
-
選擇填寫其他目錄說明。
- 管理員密碼
-
目錄管理員的密碼。目錄建立程序會建立含有使用者名稱 Admin 與這組密碼的管理員帳戶。
目錄管理員密碼不得包含
admin
一字。密碼區分大小寫,長度須為 8 至 64 個字元。至少須有一位字元屬於以下四種類型中的三類:-
小寫字母 (a-z)
-
大寫字母 (A-Z)
-
數字 (0-9)
-
非英數字元 (~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)
-
- Confirm password (確認密碼)
-
重新輸入管理員密碼。
-
選擇 Next (下一步)。
-
在選擇VPC和子網路頁面上,提供下列資訊:
- VPC
-
選擇目錄VPC的 。
注意
您可以在不同的 中尋找目錄和資料庫執行個體VPCs,但如果這樣做,請務必啟用跨VPC流量。如需詳細資訊,請參閱步驟 4:啟用目錄與資料庫執行個體之間的跨VPC流量。
- 子網路
-
選擇目錄伺服器的子網路。這兩個子網路必須位於不同的可用區域。
-
選擇 Next (下一步)。
-
檢閱目錄資訊。如果需要變更,請選擇 Previous (上一步)。若資訊無誤,請選擇 Create directory (建立目錄)。
建立目錄需要幾分鐘的時間。成功建立時,Status (狀態) 值會變更為 Active (作用中)。
若要查看目錄的資訊,請選擇目錄清單中的目錄 ID。請記下 Directory ID (目錄 ID)。建立或修改SQL伺服器資料庫執行個體時,您需要此值。
步驟 2:建立IAM角色以供 Amazon 使用 RDS
如果您使用 主控台來建立SQL伺服器資料庫執行個體,則可以略過此步驟。如果您使用 CLI或 RDSAPI來建立SQL伺服器資料庫執行個體,則必須建立使用 AmazonRDSDirectoryServiceAccess
受管IAM政策IAM的角色。此角色可讓 Amazon AWS Directory Service 為您RDS呼叫 。
如果您使用自訂政策來加入網域,而不是使用 AWS受管AmazonRDSDirectoryServiceAccess
政策,請確定您允許該ds:GetAuthorizedApplicationDetails
動作。由於 中的變更,此要求自 2019 年 7 月起生效 AWS Directory Service API。
下列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:SourceArn
和 aws:SourceAccount
全域條件內容金鑰,將服務的許可限定於特定資來源。這是防止混淆代理人問題最有效的方式。
您可以同時使用全域條件內容索引鍵和包含帳號 ID 的 aws:SourceArn
值。在此情況下,當在相同陳述式中使用 aws:SourceAccount
值和 aws:SourceArn
裡的帳户時,兩者必須使用同樣的帳户 ID。
-
如果您想要跨服務存取單一資源,請使用
aws:SourceArn
。 -
如果您想要允許該帳戶中的任何資源與跨服務使用相關聯,請使用
aws:SourceAccount
。
在信任關係中,請務必使用aws:SourceArn
全域條件內容索引鍵搭配存取角色之資源的完整 Amazon Resource Name (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 管理指南 中的新增使用者和群組 (簡單 AD 和 AWS Managed Microsoft AD)。
步驟 4:啟用目錄與資料庫執行個體之間的跨VPC流量
如果您計劃在相同的 中尋找目錄和資料庫執行個體VPC,請略過此步驟並移至 步驟 5:建立或修改SQL伺服器資料庫執行個體。
如果您計劃在不同 中尋找目錄和資料庫執行個體VPCs,請使用VPC對等或 AWS Transit Gateway 設定跨VPC流量。
下列程序會啟用VPCs使用VPC對等互連之間的流量。請遵循 Amazon Virtual Private Cloud VPC對等指南 中什麼是對等? 中的指示。 Amazon Virtual Private Cloud
使用VPC對等啟用跨VPC流量
-
設定適當的VPC路由規則,以確保網路流量可以雙向流動。
-
確保資料庫執行個體安全群組可以從目錄的安全群組接收傳入流量。
-
確保沒有可封鎖流量的網路存取控制清單 (ACL) 規則。
如果不同的 AWS 帳戶擁有目錄,您必須共用目錄。
在 AWS 帳戶之間共用目錄
-
請依照 AWS Directory Service 管理指南 中的教學課程:共用您的目錄以無縫加入網域,開始與將在其中建立資料庫執行個體 AWS 的 帳戶共用目錄。 AWS Managed Microsoft AD EC2
-
使用資料庫執行個體的帳戶登入 AWS Directory Service 主控台,並確保網域具有
SHARED
狀態,然後再繼續。 -
使用資料庫執行個體的帳戶登入 AWS Directory Service 主控台時,請注意目錄 ID 值。您可以使用此目錄 ID,將資料庫執行個體加入網域。
步驟 5:建立或修改SQL伺服器資料庫執行個體
建立或修改 SQL Server 資料庫執行個體,以搭配您的目錄使用。您可以使用 主控台、 CLI或 RDSAPI將資料庫執行個體與目錄建立關聯。您可採用下列其中一種方式來這麼做:
-
使用主控台、 create-db-instanceCLI命令或 CreateDBInstance RDSAPI操作建立新的SQL伺服器資料庫執行個體。
如需說明,請參閱 建立 Amazon RDS 資料庫執行個體。
-
使用主控台、 modify-db-instanceCLI命令或 ModifyDBInstance RDSAPI操作修改現有的SQL伺服器資料庫執行個體。
如需說明,請參閱 修改 Amazon RDS 資料庫執行個體。
-
使用主控台、restore-db-instance-from-db-snapshot CLI命令或 R estoreDBInstanceFromDBSnapshot RDSAPI操作,從資料庫快照還原SQL伺服器資料庫執行個體。
如需說明,請參閱 還原至資料庫執行個體。
-
使用主控台、 restore-db-instance-topoint-in-timeCLI命令或 RestoreDBInstanceToPointInTime RDSAPI操作將SQL伺服器資料庫執行個體還原至 point-in-time 。
如需說明,請參閱 將資料庫執行個體還原至 Amazon 的指定時間 RDS。
只有 中的SQL伺服器資料庫執行個體才支援 Windows 身分驗證VPC。
若要讓資料庫執行個體使用您建立的網域目錄,需要下列項目:
-
對於 Directory (目錄),您必須選擇在建立目錄時產生的網域識別碼 (
d-
)。ID
-
請確定VPC安全群組具有輸出規則,讓資料庫執行個體與目錄通訊。
使用 時 AWS CLI,資料庫執行個體需要下列參數,才能使用您建立的目錄:
-
針對
--domain
參數,使用您建立目錄時產生的網域識別符 (d-
)。ID
-
針對
--domain-iam-role-name
參數,請使用您建立的 角色,該角色使用 受管IAM政策AmazonRDSDirectoryServiceAccess
。
例如,下列CLI命令會修改資料庫執行個體以使用目錄。
用於 Linux, macOS,或 Unix:
aws rds modify-db-instance \ --db-instance-identifier
mydbinstance
\ --domain d-ID
\ --domain-iam-role-namerole-name
用於 Windows:
aws rds modify-db-instance ^ --db-instance-identifier
mydbinstance
^ --domain d-ID
^ --domain-iam-role-namerole-name
重要
如果您修改資料庫執行個體,以啟用 Kerberos 身分驗證,請在進行變更後重新啟動資料庫執行個體。
步驟 6:建立 Windows Authentication SQL Server 登入
使用 Amazon RDS主要使用者登入資料來連線至SQL伺服器資料庫執行個體,就像您執行任何其他資料庫執行個體一樣。由於資料庫執行個體已加入 AWS Managed Microsoft AD 網域,因此您可以佈建SQL伺服器登入和使用者。您可以從網域中的 Active Directory 使用者和群組執行這項操作。資料庫許可是透過授予並撤銷這些 Windows 登入的標準SQL伺服器許可進行管理。
若要讓 Active Directory 使用者使用SQL伺服器進行身分驗證,使用者或使用者所屬的群組必須存在SQL伺服器 Windows 登入。精細存取控制是透過授予和撤銷這些SQL伺服器登入的許可來處理。沒有SQL伺服器登入或屬於具有此類登入的群組的使用者無法存取SQL伺服器資料庫執行個體。
需要 ALTERANYLOGIN許可才能建立 Active Directory SQL Server 登入。如果您尚未使用此許可建立任何登入,請使用SQL伺服器身分驗證以資料庫執行個體的主要使用者身分連線。
執行資料定義語言 (DDL) 命令,例如下列範例,為 Active Directory 使用者或群組建立SQL伺服器登入。
注意
使用 Windows 2000 前版的登入名稱,以格式
來指定使用者和群組。您無法以 格式使用使用者主體名稱 (UPN) domainName
\login_name
login_name
@
.DomainName
您只能使用 T-SQL 陳述式在 RDS 的SQL伺服器執行個體上建立 Windows 身分驗證登入。您無法使用SQL伺服器管理工作室建立 Windows 身分驗證登入。
USE [master] GO CREATE LOGIN [
mydomain
\myuser
] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english]; GO
如需詳細資訊,請參閱 Microsoft Developer Network 文件中的 CREATELOGIN(Transact-SQL)
來自您網域的使用者 (人工和應用程式) 現在都可以使用 Windows 身分驗證,從網域加入的用戶端機器連線至 RDS for SQL Server 執行個體。