피드 구독

microsoft.sql.server Ansible Role이 Red Hat Enterprise Linux(RHEL)에 지난해 도입되었습니다. RHEL 8.8 및 9.2 릴리스에서 이 Role은 다음과 같은 몇 가지 새로운 기능이 포함된 새 업데이트를 수신합니다.

이 문서에서는 Active Directory(AD)와의 통합에 대해 설명하고 전체 프로세스를 안내합니다.

  1. SQL Server에 대한 AD 인증을 구성하기 위한 요구 사항을 충족하는지 확인
  2. Ansible 인벤토리 파일 준비
  3. 설정해야 하는 변수를 살펴보고, Active Directory 인증을 자동으로 구성하도록 Role을 사용하여 Ansible Playbook 파일을 준비
  4. Role 실행
  5. 구성 완료
  6. 인증이 예상대로 작동하는지 확인

전제 조건

시작하기 전에 Role의 전제 조건을 충족하는지 확인해야 합니다.

  1. RHEL 머신에서 Active Directory 서버를 실행하고 액세스할 수 있어야 합니다. 전제 조건 개요는 Microsoft 설명서인 Linux 호스트의 SQL Server를 Active Directory 도메인에 연결에서 확인할 수 있습니다. 전제 조건을 충족하는 데 문제가 있는 경우 Active Directory 트러블슈팅을 참조하십시오.
  2. DNS 조회가 작동하는지 확인합니다. RHEL 머신에서 IP 주소와 축약된 DNS 이름, 전체 DNS 이름으로 Active Directory 서버를 ping할 수 있어야 합니다.
  3. 역방향 DNS 조회가 작동하는지 확인합니다. Active Directory 서버의 IP 주소에 대해 nslookup 명령을 실행하면 올바른 DNS 이름으로 확인되어야 하며, DNS 이름은 올바른 IP 주소로 차례로 확인되어야 합니다.
  4. 도메인에서 계정 및 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_passwordsa 사용자의 암호를 설정합니다.
  • 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_namead_integration_realm에 제공된 값을 기반으로 고유 이름을 빌드하고 Users OU(예: CN=sqluser,CN=Users, DC=DOMAIN,DC=COM)를 사용합니다. 고유 이름을 제공하여 이를 덮어쓸 수 있습니다.
  • mssql_ad_netbios_name: AD 서버의 NetBIOS 도메인 이름이 ad_integration_realm 변수로 제공한 도메인 이름의 첫 번째 하위 도메인과 같지 않은 경우(예: ad_integration_realmdomain.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를 열고 로그인합니다.

  1. Tools > Active Directory Users and Computers > [domain] > Users > [sqluser] > Account로 이동
  2. 계정 옵션 목록에서 This account supports Kerberos AES 128 bit encryptionThis account supports Kerberos AES 256 bit encryption을 선택
  3. 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를 시작합니다.

  1. Create a connection를 클릭
  2. Authentication type 목록에서 Windows Authentication을 선택
  3. 다른 필드를 작성하고 Connect를 클릭

이제 SQL Server를 사용할 수 있습니다.

Azure Data Studio user interface

SSMS(SQL Server Management Studio)

먼저 SQL Server에 로그인하는 데 사용할 사용자로 Windows에 로그인한 다음 SSMS를 시작합니다.

  1. Connect to Server 창의 Server type 목록에서 Database Engine을 선택
  2. Server name 필드에 Role을 실행한 RHEL 인스턴스의 FQDN(정규화된 도메인 이름, Fully-Qualified Domain Name)을 입력
  3. Authentication 목록에서 Windows Autehtication을 선택하고 다음 필드를 작성
    • Server type: Database Engine
    • Server name: 서버 이름을 입력
    • Authentication: Windows Authentication
  4. Connect를 클릭
SQL Server Management Studio user interface

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.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

채널별 검색

automation icon

오토메이션

기술, 팀, 인프라를 위한 IT 자동화 최신 동향

AI icon

인공지능

고객이 어디서나 AI 워크로드를 실행할 수 있도록 지원하는 플랫폼 업데이트

open hybrid cloud icon

오픈 하이브리드 클라우드

하이브리드 클라우드로 더욱 유연한 미래를 구축하는 방법을 알아보세요

security icon

보안

환경과 기술 전반에 걸쳐 리스크를 감소하는 방법에 대한 최신 정보

edge icon

엣지 컴퓨팅

엣지에서의 운영을 단순화하는 플랫폼 업데이트

Infrastructure icon

인프라

세계적으로 인정받은 기업용 Linux 플랫폼에 대한 최신 정보

application development icon

애플리케이션

복잡한 애플리케이션에 대한 솔루션 더 보기

Original series icon

오리지널 쇼

엔터프라이즈 기술 분야의 제작자와 리더가 전하는 흥미로운 스토리