자습서: Microsoft Entra 로그인으로 보안 - Azure SQL Managed Instance
적용 대상: Azure SQL Managed Instance
이 문서에서는 Microsoft Entra ID(이전의 Azure Active Directory)에서 지원하는 서버 보안 주체(로그인)를 사용하여 Azure SQL Managed Instance를 보안하는 방법을 알아봅니다.
이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- 관리형 인스턴스에 대한 Microsoft Entra 로그인 만들기
- 관리형 인스턴스에서 로그인에 대한 권한 부여
- 로그인에서 Microsoft Entra 사용자 만들기
- 사용자에게 권한 할당 및 데이터베이스 보안 관리
- 사용자로 가장 사용
- 사용자로 데이터베이스 간 쿼리 사용
- 위협 방지, 감사, 데이터 마스킹 및 암호화와 같은 보안 기능에 대해 알아봅니다.
참고 항목
Microsoft Entra ID는 이전의 Azure AD(Azure Active Directory)입니다.
필수 조건
이 자습서를 완료하려면 다음 필수 조건이 충족되어야 합니다.
- SSMS(SQL Server Management Studio)
- 관리형 인스턴스
- 다음 자습서: 빠른 시작: 관리형 인스턴스 만들기를 따릅니다.
- 관리형 인스턴스에 액세스할 수 있고 관리형 인스턴스에 대한 Microsoft Entra 관리자를 프로비전했습니다. 자세한 내용은 다음을 참조하세요.
액세스 제한
관리형 인스턴스는 개인 IP 주소를 통해 액세스할 수 있습니다. 격리된 SQL Server 환경과 비슷하게 연결을 설정하려면 애플리케이션 또는 사용자가 SQL Managed Instance 네트워크(VNet)에 액세스할 수 있어야 합니다. 자세한 내용은 애플리케이션을 SQL Managed Instance에 연결을 참조하세요.
Azure SQL Database와 동일한 방식으로 공용 연결을 허용하는 관리형 인스턴스에서 서비스 엔드포인트를 구성할 수도 있습니다. 자세한 내용은 Azure SQL Managed Instance에서 퍼블릭 엔드포인트 구성을 참조하세요.
SSMS를 사용하여 Microsoft Entra 로그인 만들기
첫 번째 Microsoft Entra 로그인은 SQL 관리자 또는 프로비전 중에 생성한 Microsoft Entra 관리자가 생성할 수 있습니다. 자세한 내용은 SQL Managed Instance에 대한 Microsoft Entra 관리자 프로비전을 참조하세요.
SQL Managed Instance에 연결하는 예제는 다음 문서를 참조하세요.
- 빠른 시작: SQL Managed Instance에 연결하도록 Azure VM 구성
- 빠른 시작: 온-프레미스에서 SQL Managed Instance로의 지점 및 사이트 간 연결을 구성합니다.
SQL Server Management Studio(SSMS)를 사용하여
sysadmin
SQL 로그인 또는 Microsoft Entra 관리자로 관리형 인스턴스에 연결합니다.개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택합니다.
쿼리 창에서 다음 구문을 사용하여 로컬 Microsoft Entra 계정에 대한 로그인을 생성합니다.
USE master GO CREATE LOGIN login_name FROM EXTERNAL PROVIDER GO
이 예제에서는 nativeuser@aadsqlmi.onmicrosoft.com 계정에 대한 로그인을 생성합니다.
USE master GO CREATE LOGIN [nativeuser@aadsqlmi.onmicrosoft.com] FROM EXTERNAL PROVIDER GO
도구 모음에서 실행을 선택하여 로그인을 생성합니다.
T-SQL 명령을 실행하여 새로 추가된 로그인을 확인합니다.
SELECT * FROM sys.server_principals; GO
자세한 내용은 CREATE LOGIN을 참조하세요.
로그인을 생성할 수 있는 권한 부여
기존 로그인에 적절한 권한이 있거나 적절한 서버 역할의 일부여야 다른 Microsoft Entra 로그인을 생성할 수 있습니다.
SQL 인증 로그인
- 로그인이 SQL 인증 기반 서버 보안 주체인 경우 Microsoft Entra 계정에 대한 로그인을 생성하려면
sysadmin
역할을 할당해야 합니다.
Microsoft Entra 인증 로그인
- 로그인이 Microsoft Entra 서버 보안 주체인 경우 다른 Microsoft Entra 사용자, 그룹 및 애플리케이션에 대한 로그인을 생성하려면
sysadmin
또는securityadmin
서버 역할을 할당해야 합니다. - 최소한 다른 Microsoft Entra 로그인을 생성하려면 ALTER ANY LOGIN 권한을 부여해야 합니다.
- 기본값으로
master
에서 마스터에 새로 생성된 Microsoft Entra 로그인에 부여된 표준 권한은 CONNECT SQL 및 VIEW ANY DATABASE입니다. sysadmin
서버 역할은 관리형 인스턴스 내 여러 Microsoft Entra 로그인에 부여할 수 있습니다.
sysadmin
서버 역할에 로그인을 추가하는 방법:
관리형 인스턴스에 다시 로그인하거나 Microsoft Entra 관리자 또는
sysadmin
인 SQL 보안 주체와의 기존 연결을 사용합니다.개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택합니다.
다음 T-SQL 구문을 사용하여 Microsoft Entra 로그인에
sysadmin
서버 역할을 부여합니다.ALTER SERVER ROLE sysadmin ADD MEMBER login_name GO
다음 예제에서는
sysadmin
서버 역할을 로그인 nativeuser@aadsqlmi.onmicrosoft.com에 부여합니다.ALTER SERVER ROLE sysadmin ADD MEMBER [nativeuser@aadsqlmi.onmicrosoft.com] GO
SSMS를 사용하여 추가 Microsoft Entra 로그인 만들기
Microsoft Entra 로그인을 생성하고 sysadmin
권한을 부여한 후 CREATE LOGIN에서 FROM EXTERNAL PROVIDER 절을 사용하여 추가 로그인을 생성할 수 있습니다.
SQL Server Management Studio(SSMS)에서 서버에 연결을 선택하여 Microsoft Entra 로그인으로 관리형 인스턴스에 연결합니다.
- 서버 이름에 SQL Managed Instance 호스트 이름을 입력합니다.
- 인증의 경우 Active Directory - MFA 지원을 통한 유니버설 인증을 선택하여 다단계 인증 로그인 창을 표시합니다. 로그인합니다. 자세한 내용은 범용 인증(다단계 인증에 대한 SSMS 지원)을 참조하세요.
개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택합니다.
쿼리 창에서 다음 구문을 사용하여 다른 Microsoft Entra 계정에 대한 로그인을 생성합니다.
USE master GO CREATE LOGIN login_name FROM EXTERNAL PROVIDER GO
이 예제에서는 Microsoft Entra 사용자(bob@aadsqlmi.net)에 대한 로그인을 생성하며, aadsqlmi.net 도메인은 Microsoft Entra aadsqlmi.onmicrosoft.com 도메인과 페더레이션됩니다.
다음 T-SQL 명령을 실행합니다. 페더레이션된 Microsoft Entra 계정은 온-프레미스 Windows 로그인 및 사용자의 관리형 인스턴스의 대체 기능입니다.
USE master GO CREATE LOGIN [bob@aadsqlmi.net] FROM EXTERNAL PROVIDER GO
CREATE DATABASE 구문을 사용하여 관리형 인스턴스에서 데이터베이스를 생성합니다. 이 데이터베이스는 다음 섹션에서 사용자 로그인을 테스트하는 데 사용됩니다.
개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택합니다.
쿼리 창에서 다음 구문을 사용하여 MyMITestDB라는 데이터베이스를 생성합니다.
CREATE DATABASE MyMITestDB; GO
Microsoft Entra ID에서 그룹에 대한 SQL Managed Instance 로그인을 생성합니다. SQL Managed Instance에 로그인을 추가하기 전에 Microsoft Entra ID에 그룹이 있어야 합니다. 기본 그룹 만들기 및 Microsoft Entra ID를 사용하여 구성원 추가를 참조하세요. mygroup 그룹을 생성하고 이 그룹에 구성원을 추가합니다.
SQL Server Management Studio에서 새 쿼리 창을 엽니다.
이 예제에서는 Microsoft Entra ID에 mygroup이라는 그룹이 있다고 가정합니다. 다음 명령을 실행합니다.
USE master GO CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER GO
테스트로 새로 생성한 로그인 또는 그룹을 사용하여 관리형 인스턴스에 로그인합니다. 관리형 인스턴스에 대한 새 연결을 열고 인증할 때 새 로그인을 사용합니다.
개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 새 연결을 위한 새 쿼리를 선택합니다.
다음 명령을 실행하여 새로 생성한 Microsoft Entra 로그인에 대한 서버 권한을 확인합니다.
SELECT * FROM sys.fn_my_permissions (NULL, 'DATABASE') GO
사용자 및 로그인으로 사용하는 Microsoft Entra 보안 주체에 대한 Azure SQL의 지원은 Microsoft Entra 외부 ID 내부 및 외부 게스트 사용자로 확장됩니다. 게스트 사용자는 개별적으로 또는 그룹의 일부로 Azure SQL의 다른 Microsoft Entra 사용자와 동일하게 사용할 수 있습니다. 게스트 사용자가 다른 Microsoft Entra 서버 로그인 또는 데이터베이스 사용자를 생성할 수 있도록 하려면 Microsoft Entra 디렉터리에서 다른 ID를 읽을 수 있는 권한이 있어야 합니다. 이 권한은 디렉터리 수준에서 구성됩니다. 자세한 내용은 Microsoft Entra ID의 게스트 액세스 권한을 참조하세요.
Microsoft Entra 로그인에서 Microsoft Entra 사용자 만들기
개별 데이터베이스에 권한을 부여하는 기능은 SQL Managed Instance가 SQL Server의 데이터베이스에서 작동하는 방식과 매우 비슷한 방식으로 작동합니다. 해당 데이터베이스에 대한 권한이 부여되거나 데이터베이스 역할에 추가된 데이터베이스의 기존 로그인에서 사용자를 생성할 수 있습니다.
MyMITestDB라는 데이터베이스와 기본 권한만 있는 로그인을 생성했으므로 다음 단계는 해당 로그인에서 사용자를 생성하는 것입니다. 지금은 로그인에서 관리형 인스턴스에 연결하고 모든 데이터베이스를 볼 수 있지만, 데이터베이스와 상호 작용할 수는 없습니다. 기본 권한이 있는 Microsoft Entra 계정으로 로그인하고 새로 생성한 데이터베이스를 확장하려고 하면 다음 오류가 표시됩니다.
데이터베이스 권한 부여에 대한 자세한 내용은 데이터베이스 엔진 권한 시작을 참조하세요.
Microsoft Entra 사용자 만들기 및 샘플 테이블 만들기
참고 항목
사용자가 Microsoft Entra 그룹의 일부로 로그인하는 경우 몇 가지 제한 사항이 있습니다.
예를 들어 지정된 Microsoft Entra 사용자가 sys.server_principals
테이블의 일부가 아니므로 SUSER_SID
에 대한 호출에서 NULL
을 반환합니다.
따라서 이 경우 특정 저장 프로시저 또는 부여된 권한 목록에 대한 액세스가 제한될 수 있습니다.
SQL Server Management Studio를 사용하여
sysadmin
계정으로 관리형 인스턴스에 로그인합니다.개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택합니다.
쿼리 창에서 다음 구문을 사용하여 Microsoft Entra 로그인에서 사용자를 생성합니다.
USE <Database Name> -- provide your database name GO CREATE USER user_name FROM LOGIN login_name GO
다음 예제는 로그인 bob@aadsqlmi.net에서 사용자 bob@aadsqlmi.net을 만듭니다.
USE MyMITestDB GO CREATE USER [bob@aadsqlmi.net] FROM LOGIN [bob@aadsqlmi.net] GO
그룹인 Microsoft Entra 로그인에서 Microsoft Entra 사용자를 생성하는 것도 지원됩니다.
다음 예제에서는 Microsoft Entra 테넌트에 있는 Microsoft Entra 그룹 mygroup에 대한 로그인을 생성합니다.
USE MyMITestDB GO CREATE USER [mygroup] FROM LOGIN [mygroup] GO
mygroup에 속한 모든 사용자는 MyMITestDB 데이터베이스에 액세스할 수 있습니다.
Important
만듭니다. 로그인에서 USER를 생성할 때 LOGIN에서 user_name을 동일한 login_name으로 지정합니다.
자세한 내용은 사용자 만들기를 참조하세요.
새 쿼리 창에서 다음 T-SQL 명령을 사용하여 테스트 테이블을 생성합니다.
USE MyMITestDB GO CREATE TABLE TestTable ( AccountNum varchar(10), City varchar(255), Name varchar(255), State varchar(2) );
생성된 사용자로 SSMS에서 연결을 생성합니다. 앞에서
sysadmin
에 의해 생성된 TestTable 테이블을 볼 수 없습니다. 사용자에게 데이터베이스의 데이터를 읽을 수 있는 권한을 제공해야 합니다.다음 명령을 실행하여 사용자가 보유한 현재 권한을 검사할 수 있습니다.
SELECT * FROM sys.fn_my_permissions('MyMITestDB','DATABASE') GO
데이터베이스 수준 역할에 사용자 추가
사용자가 데이터베이스의 데이터를 볼 수 있도록 사용자에게 데이터베이스 수준 역할을 제공할 수 있습니다.
SQL Server Management Studio를 사용하여
sysadmin
계정으로 관리형 인스턴스에 로그인합니다.개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택합니다.
다음 T-SQL 구문을 사용하여 Microsoft Entra 사용자에게
db_datareader
데이터베이스 역할을 부여합니다.Use <Database Name> -- provide your database name ALTER ROLE db_datareader ADD MEMBER user_name GO
다음 예제에서는 MyMITestDB 데이터베이스에 대한
db_datareader
권한을 bob@aadsqlmi.net 사용자 및 mygroup 그룹에 제공합니다.USE MyMITestDB GO ALTER ROLE db_datareader ADD MEMBER [bob@aadsqlmi.net] GO ALTER ROLE db_datareader ADD MEMBER [mygroup] GO
다음 명령을 실행하여 데이터베이스에 생성한 Microsoft Entra 사용자가 있는지 확인합니다.
SELECT * FROM sys.database_principals GO
db_datareader
역할에 추가된 사용자로 관리형 인스턴스에 대한 새 연결을 생성합니다.개체 탐색기에서 데이터베이스를 확장하여 테이블을 확인합니다.
새 쿼리 창을 열고 다음 SELECT 문을 실행합니다.
SELECT * FROM TestTable
테이블에서 데이터를 볼 수 있나요? 반환되는 열이 표시됩니다.
Microsoft Entra 가장 로그인
SQL Managed Instance는 Microsoft Entra 로그인의 가장을 지원합니다.
가장 테스트
SQL Server Management Studio를 사용하여
sysadmin
계정으로 관리형 인스턴스에 로그인합니다.개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택합니다.
쿼리 창에서 다음 명령을 사용하여 새 저장 프로시저를 생성합니다.
USE MyMITestDB GO CREATE PROCEDURE dbo.usp_Demo WITH EXECUTE AS 'bob@aadsqlmi.net' AS SELECT user_name(); GO
다음 명령을 사용하여 저장 프로시저를 실행할 때 가장하는 사용자가 bob@aadsqlmi.net인지 확인합니다.
Exec dbo.usp_Demo
EXECUTE AS LOGIN 문을 사용하여 가장을 테스트합니다.
EXECUTE AS LOGIN = 'bob@aadsqlmi.net' GO SELECT SUSER_SNAME() REVERT GO
참고 항목
sysadmin
역할의 일부인 SQL 서버 수준 로그인만 Microsoft Entra 보안 주체를 대상으로 다음 작업을 실행할 수 있습니다.
- EXECUTE AS USER
- EXECUTE AS LOGIN
데이터베이스 간 쿼리 사용
데이터베이스 간 쿼리는 Microsoft Entra 로그인을 사용하여 Microsoft Entra 계정에서 지원됩니다. Microsoft Entra 그룹을 사용하여 데이터베이스 간 쿼리를 테스트하려면 다른 데이터베이스 및 테이블을 생성해야 합니다. 이미 있는 경우 다른 데이터베이스 및 테이블 생성을 건너뛸 수 있습니다.
SQL Server Management Studio를 사용하여
sysadmin
계정으로 관리형 인스턴스에 로그인합니다.개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택합니다.
쿼리 창에서 다음 명령을 사용하여 MyMITestDB2라는 데이터베이스와 TestTable2라는 테이블을 생성합니다.
CREATE DATABASE MyMITestDB2; GO USE MyMITestDB2 GO CREATE TABLE TestTable2 ( EmpId varchar(10), FirstName varchar(255), LastName varchar(255), Status varchar(10) );
새 쿼리 창에서 다음 명령을 실행하여 새 데이터베이스 MyMITestDB2에 mygroup 사용자를 생성하고 해당 데이터베이스에 대한 SELECT 권한을 mygroup에 부여합니다.
USE MyMITestDB2 GO CREATE USER [mygroup] FROM LOGIN [mygroup] GO GRANT SELECT TO [mygroup] GO
SQL Server Management Studio를 사용하여 Microsoft Entra 그룹 mygroup의 구성원으로 관리형 인스턴스에 로그인합니다. 새 쿼리 창을 열고 데이터베이스 간 SELECT 문을 실행합니다.
USE MyMITestDB SELECT * FROM MyMITestDB2..TestTable2 GO
TestTable2에서 테이블의 결과가 표시됩니다.
지원되는 추가 시나리오
- Microsoft Entra 로그인에 대해 SQL 에이전트 관리 및 작업 실행이 지원됩니다.
- 데이터베이스 백업 및 복원 작업은 Microsoft Entra 로그인에서 실행할 수 있습니다.
- Microsoft Entra 로그인 및 인증 이벤트와 관련된 모든 명령문의 감사.
sysadmin
서버 역할의 구성원인 Microsoft Entra 로그인에 대한 전용 관리자 연결.- Microsoft Entra 로그인은 sqlcmd 유틸리티 및 SQL Server Management Studio 도구를 사용하여 지원됩니다.
- 로그온 트리거는 Microsoft Entra 로그인에서 수신되는 로그온 이벤트에 대해 지원됩니다.
- Service Broker 및 DB 메일은 Microsoft Entra 로그인을 사용하여 설정할 수 있습니다.
다음 단계
보안 기능 사용
데이터베이스를 보안하는 방법에 대한 포괄적인 목록은 SQL Managed Instance 보안 기능 문서를 참조하세요. 다음 보안 기능에 대해 설명합니다.
SQL Managed Instance 기능을 참조하세요.
SQL Managed Instance 기능에 대한 전체 개요는 다음을 참조하세요.
SQL Managed Instance 기능을 참조하세요.