設定 Windows Authentication for SQL Server 資料庫執行個體 - Amazon Relational Database Service

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

設定 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
  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 伺服器不支援超過 47 個字元的名稱。

    Directory NetBIOS 名稱

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

    目錄描述

    選擇填寫其他目錄說明。

    管理員密碼

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

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

    • 小寫字母 (a-z)

    • 大寫字母 (A-Z)

    • 數字 (0-9)

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

    Confirm password (確認密碼)

    重新輸入管理員密碼。

  5. 選擇 Next (下一步)

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

    VPC

    選擇目錄VPC的 。

    注意

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

    子網路

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

  7. 選擇 Next (下一步)

  8. 檢閱目錄資訊。如果需要變更,請選擇 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:SourceArnaws: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流量
  1. 設定適當的VPC路由規則,以確保網路流量可以雙向流動。

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

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

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

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

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

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

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

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

只有 中的SQL伺服器資料庫執行個體才支援 Windows 身分驗證VPC。

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

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

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

Microsoft SQL Server Windows Authentication 目錄

使用 時 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-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 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 前版的登入名稱,以格式 domainName\login_name 來指定使用者和群組。您無法以 格式使用使用者主體名稱 (UPN) 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 執行個體。