Microsoft Entra 다단계 인증을 통한 데이터베이스 연결

적용 대상:Azure SQL Database

이 문서는 Azure SQL Database에 연결하는 C# 프로그램을 제공합니다. 이 프로그램은 Microsoft Entra ID(이전의 Azure Active Directory)를 사용하여 다단계 인증을 지원하는 대화형 모드 인증을 사용합니다.

SQL 도구의 다단계 인증 지원에 관한 자세한 내용은 Microsoft Entr 다단계 인증 사용을 참조하세요.

참고 항목

Microsoft Entra ID는 이전의 Azure AD(Azure Active Directory)입니다.

Azure SQL Database의 다단계 인증

Active Directory Interactive 인증은 Microsoft.Data.SqlClient를 사용하여 Azure SQL 데이터 원본에 연결하는 다단계 인증을 지원합니다. 클라이언트 C# 프로그램에서 열거형 값은 다단계 인증을 지원하는 Microsoft Entra 대화형 모드를 사용하여 Azure SQL Database에 연결하도록 시스템에 지시합니다. 프로그램을 실행하는 사용자에게는 다음 대화 상자가 표시됩니다.

  • Microsoft Entra 사용자 이름을 표시하고 사용자의 암호를 요청하는 대화 상자입니다.

    사용자의 도메인이 Azure AD와 페더레이션되어 있는 경우 암호가 필요하지 않으므로 대화 상자가 표시되지 않습니다.

    Microsoft Entra 정책이 사용자에게 다단계 인증을 적용하는 경우 계정에 로그인하기 위한 대화 상자가 표시됩니다.

  • 사용자가 다단계 인증을 처음 통과하면 시스템은 문자 메시지를 보내기 위해 휴대폰 번호를 요청하는 대화 상자를 표시합니다. 각 메시지는 사용자가 다음 대화 상자에 입력해야 하는 인증 코드를 제공합니다.

  • 시스템이 휴대폰으로 전송한 다단계 인증 코드를 요청하는 대화 상자입니다.

다단계 인증을 사용하도록 Microsoft Entra ID를 구성하는 방법은 클라우드에서 Microsoft Entra ID 다단계 인증 시작을 참조하세요.

이러한 대화 상자의 스크린샷은 Microsoft Entra 다단계 인증 사용을 참조하세요.

.NET API 브라우저 도구 페이지에서 .NET Framework API를 검색할 수 있습니다.

optional ?term=<search value> 매개 변수를 사용하여 직접 검색할 수도 있습니다.

전제 조건

시작하기 전에 논리 SQL 서버를 만들었으며 사용할 수 있는 지를 확인하세요.

서버에 Microsoft Entra 관리자 설정하는 법

C# 예제를 실행하려면 논리 서버 관리자가 서버에 대한 Microsoft Entra ID의 Microsoft Entra 관리자를 할당해야 합니다.

Azure Portal의 SQL Server 페이지에 들어가서, 리소스 메뉴에서 Microsoft Entra ID를 선택한 다음, 관리자 설정을 선택합니다.

Azure SQL Database의 Microsoft Entra 관리자 및 사용자에 대한 자세한 내용은 SQL Database를 통한 Microsoft Entra 인증 구성 및 관리의 스크린샷을 참조하세요.

Microsoft.Data.SqlClient

C# 예제는 Microsoft.Data.SqlClient 네임스페이스를 사용합니다. 자세한 내용은 SqlClient를 통한 Microsoft Entra 인증을 참조하세요.

참고 항목

System.Data.SqlClient는 더 이상 사용되지 않는 Azure ADAL(Active Directory 인증 라이브러리)을 사용합니다. Microsoft Entra 인증에 System.Data.SqlClient 네임스페이스를 사용하는 경우 애플리케이션을 Microsoft.Data.SqlClientMSAL(Microsoft 인증 라이브러리)로 마이그레이션하세요. SqlClient를 통한 Microsoft Entra 인증을 사용하는 방법에 대한 자세한 내용은 SqlClient을 통한 Microsoft Entra 인증 사용을 참조하세요.

SQL Server Management Studio를 사용한 확인

C# 예제를 실행하기 전에 SSMS(SQL Server Management Studio)에서 사용자 설정 및 구성이 올바른지 확인하는 것이 좋습니다. C# 프로그램의 오류 범위를 소스 코드로 좁힐 수 있습니다.

서버 수준 방화벽 IP 주소 확인

C# 예제를 실행할 동일한 건물의 동일한 컴퓨터에서 SSMS를 실행합니다. 이 테스트의 경우 모든 인증 모드를 사용할 수 있습니다. 서버가 IP 주소를 수락하지 않는다는 표시가 있는 경우 서버 수준 및 데이터베이스 수준 방화벽 규칙을 참조하세요.

Microsoft Entra 다단계 인증 확인

이번에는 인증Azure Active Directory - MFA를 통한 유니버설 인증으로 설정하고 SSMS를 다시 실행합니다. 이 옵션은 SSMS 버전 18.6 이상을 필요로 합니다.

자세한 내용은 Microsoft Entra 다단계 인증을 참조하세요.

참고 항목

18.x 이전의 SSMS 버전의 경우 게스트 사용자는 데이터베이스에 대한 Microsoft Entra 도메인 이름 또는 테넌트 ID를 제공해야 합니다. 옵션>AD 도메인 이름 또는 테넌트 ID를 선택하세요. SSMS 버전 18.x 이상에서는 테넌트가 자동으로 인식됩니다.

Azure 포털에서 도메인 이름을 찾으려면 Microsoft Entra ID>사용자 지정 도메인 이름을 선택하세요. C# 예제 프로그램에서는 도메인 이름을 제공할 필요가 없습니다.

C# 코드 예제

참고 항목

.NET Core를 사용하는 경우 Microsoft.Data.SqlClient 네임스페이스를 사용할 것을 권장합니다. 자세한 내용은 다음 블로그를 참조하세요.

C# 소스 코드의 예시입니다.


using System;
using Microsoft.Data.SqlClient;

public class Program
{
    public static void Main(string[] args)
    {
        // Use your own server, database, and user ID.
        // Connetion string - user ID is not provided and is asked interactively.
        string ConnectionString = @"Server=<your server>.database.windows.net; Authentication=Active Directory Interactive; Database=<your database>";


        using (SqlConnection conn = new SqlConnection(ConnectionString))

        {
            conn.Open();
            Console.WriteLine("ConnectionString2 succeeded.");
            using (var cmd = new SqlCommand("SELECT @@Version", conn))
            {
                Console.WriteLine("select @@version");
                var result = cmd.ExecuteScalar();
                Console.WriteLine(result.ToString());
            }

        }
        Console.ReadKey();

    }
}

 

C# 테스트의 결과 예시입니다.

ConnectionString2 succeeded.
select @@version
Microsoft SQL Azure (RTM) - 12.0.2000.8
   ...

다음 단계