이 글은 Azure Synapse Analytics 전용 SQL 풀(구 SQL DW)의 가상 데이터베이스 내에서 Microsoft Entra ID(구 Azure Active Directory)로 지원되는 master 생성과 사용법을 안내합니다. Azure Synapse Analytics 작업 공간의 전용 SQL 풀은 논리 SQL 서버를 사용하지 않습니다.
참고
Microsoft Entra server principals는 현재 Azure Synapse Analytics에서 미리 보기 상태입니다.
이 튜토리얼에서는 다음을 배우게 됩니다:
- 가상
master데이터베이스에서 Microsoft Entra 로그인 생성 - 가상
master데이터베이스에서 Microsoft Entra 로그인에 매핑된 사용자 만들기 -
WITH OBJECT_ID구문을 비유니크 표시 이름에 사용하십시오 - Microsoft Entra 사용자에 서버 역할 부여
- Microsoft Entra 로그인 사용 안 함으로 설정
Prerequisites
- Azure Synapse Analytics 전용 SQL 풀과 데이터베이스가 있습니다.
- Azure Synapse Analytics에 대해 구성된 Microsoft Entra 인증. 자세한 내용은 Azure Synapse Analytics로 Microsoft Entra 인증 구성 및 관리하기를 참조하세요.
- 이 문서에서는 가상
master데이터베이스 내에서 Microsoft Entra 로그인 및 사용자를 만드는 방법에 대해 설명합니다. Microsoft Entra 관리자만 가상master데이터베이스 내에서 사용자를 만들 수 있으므로 이 자습서를 진행할 때 Microsoft Entra 관리자 계정을 사용할 것을 권장합니다.loginmanager역할의 Microsoft Entra 주체는 로그인을 만들 수 있지만 가상master데이터베이스 내의 사용자는 만들 수 없습니다.
참고
Microsoft Entra ID(특히 서비스 주체의 경우)에서 고유하지 않은 표시 이름을 처리하는 조직의 경우 로그인을 만들려는 모든 서비스 주체에 사용할 수 있는 개체 ID 정보가 있는지 확인합니다. 구문 확장은 WITH OBJECT_ID 이러한 시나리오를 해결하는 데 도움이 될 수 있습니다.
Microsoft Entra 로그인 만들기
Microsoft Entra 계정 로그인을 생성하세요. 이 예에서는
contoso라는 Microsoft Entra 도메인에 있는bob@contoso.com를 사용하세요. 또한 Microsoft Entra 그룹이나 서비스 주체(애플리케이션)에서 로그인을 생성할 수도 있습니다. 자세한 내용은 CREATE LOGIN(Transact-SQL)을 참조하세요.참고
첫 번째 Microsoft Entra 로그인은 Microsoft Entra 관리자가 만들어야 합니다. Microsoft Entra 관리자는 Microsoft Entra 사용자 또는 그룹일 수 있습니다. SQL 인증 로그인은 Microsoft Entra 로그인을 생성할 수 없습니다.
Tip
Microsoft Entra ID에서 중복된 표시 이름에 문제가 생기면
WITH OBJECT_ID구문 확장을 사용하세요. 이 기능은 중복된 표시 이름을 가진 서비스 주체에 특히 유용합니다. 다음은 그 예입니다.CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'자세한 내용은 이름 관련 고려 사항을 참조하세요.
SQL Server Management Studio(SSMS)를 사용하여 Microsoft Entra 관리자 계정으로 전용 SQL 풀에 로그인하세요.
Databases>System Databases을(를) 확장하세요.
master데이터베이스를 마우스 오른쪽 단추로 클릭하고 새 쿼리 선택하여master데이터베이스의 컨텍스트에서 새 쿼리 창을 엽니다.다음 쿼리를 실행합니다.
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GOsys.server_principals에서 생성된 로그인을 확인합니다. 다음 쿼리를 실행합니다.SELECT name, type_desc, type, is_disabled FROM sys.server_principals WHERE type_desc like 'external%'다음과 같은 결과물을 볼 수 있습니다:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0로그인
bob@contoso.com은 가상master데이터베이스에 생성됩니다.
Microsoft Entra 로그인을 사용하여 사용자 만들기
Microsoft Entra 로그인을 생성한 후, 가상
master데이터베이스에서 해당 Microsoft Entra 로그인에 매핑되는 데이터베이스 수준의 Microsoft Entra 사용자를 생성하세요. 사용자를 특수 역할에 추가하는 방법을 보여주기 위해, 가상master데이터베이스에 사용자를 생성하는 예시로bob@contoso.com를 사용합니다. Microsoft Entra 관리자 또는 SQL 서버 관리자만 가상master데이터베이스에서 사용자를 만들 수 있습니다.가상
master데이터베이스를 사용하되, 다른 데이터베이스에서 사용자를 만들고 싶다면 원하는 데이터베이스에 다시 연결할 수 있습니다. 다음 쿼리를 실행합니다.CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]Tip
Microsoft Entra 사용자 별칭(예
bob@contoso.com: )을 사용할 필요는 없지만 Microsoft Entra 사용자 및 Microsoft Entra 로그인에 동일한 별칭을 사용하는 것이 좋습니다.특정 객체 ID를 가진 외부 제공자로부터 직접 사용자를 생성해야 한다면(예: 고유하지 않은 표시 이름 문제를 해결하기 위해), 다음 문법을 사용하세요:
CREATE USER [user_name] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'objectid'sys.database_principals에서 생성된 사용자를 확인합니다. 다음 쿼리를 실행합니다.SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'다음과 같은 결과물을 볼 수 있습니다:
Name type_desc type bob@contoso.com EXTERNAL_USER E
참고
Microsoft Entra 로그인 없이 Microsoft Entra 사용자를 만드는 기존 구문은 계속 지원됩니다. 다음 구문을 실행하면, 연결된 특정 데이터베이스에 포함된 데이터베이스 사용자를 생성합니다. 이 사용자는 가상 master 데이터베이스에 같은 이름의 로그인이 있더라도 어떤 로그인과도 연관되어 있지 않습니다.
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER을 예로 들 수 있습니다.
고유하지 않은 디스플레이 이름을 가진 서비스 프린시펄을 사용해 Microsoft Entra 로그인을 생성할 수 있습니다. 자세한 내용은 이름 고려사항을 참조하세요.
Microsoft Entra 로그인에 대한 서버 수준 역할 권한 부여하기
데이터베이스의 master, ##MS_ServerStateReader## 또는 ##MS_ServerStateManager## 역할과 같은 고정된 서버 수준 역할에 로그인을 추가할 수 있습니다.
참고
여기에 언급된 서버 수준 역할은 Microsoft Entra 그룹에 대해 지원되지 않습니다.
ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateManager## ADD MEMBER [AzureAD_object];
사용 권한은 사용자가 다시 연결할 때까지 유효하지 않습니다. DBCC 캐시도 비웁니다.
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
서버 수준 역할의 일부인 Microsoft Entra 로그인을 확인하려면 다음 쿼리를 실행합니다.
SELECT roles.principal_id AS RolePID,roles.name AS RolePName,
server_role_members.member_principal_id AS MemberPID, members.name AS MemberPName
FROM sys.server_role_members AS server_role_members
INNER JOIN sys.server_principals AS roles
ON server_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.server_principals AS members
ON server_role_members.member_principal_id = members.principal_id;
Microsoft Entra 사용자에게 특별한 역할 권한 부여하기
가상 데이터베이스 내 사용자들에게 master을 할당할 수 있습니다.
사용자에게 특별한 데이터베이스 역할 중 하나를 부여하려면, 해당 사용자가 가상 master 데이터베이스에 존재해야 합니다.
사용자를 역할에 추가하려면 다음 쿼리를 실행하세요:
ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]
역할에서 사용자를 제거하려면 다음 쿼리를 실행합니다.
ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]
AzureAD_object(은)는 Microsoft Entra ID의 Microsoft Entra 사용자, 그룹 또는 서비스 주체일 수 있습니다.
다음 예에서는 사용자 bob@contoso.com를 생성합니다.
dbmanager와 loginmanager 역할을 사용자에게 할당하세요.
다음 쿼리를 실행합니다.
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]다음 쿼리를 실행하여 데이터베이스 역할 할당을 확인합니다.
SELECT DP1.name AS DatabaseRoleName, isnull (DP2.name, 'No members') AS DatabaseUserName FROM sys.database_role_members AS DRM RIGHT OUTER JOIN sys.database_principals AS DP1 ON DRM.role_principal_id = DP1.principal_id LEFT OUTER JOIN sys.database_principals AS DP2 ON DRM.member_principal_id = DP2.principal_id WHERE DP1.type = 'R'and DP2.name like 'bob%'다음과 같은 결과물을 볼 수 있습니다:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
선택 사항 - 로그인 사용 안 함
전용 SQL 풀에서 Microsoft Entra 로그인을 활성화하거나 비활성화하려면 ALTER LOGIN (Transact-SQL) DDL 문법을 사용하세요.
ALTER LOGIN [bob@contoso.com] DISABLE
DISABLE 또는 ENABLE 변경 사항을 즉시 적용하려면 다음 T-SQL 명령어를 사용하여 인증 캐시와 TokenAndPermUserStore 캐시를 지우세요:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
다음 쿼리를 실행하여 로그인이 비활성화되었는지 확인하세요:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1