為 SQL Server 資料庫執行個體設定 Windows 身分驗證 - Amazon Relational Database Service

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

為 SQL Server 資料庫執行個體設定 Windows 身分驗證

您可以使用 AWS Directory Service for Microsoft Active Directory來 AWS Managed Microsoft AD設定 SQL Server 資料庫執行個體的 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 執行下列任務:

  • 設定 VPC 內的 Microsoft Active Directory。

  • 建立含有使用者名稱 Admin 與指定密碼的目錄管理員帳戶。您可以使用此帳戶來管理目錄。

  • 建立目錄控制器的安全群組。

當您啟動 時 AWS Directory Service for Microsoft Active Directory, 會 AWS 建立組織單位 (OU),其中包含您目錄的所有物件。此 OU 有您在建立目錄時所輸入的 NetBIOS 名稱,位於根網域中。網域根由 擁有和管理 AWS。

隨著您的 AWS Managed Microsoft AD 目錄建立的管理帳戶具有您的 OU 最常見管理活動的許可:

  • 建立更新或刪除使用者、群組和電腦。

  • 新增資源 (例如檔案或列印伺服器) 至您的網域,然後對您 OU 中的使用者和群組指派這些資源的許可。

  • 建立額外的 OU 和容器。

  • 委派授權。

  • 建立及連結群組政策。

  • 從 Active Directory 資源回收筒還原已刪除的物件。

  • 在 Active Directory Web 服務上執行 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. 選擇下一步

  4. Enter directory information (輸入目錄資訊) 頁面上,提供下列資訊:

    版本

    選擇滿足您需求的版本。

    目錄 DNS 名稱

    目錄的完全合格名稱,例如 corp.example.com。SQL Server 不支援超過 47 個字元的名稱。

    目錄 NetBIOS 名稱

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

    目錄描述

    選擇填寫其他目錄說明。

    管理員密碼

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

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

    • 小寫字母 (a-z)

    • 大寫字母 (A-Z)

    • 數字 (0-9)

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

    Confirm password (確認密碼)

    重新輸入管理員密碼。

  5. 選擇下一步

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

    VPC

    選擇目錄的 VPC。

    注意

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

    子網路

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

  7. 選擇 Next (下一步)

  8. 檢閱目錄資訊。如果需要變更,請選擇 Previous (上一步)。若資訊無誤,請選擇 Create directory (建立目錄)

    檢閱和建立頁面

建立目錄需要幾分鐘的時間。成功建立時,Status (狀態) 值會變更為 Active (作用中)

若要查看目錄的資訊,請選擇目錄清單中的目錄 ID。請記下 Directory ID (目錄 ID)。建立或修改 SQL Server 資料庫執行個體時需要此值。

目錄詳細資訊頁面

步驟 2:建立供 Amazon RDS 使用的 IAM 角色

如果您使用主控台來建立您的 SQL Server 資料庫執行個體,則可以略過此步驟。如果您使用 &CLI; 或 &RDS; API 來建立您的 SQL Server 資料庫執行個體,您必須建立使用受管 IAM 政策 AmazonRDSDirectoryServiceAccess 的 IAM 角色。此角色允許 Amazon RDS AWS Directory Service 為您呼叫 。

如果您使用自訂政策來加入網域,而不是使用 AWS受管AmazonRDSDirectoryServiceAccess政策,請確定您允許 ds:GetAuthorizedApplicationDetails動作。由於 AWS Directory Service API 的變更,此要求自 2019 年 7 月起生效。

以下 IAM 政策 (AmazonRDSDirectoryServiceAccess) 會提供對 AWS Directory Service的存取。

範例 提供 存取權的 IAM 政策 AWS Directory Service
JSON
{ "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 資源名稱 (ARN)。為使用 Windows Authentication,請務必包含資料庫執行個體,如下列範例所示。

範例 與 Windows Authentication 全域條件內容索引鍵的信任關係
JSON
{ "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 管理指南》中的新增使用者和群組 (Simple AD 和 AWS Managed Microsoft AD)

步驟 4:啟用目錄和資料庫執行個體之間的跨 VPC 流量

如果您打算在相同 VPC 中尋找目錄和資料庫執行個體,請略過本步驟,並移至步驟 5:建立或修改 SQL Server 資料庫執行個體

如果您打算在不同 VPC 中尋找目錄和資料庫執行個體,請使用 VPC 互連或 AWS Transit Gateway 來設定跨 VPC 流量。

下列程序會使用 VPC 互連來啟用 VPC 之間的流量。請遵循《Amazon Virtual Private Cloud 互連指南》什麼是 VPC 互連?的指示。

使用 VPC 互連以啟用跨 VPC 流量
  1. 設定適當的 VPC 路由規則,以確保網路流量可以雙向對流。

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

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

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

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

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

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

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

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

Windows 身分驗證只支援 VPC 中的 Server 資料庫執行個體。

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

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

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

Microsoft SQL Server Windows 身分驗證目錄

當您使用 時 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 身分驗證 SQL Server 登入

如同對其他資料庫執行個體一般,使用 Amazon RDS 主要使用者登入資料來連接至 SQL Server 資料庫執行個體。由於資料庫執行個體已加入 AWS Managed Microsoft AD 網域,因此您可以佈建 SQL Server 登入和使用者。您可以從網域中的 Active Directory 使用者和群組執行這項操作。您可透過對這些 Windows 登入授予和撤銷的標準 SQL Server 許可來管理資料庫許可。

若要讓 Active Directory 使用者向 SQL Server 進行身分驗證,必須存在使用者或使用者為其成員之群組的 SQL Server Windows 登入。精細定義的存取控制是透過授予和撤銷這些 SQL Server 登入的許可來處理。沒有 SQL Server 登入或屬於具有此類登入的群組的使用者無法存取 SQL Server 資料庫執行個體。

需要 ALTER ANY LOGIN 許可,才能建立 Active Directory SQL Server 登入。如果您尚未使用此許可建立任何登入,請使用 SQL Server 身分驗證,以資料庫執行個體的主要使用者身分連線。

執行資料定義語言 (DDL) 命令來為 Active Directory 使用者或群組建立 SQL Server 登入,如下列範例。

注意

使用 Windows 2000 前版的登入名稱,以格式 domainName\login_name 來指定使用者和群組。您無法使用格式為 login_name@DomainName 的使用者原則名稱 (UPN)。

您只能使用 T-SQL 陳述式在 RDS for SQL Server 執行個體上建立 Windows 身分驗證登入。您無法使用 SQL Server 管理工作室來建立 Windows 身分驗證登入。

USE [master] GO CREATE LOGIN [mydomain\myuser] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english]; GO

如需詳細資訊,請參閱 Microsoft 開發人員網路文件中的 建立登入 (Transact-SQL)

來自您網域的使用者 (人員和應用程式兩者),現在可以使用 Windows 身分驗證從加入網域的用戶端機器連接至 RDS for SQL Server 執行個體。