microsoft.sql.server Ansible Role이 Red Hat Enterprise Linux(RHEL)에 지난해 도입되었습니다. RHEL 8.8 및 9.2 릴리스에서 이 Role은 다음과 같은 몇 가지 새로운 기능이 포함된 새 업데이트를 수신합니다.
- Active Directory 서버를 활용한 SQL Server 인증 구성
- 비동기식 가용성 복제본 구성 및 클러스터에서의 읽기 스케일 상시 구성에 대한 지원 등 Always On 가용성 그룹에 대한 확장된 관리 기능
- RHEL 8 및 RHEL 9에서의 SQL Server 2022 구성 및 관리
이 문서에서는 Active Directory(AD)와의 통합에 대해 설명하고 전체 프로세스를 안내합니다.
- SQL Server에 대한 AD 인증을 구성하기 위한 요구 사항을 충족하는지 확인
- Ansible 인벤토리 파일 준비
- 설정해야 하는 변수를 살펴보고, Active Directory 인증을 자동으로 구성하도록 Role을 사용하여 Ansible Playbook 파일을 준비
- Role 실행
- 구성 완료
- 인증이 예상대로 작동하는지 확인
전제 조건
시작하기 전에 Role의 전제 조건을 충족하는지 확인해야 합니다.
- RHEL 머신에서 Active Directory 서버를 실행하고 액세스할 수 있어야 합니다. 전제 조건 개요는 Microsoft 설명서인 Linux 호스트의 SQL Server를 Active Directory 도메인에 연결에서 확인할 수 있습니다. 전제 조건을 충족하는 데 문제가 있는 경우 Active Directory 트러블슈팅을 참조하십시오.
- DNS 조회가 작동하는지 확인합니다. RHEL 머신에서 IP 주소와 축약된 DNS 이름, 전체 DNS 이름으로 Active Directory 서버를 ping할 수 있어야 합니다.
- 역방향 DNS 조회가 작동하는지 확인합니다. Active Directory 서버의 IP 주소에 대해
nslookup
명령을 실행하면 올바른 DNS 이름으로 확인되어야 하며, DNS 이름은 올바른 IP 주소로 차례로 확인되어야 합니다. - 도메인에서 계정 및 SPN(서비스 사용자 이름)을 만들 수 있는 권한이 있는 Active Directory 사용자에 대한 액세스 권한 및 자격 증명이 있는지 확인합니다.
Ansible 인벤토리 준비
인벤토리는 Active Directory 인증을 위해 구성하려는 RHEL 서버만 포함해야 합니다. 이 예제에서는 다음과 같이 단일 RHEL 노드 rhel-sql-server.example.com
을 포함하는 인벤토리 파일 inventory.yml
을 사용합니다.
$ cat inventory.yml
---
all:
hosts:
rhel-sql-server.example.com
Role 사용
그런 다음 Active Directory를 사용하여 인증을 구성하는 플레이북이 필요합니다. 먼저 플레이북 예시를 살펴보고 필요에 따라 변수와 매개 변수를 조정한 다음, 이를 기반으로 사용하는 것이 가장 쉽습니다.
Role에는 변수를 사용하여 일부 암호를 설정해야 합니다. 이 문서의 예제에서는 이러한 변수를 일반 텍스트로 제공하지만, 프로덕션 환경에서는 Ansible Vault를 사용하여 암호를 암호화해야 합니다.
플레이북 예시
다음은 playbook.yml
로 저장된 플레이북 예시입니다. Active Directory를 사용하여 인증을 구성합니다.
---
- name: Configure with AD server authentication
hosts: all
vars:
# General variables
mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula: true
mssql_accept_microsoft_cli_utilities_for_sql_server_eula: true
mssql_accept_microsoft_sql_server_standard_eula: true
mssql_version: 2022
mssql_password: "p@55w0rD"
mssql_edition: Evaluation
mssql_manage_firewall: true
# AD Integration required variables
mssql_ad_configure: true
mssql_ad_sql_user_name: sqluser
mssql_ad_sql_password: "p@55w0rD1"
ad_integration_realm: domain.com
ad_integration_user: Administrator
ad_integration_password: Secret123
# AD Integration optional variables
mssql_ad_sql_user_dn: "CN=sqluser,CN=Users,DC=DOMAIN,DC=COM"
mssql_ad_netbios_name: domain
플레이북 예시의 변수는 일반, 필수 및 선택적 변수의 세 섹션으로 나뉩니다.
일반 변수
EULA(최종 사용자 라이센스 계약, End User License Agreement)에 동의하는 변수를 true
로 설정하여 mssql-server
패키지 약관에 동의해야 합니다. 여기에는 다음이 포함됩니다.
mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula
mssql_accept_microsoft_cli_utilities_for_sql_server_eula
mssql_accept_microsoft_sql_server_standard_eula
기타 변수:
mssql_version
은 관리할 SQL Server의 버전(2017, 2019 또는 2022)을 정의합니다.mssql_password
는sa
사용자의 암호를 설정합니다.mssql_edition
은 SQL Server에 대해 구성할 버전을 정의합니다.mssql_manage_firewall
은 방화벽을 활성화하고 필요한 포트를 엽니다. 선택적 변수입니다. Role에서 방화벽을 관리하려는 경우에만 사용합니다.
AD 통합에 필요한 변수
다음과 같은 변수는 필수입니다.
mssql_ad_configure
: Active Directory 인증을 구성할지 여부입니다.mssql_ad_sql_user_name
: SQL Server에 대한 인증을 활성화하기 위해 Active Directory 서버에 생성할 사용자의 이름입니다. Role은 adutil을 사용합니다. 이를 위해 권한 있는 사용자로 액세스할 수 있는 권한을 가지고 해당 사용자를 생성해야 합니다.mssql_ad_sql_password
: 생성되는 사용자의 암호입니다.ad_integration_realm
: Active Directory 영역 이름입니다.ad_integration_user
: Active Directory에서 권한 있는 사용자의 사용자 이름입니다. 이 사용자는 도메인에 이미 있어야 합니다.ad_integration_password
: 사용자의 암호입니다.
AD 통합을 위한 선택적 변수
다음과 같은 변수는 선택 사항입니다.
mssql_ad_sql_user_dn
: AD 서버에서 사용자 계정을 기본 사용자 OU가 아닌 사용자 지정 OU(조직 단위)에 저장하는 경우 이 변수를 설정해야 합니다. 기본적으로 Role은 변수mssql_ad_sql_user_name
및ad_integration_realm
에 제공된 값을 기반으로 고유 이름을 빌드하고Users
OU(예:CN=sqluser,CN=Users, DC=DOMAIN,DC=COM
)를 사용합니다. 고유 이름을 제공하여 이를 덮어쓸 수 있습니다.mssql_ad_netbios_name
: AD 서버의 NetBIOS 도메인 이름이ad_integration_realm
변수로 제공한 도메인 이름의 첫 번째 하위 도메인과 같지 않은 경우(예:ad_integration_realm
을domain.contoso.com
으로 설정했지만 NetBIOS 도메인 이름은domain
이 아님) 이 변수를 설정해야 합니다. 이 값은 SQL Server에서{{ mssql_ad_netbios_name }}\{ad_integration_user }}
로그인을 생성하는 데 사용됩니다.
Ansible Role 실행
모든 전제 조건을 충족하고 Ansible 인벤토리 및 플레이북이 준비되면 플레이북을 실행할 수 있습니다.
$ ansible-playbook -i inventory.yml playbook.yml
SQL Server에 도메인 사용자 추가
사용자가 로그인하려면 먼저 SQL Server에 해당 사용자를 추가해야 합니다. 이 작업을 수행하려면 각 AD 도메인 사용자에 대해 다음 T-SQL 명령을 실행합니다.
CREATE LOGIN \[<domain>**<username>*\] FROM windows;
추가 암호화 유형 활성화
Role을 실행하여 Active Directory 인증을 구성한 후에는 Active Directory에서 mssql_ad_sql_user_name
변수로 정의된 사용자에게 AES128 및 AES256 Kerberos 암호화 유형을 추가해야 합니다. 이 작업은 Active Directory 웹 UI를 사용하거나 PowerShell을 사용할 수 있습니다.
웹 UI
AD 서버의 웹 UI를 열고 로그인합니다.
- Tools > Active Directory Users and Computers > [domain] > Users > [sqluser] > Account로 이동
- 계정 옵션 목록에서 This account supports Kerberos AES 128 bit encryption 및 This account supports Kerberos AES 256 bit encryption을 선택
- Apply를 클릭
PowerShell
PowerShell에서 Set-ADUser
명령을 사용하여 <sqluser>
를 mssql_ad_sql_user_name
변수로 설정한 사용자 이름으로 바꿉니다.
Set-ADUser -Identity <sqluser> -KerberosEncryptionType AES128,AES256
Active Directory를 사용하여 인증 확인
이제 Role을 실행하여 AD 서버 인증을 구성하고 필요한 암호화 유형을 <sqluser>
사용자에게 추가했으므로 다음 방법 중 하나를 사용하여 인증할 수 있습니다.
- Windows 또는 RHEL: ADS(Azure Data Studio)
- Windows: SSMS(SQL Server Management Studio)
- RHEL: Linux 터미널
ADS(Azure Data Studio)
ADS를 아직 설치하지 않은 경우 Microsoft 도큐멘테이션에 따라 Azure Data Studio를 다운로드하여 설치합니다.
설치가 완료되면 ADS를 시작합니다.
- Create a connection를 클릭
- Authentication type 목록에서 Windows Authentication을 선택
- 다른 필드를 작성하고 Connect를 클릭
이제 SQL Server를 사용할 수 있습니다.

