다음을 통해 공유


Azure Automation을 사용하여 Azure SQL Database의 데이터베이스 관리

이 문서에서는 Azure Automation의 시스템 할당 관리 ID를 사용하여 Azure SQL Database에서 데이터베이스를 연결하고 관리하는 절차를 설명합니다. Azure Automation을 사용하면 Azure Az PowerShell에서 제공되는 최신 Az PowerShell cmdlet을 통해 Azure SQL Database의 데이터베이스를 관리할 수 있습니다.

Azure Automation에서는 이러한 Azure Az PowerShell cmdlet을 기본적으로 사용할 수 있으므로 서비스 내에서 SQL 데이터베이스 관리 작업을 모두 수행할 수 있습니다. Azure Automation에서 이러한 cmdlet을 다른 Azure 서비스용 cmdlet과 연결하여 Azure 서비스와 타사 시스템 간의 복잡한 작업을 자동화할 수도 있습니다.

Azure Automation은 PowerShell을 사용하여 SQL 서버에 대해 T-SQL(Transact SQL) 명령을 실행할 수도 있습니다.

데이터베이스에 대해 명령을 실행하려면 다음을 수행해야 합니다.

  • Automation 계정에 시스템 할당 관리 ID가 있는지 확인합니다.
  • Automation 관리 ID에 적절한 권한을 제공합니다.
  • Microsoft Entra 인증을 활용하도록 SQL Server를 구성합니다.
  • SQL Server에서 Automation 계정 관리 ID에 매핑되는 사용자를 만듭니다.
  • Runbook을 만들어 명령을 연결하고 실행합니다.
  • (선택 사항) SQL 서버가 방화벽으로 보호되는 경우 HRW(Hybrid Runbook Worker)를 만들고, 해당 서버에 SQL 모듈을 설치하고, HRW IP 주소를 방화벽의 허용 목록에 추가합니다.

시스템 할당 관리 ID를 사용하여 Azure SQL 데이터베이스에 연결

Automation 시스템 관리 ID에서 Azure SQL 데이터베이스로 액세스를 허용하려면 다음 단계를 수행합니다.

  1. Automation 시스템 관리 ID가 끄기인 경우 다음을 수행합니다.

    1. Azure Portal에 로그인합니다.

    2. Automation 계정으로 이동합니다.

    3. Automation 계정 페이지의 계정 설정 아래에서 ID를 선택합니다.

    4. 시스템 할당 탭에서 상태켜기를 선택합니다.

      시스템이 할당한 관리 ID에 대해 상태를 켜기로 설정하는 것을 보여 주는 스크린샷.

  2. 시스템 관리 ID가 켜기인 상태에서 다음 단계를 사용하여 계정에 필요한 액세스를 제공해야 합니다.

    1. Automation 계정 | ID 페이지에서 시스템 할당 탭의 권한 아래에서 Azure 역할 할당을 선택합니다.
    2. Azure 역할 할당 페이지에서 +역할 할당 추가(미리 보기)를 선택합니다.
    3. 역할 할당 추가(미리 보기)에서 범위로 ‘SQL’을 선택하고, 구독을 선택하고, 드롭다운에서 리소스를 선택하고, 최소 필요 권한에 따라 역할을 선택한 다음, 저장을 선택합니다.

    시스템이 할당한 관리 ID 상태가 켜기로 설정된 경우 역할 할당을 추가하는 것을 보여 주는 스크린샷.

  3. 다음 단계를 사용하여 Active Directory 인증을 사용하도록 SQL Server를 구성합니다.

    1. Azure Portal 홈페이지로 이동하여 SQL Server를 선택합니다.
    2. SQL Server 페이지의 설정 아래에서 Microsoft Entra ID를 선택합니다.
    3. 관리자 설정을 선택하여 AD 인증을 사용하도록 SQL Server를 구성합니다.
  4. 다음 단계를 사용하여 SQL 쪽에서 인증을 추가합니다.

    1. Azure Portal 홈페이지로 이동하여 SQL Server를 선택합니다.
    2. SQL Server 페이지의 설정아래에서 SQL 데이터베이스를 선택합니다.
    3. 데이터베이스를 선택하여 SQL 데이터베이스 페이지로 이동하여 쿼리 편집기(미리 보기)를 선택하고 다음 두 쿼리를 실행합니다.
      # AutomationAccount - replace with your Automation account's name
      # ObjectID - replace with object (principal) ID for your system managed identity principal from step 1.
      CREATE USER "AutomationAccount" FROM EXTERNAL PROVIDER WITH OBJECT_ID = `ObjectID`
      EXEC sp_addrolemember `db_owner`, "AutomationAccount"
      

샘플 코드

Azure SQL Server에 연결

if ($($env:computerName) -eq "Client") {"Runbook running on Azure Client sandbox"} else {"Runbook running on " + $env:computerName}
Disable-AzContextAutosave -Scope Process
Connect-AzAccount -Identity
$Token = (Get-AZAccessToken -ResourceUrl https://database.windows.net).Token
Invoke-Sqlcmd -ServerInstance azuresqlserverxyz.database.windows.net -Database MyDBxyz -AccessToken $token -query 'select * from TableXYZ' 

SQL 쪽에서 계정 권한 확인

SELECT roles.[name] as role_name, members.name as [user_name] 
from sys.database_role_members 
Join sys.database_principals roles on database_role_members.role_principal_id= roles.principal_id 
join sys.database_principals members on database_role_members.member_principal_id=members.principal_id 
Order By 
roles.[name], members.[name] 

참고 항목

SQL Server가 방화벽 뒤에서 실행되는 경우 사용자 자체 네트워크에 있는 컴퓨터에서 Azure Automation Runbook을 실행해야 합니다. IP 주소 또는 네트워크가 방화벽에 의해 차단되지 않도록 이 컴퓨터를 Hybrid Runbook Worker로 구성해야 합니다. 컴퓨터를 Hybrid Worker로 구성하는 방법에 대한 자세한 내용은 Hybrid Worker 만들기를 참조하세요.

Hybrid Worker 사용

Hybrid Worker를 사용하는 경우 Runbook이 사용하는 모듈은 관리자 권한 PowerShell 프롬프트에서 로컬로 설치해야 합니다. 예: - Install-module Az.Accounts and Install-module SqlServer. 필요한 모듈 이름을 찾으려면 각 cmdlet에서 명령을 실행한 다음 원본을 확인합니다. 예를 들어 Az.Account 모듈의 일부인 cmdlet Connect-AzAccounts에 대한 모듈 이름을 확인하려면 다음 명령을 실행합니다. get-command Connect-AzAccount

참고 항목

Hybrid Worker에서 실행하려는 Runbook 맨 위에 다음 코드를 추가하는 것이 좋습니다. if ($($env:computerName) -eq "CLIENT") {"Runbook running on Azure CLIENT"} else {"Runbook running on " + $env:computerName}. 이 코드를 사용하면 실행 중인 노드를 볼 수 있으며, 실수로 Hybrid Worker 대신 Azure 클라우드에서 실행하는 경우 Runbook이 작동하지 않는 이유를 확인하는 데 도움이 됩니다.

다음 단계