다음을 통해 공유


Microsoft Fabric의 SQL 데이터베이스 인증

적용 대상:Microsoft Fabric의 SQL 데이터베이스

이 문서에서는 SQL 데이터베이스에 대한 인증에 대해 설명합니다.

다른 Microsoft Fabric 항목 유형과 마찬가지로 SQL 데이터베이스는 Microsoft Entra 인증을 사용합니다.

SQL 데이터베이스에 성공적으로 인증하려면 Microsoft Entra 사용자, 서비스 주체 또는 해당 그룹에 Fabric의 데이터베이스에 대한 읽기 항목 권한이 있어야 합니다. 패브릭 작업 영역 또는 특정 데이터베이스에 대한 Microsoft Entra ID 액세스 권한을 부여하는 방법에 대한 자세한 내용은 패브릭 액세스 제어를 참조 하세요.

Fabric에서 SQL 데이터베이스에 대한 연결 문자열 찾으려면 Microsoft Fabric의 SQL 데이터베이스에 연결을 참조하세요.

참고 항목

서비스 주체가 Fabric 및 SQL 데이터베이스에 연결할 수 있도록 하려면 서비스 주체가 Fabric API Fabric 테넌트 설정을 사용할 수 있도록 설정해야 합니다. 테넌트 설정을 사용하도록 설정하는 방법을 알아보려면 Fabric 테넌트 설정을 참조하세요.

Microsoft Entra 인증을 사용하여 SQL 데이터베이스에 연결

다음을 사용하여 Microsoft Entra 인증을 사용하여 데이터베이스에 연결할 수 있습니다.

  • SQL Server Management StudioVisual Studio Code를 사용한 mssql 확장을 포함하여 Microsoft Entra 인증을 지원하는 SQL 도구입니다.
  • SqlClient, JDBC, ODBC OLE DB를 포함하여 Microsoft Entra 인증을 지원하는 SQL 클라이언트 드라이버를 사용하는 애플리케이션.

애플리케이션 및 도구는 드라이버를 Microsoft Entra 인증을 지원하는 버전으로 업그레이드하고 SQL 연결 문자열 인증 모드 키워드를 추가해야 합니다(예: ActiveDirectoryInteractive또는 ActiveDirectoryServicePrincipalActiveDirectoryPassword.).

Microsoft Entra ID에 대한 데이터베이스 사용자 만들기

Transact-SQL을 사용하여 SQL 액세스 제어를 구성하려는 경우 먼저 CREATE USER(Transact-SQL)를 사용하여 Microsoft Entra ID(사용자, 서비스 주체 또는 해당 그룹)에 해당하는 데이터베이스 사용자를 만들어야 합니다.

패브릭 액세스 제어(작업 영역 역할 또는 항목 권한)를 사용하는 경우 데이터베이스 사용자를 만들 필요가 없습니다. 패브릭 포털에서 SQL 데이터베이스 수준 역할을 관리할 때 사용자를 만들 필요가 없습니다. 필요한 경우 포털에서 자동으로 사용자를 만듭니다.

Microsoft Entra 사용자로 연결된 경우 데이터베이스 사용자 만들기

데이터베이스에 Microsoft Entra 사용자로 연결된 경우 FROM EXTERNAL PROVIDER 절과 함께 사용하여 CREATE USER Microsoft Entra 보안 주체에 대한 사용자를 만들어야 합니다. FROM EXTERNAL PROVIDER Microsoft Entra를 사용하여 지정된 보안 주체 이름의 유효성을 검사하고, 보안 주체 식별자(사용자 또는 그룹의 개체 ID, 애플리케이션 ID 또는 클라이언트 ID)를 검색하고, 식별자를 SQL 메타데이터에 사용자의 SID(보안 식별자)로 저장합니다. 절을 사용하는 경우 Microsoft Entra에서 디렉터리 읽기 권한자 역할FROM EXTERNAL PROVIDER 멤버여야 합니다. 다음 샘플 T-SQL 스크립트는 Microsoft Entra 사용자, Microsoft Entra의 서비스 주체 또는 Microsoft Entra의 그룹을 기반으로 사용자를 만드는 데 사용합니다 FROM EXTERNAL PROVIDER .

-- Create a user for a Microsoft Entra user
CREATE USER [alice@contoso.com] FROM EXTERNAL PROVIDER;
-- Create a user for a service principal in Microsoft Entra
CREATE USER [HRApp] FROM EXTERNAL PROVIDER;
-- Create a user for a group in Microsoft Entra
CREATE USER [HR] FROM EXTERNAL PROVIDER; 

Microsoft Entra 서비스 주체로 연결된 경우 데이터베이스 사용자 만들기

애플리케이션이 서비스 주체가 있는 데이터베이스에 연결된 경우 애플리케이션은 SID 및 TYPE 절을 발급 CREATE USER 하여 Microsoft Entra 보안 주체에 대한 사용자를 만들어야 합니다. Microsoft Entra에서는 지정된 보안 주체 이름의 유효성이 검사되지 않습니다. 유효한 이름과 유효한 SID 및 사용자 개체 형식을 제공하는 것은 애플리케이션(애플리케이션 개발자)의 책임입니다.

지정된 보안 주체가 Microsoft Entra의 사용자 또는 그룹인 경우 SID는 Microsoft Entra에서 해당 사용자 또는 그룹의 개체 ID여야 합니다. 지정된 보안 주체가 Microsoft Entra의 서비스 주체인 경우 SID는 Microsoft Entra에 있는 서비스 주체의 애플리케이션 ID(클라이언트 ID)여야 합니다. Microsoft Entra에서 가져온 개체 ID 및 애플리케이션 ID(클라이언트 ID)를 이진(16)으로 변환해야 합니다.

인수의 TYPE 값은 다음과 여야 합니다.

  • E - 지정된 Microsoft Entra 보안 주체가 사용자 또는 서비스 주체인 경우
  • X - 지정된 Microsoft Entra 보안 주체가 그룹인 경우

다음 T-SQL 예제 스크립트는 새 사용자의 SID를 Microsoft Entra 사용자의 개체 ID로 설정하는 Microsoft bob@contoso.comEntra 사용자에 대한 데이터베이스 사용자를 만듭니다. 사용자 개체 ID의 고유 식별자가 변환된 다음 문으로 CREATE USER 연결됩니다. Microsoft Entra에서 사용자의 개체 ID로 바꿉 <unique identifier sid> 니다.

DECLARE @principal_name SYSNAME = 'bob@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);

다음 예제에서는 새 사용자의 SID를 Microsoft Entra의 서비스 주체 클라이언트 ID로 설정하는 Microsoft HRAppEntra 서비스 주체에 대한 데이터베이스 사용자를 만듭니다.

DECLARE @principal_name SYSNAME = 'HRApp';
DECLARE @clientId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's client ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castClientId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @clientId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castClientId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castClientId + ', TYPE = E;'
EXEC (@cmd);

다음 예제에서는 새 사용자의 SID를 그룹의 개체 ID로 설정하는 Microsoft HREntra 그룹의 데이터베이스 사용자를 만듭니다.

DECLARE @group_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@groupName] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);

제한 사항

  • Microsoft Entra ID는 Fabric에서 지원하는 유일한 ID 공급자 SQL 데이터베이스입니다. 특히 SQL 인증은 지원되지 않습니다.
  • 로그인(서버 보안 주체)은 지원되지 않습니다.