SSMS(SQL Server Management Studio)
먼저 SQL Server에 로그인하는 데 사용할 사용자로 Windows에 로그인한 다음 SSMS를 시작합니다.
- Connect to Server 창의 Server type 목록에서 Database Engine을 선택
- Server name 필드에 Role을 실행한 RHEL 인스턴스의 FQDN(정규화된 도메인 이름, Fully-Qualified Domain Name)을 입력
- Authentication 목록에서 Windows Autehtication을 선택하고 다음 필드를 작성
- Server type: Database Engine
- Server name: 서버 이름을 입력
- Authentication: Windows Authentication
- Connect를 클릭

Linux 터미널
Linux 터미널을 사용하여 인증을 확인하려면 SSH를 사용하여 Role에서 만든 사용자로 서버에 로그인합니다.
$ ssh -l <sqluser>@<domain.com> <client.domain.com>
인증할 Active Directory 사용자의 Kerberos 티켓을 가져옵니다.
$ kinit <AD_user_name>@<DOMAIN.COM>
sqlcmd
를 사용하여 SQL Server에 로그인하고, 예를 들어 현재 사용자를 가져오는 쿼리를 실행합니다.
/opt/mssql-tools/bin/sqlcmd -S -Q 'SELECT SYSTEM_USER'
결론
microsoft.sql.server Role은 사용자 인증을 위해 Active Directory와의 통합을 자동화하는 데 도움이 될 수 있습니다. 이 Role은 redhat.rhel_system_roles.ad_integration Role을 사용하여 Active Directory에 연결하고 redhat.rhel_system_roles.firewall Role을 사용하여 방화벽을 구성하며 일관된 방식으로 이 작업을 수행합니다. Red Hat은 RHEL에서 다양한 서비스와 툴을 관리할 수 있도록 더 많은 시스템 Role을 제공합니다. 워크플로우 자동화에 관심이 있는 경우 사용 가능한 RHEL 시스템 Role 목록을 확인하고 해당 주제에 대한 도큐멘테이션 또는 관련 블로그 게시물을 읽어보세요. 많은 자료가 준비되어 있습니다!
microsoft.sql.server Role이 어떤 도움이 될 수 있는지 자세히 알아보려면 공식 도큐멘테이션을 참조하세요.
저자 소개
Sergei Petrosian is a technical writer at Red Hat working on Satellite and Foreman documentation.
채널별 검색
오토메이션
기술, 팀, 인프라를 위한 IT 자동화 최신 동향
인공지능
고객이 어디서나 AI 워크로드를 실행할 수 있도록 지원하는 플랫폼 업데이트
오픈 하이브리드 클라우드
하이브리드 클라우드로 더욱 유연한 미래를 구축하는 방법을 알아보세요
보안
환경과 기술 전반에 걸쳐 리스크를 감소하는 방법에 대한 최신 정보
엣지 컴퓨팅
엣지에서의 운영을 단순화하는 플랫폼 업데이트
인프라
세계적으로 인정받은 기업용 Linux 플랫폼에 대한 최신 정보
애플리케이션
복잡한 애플리케이션에 대한 솔루션 더 보기
오리지널 쇼
엔터프라이즈 기술 분야의 제작자와 리더가 전하는 흥미로운 스토리
제품
- Red Hat Enterprise Linux
- Red Hat OpenShift Enterprise
- Red Hat Ansible Automation Platform
- 클라우드 서비스
- 모든 제품 보기
툴
체험, 구매 & 영업
커뮤니케이션
Red Hat 소개
Red Hat은 Linux, 클라우드, 컨테이너, 쿠버네티스 등을 포함한 글로벌 엔터프라이즈 오픈소스 솔루션 공급업체입니다. Red Hat은 코어 데이터센터에서 네트워크 엣지에 이르기까지 다양한 플랫폼과 환경에서 기업의 업무 편의성을 높여 주는 강화된 기능의 솔루션을 제공합니다.