자습서: 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에서 퍼블릭 엔드포인트 구성을 참조하세요.
참고 항목
서비스 엔드포인트가 활성화된 경우에도 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로의 지점 및 사이트 간 연결을 구성합니다.
다음 중 하나를
sysadmin
사용하여 관리되는 인스턴스에 커넥트 SSMS(SQL Server Management Studio)를 사용하여 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 권한을 부여해야 합니다.
- 기본적으로 새로 만든 Microsoft Entra 로그인
master
에 부여되는 표준 권한은 CONNECT SQL 및 VIEW ANY DATABASE입니다. sysadmin
서버 역할은 관리되는 인스턴스 내의 많은 Microsoft Entra 로그인에 부여할 수 있습니다.
서버 역할에 로그인을 추가하려면 다음을 sysadmin
수행합니다.
관리되는 인스턴스에 다시 로그인하거나 Microsoft Entra 관리자 또는 SQL 보안 주체
sysadmin
인 기존 연결을 사용합니다.개체 탐색기 서버를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택합니다.
다음 T-SQL 구문을 사용하여 Microsoft Entra 로그인
sysadmin
에 서버 역할을 부여합니다.ALTER SERVER ROLE sysadmin ADD MEMBER login_name GO
다음 예제에서는 로그인에
sysadmin
서버 역할을 부여합니다. nativeuser@aadsqlmi.onmicrosoft.comALTER SERVER ROLE sysadmin ADD MEMBER [nativeuser@aadsqlmi.onmicrosoft.com] GO
SSMS를 사용하여 추가 Microsoft Entra 로그인 만들기
Microsoft Entra 로그인이 만들어지고 권한이 부여 sysadmin
되면 해당 로그인은 CREATE LOGIN과 함께 FROM EXTERNAL PROVIDER 절을 사용하여 추가 로그인을 만들 수 있습니다.
SSMS(SQL Server Management Studio)에서 서버에 대한 커넥트 선택하여 Microsoft Entra 로그인을 사용하여 관리되는 인스턴스로 커넥트.
- 서버 이름에 SQL Managed Instance 호스트 이름을 입력합니다.
- 인증의 경우 MFA 지원을 사용하여 Active Directory - 유니버설을 선택하여 다단계 인증 로그인 창을 표시합니다. 로그인. 자세한 내용은 유니버설 인증(다단계 인증에 대한 SSMS 지원)을 참조하세요.
개체 탐색기 서버를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택합니다.
쿼리 창에서 다음 구문을 사용하여 다른 Microsoft Entra 계정에 대한 로그인을 만듭니다.
USE master GO CREATE LOGIN login_name FROM EXTERNAL PROVIDER GO
이 예제에서는 Microsoft Entra 사용자에 대한 로그인을 만듭니다. 이 사용자는 bob@aadsqlmi.net기본 aadsqlmi.net aadsqlmi.onmicrosoft.com microsoft Entra와 페더레이션됩니다기본.
다음 T-SQL 명령을 실행합니다. 페더레이션된 Microsoft Entra 계정은 온-프레미스 Windows 로그인 및 사용자를 위한 SQL Managed Instance 대체 항목입니다.
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 그룹의 일부가 아닐 수도 있지만) 현재 로그인 구문을 사용하여 직접 로그인을 만들 master
수 있습니다(예:
Microsoft Entra 로그인에서 Microsoft Entra 사용자 만들기
개별 데이터베이스에 대한 권한 부여는 SQL Managed Instance에서 SQL Server의 데이터베이스와 거의 동일한 방식으로 작동합니다. 해당 데이터베이스에 대한 권한이 부여되거나 데이터베이스 역할에 추가된 데이터베이스의 기존 로그인에서 사용자를 만들 수 있습니다.
이제 MyMITestDB라는 데이터베이스와 기본 권한만 있는 로그인을 만들었으므로 다음 단계는 해당 로그인에서 사용자를 만드는 것입니다. 현재 로그인은 관리되는 인스턴스에 연결하고 모든 데이터베이스를 볼 수 있지만 데이터베이스와 상호 작용할 수는 없습니다. 기본 권한이 있는 Microsoft Entra 계정으로 로그인하고 새로 만든 데이터베이스를 확장하려고 하면 다음 오류가 표시됩니다.
데이터베이스 사용 권한 부여에 대한 자세한 내용은 데이터베이스 엔진 권한 시작을 참조하세요.
Microsoft Entra 사용자 만들기 및 샘플 테이블 만들기
참고 항목
사용자가 Microsoft Entra 그룹의 일부로 로그인하는 경우 몇 가지 제한 사항이 있습니다.
예를 들어 지정된 Microsoft Entra 사용자가 테이블의 일부가 아니므로 반환NULL
을 호출 SUSER_SID
합니다sys.server_principals
.
따라서 이 경우 특정 저장 프로시저 또는 부여된 권한 목록에 대한 액세스가 제한될 수 있습니다.
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
Microsoft Entra 로그인에서 USER를 만들 때 LOGIN에서 동일한 login_name user_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
다음 예제에서는 사용자 bob@aadsqlmi.net 와 그룹 mygroup
db_datareader
에 MyMITestDB 데이터베이스에 대한 권한을 제공합니다.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
MICROSOFT Entra 그룹 mygroup의 구성원으로 SQL Server Management Studio를 사용하여 관리되는 인스턴스에 로그인합니다. 새 쿼리 창을 열고 데이터베이스 간 SELECT 문을 실행합니다.
USE MyMITestDB SELECT * FROM MyMITestDB2..TestTable2 GO
TestTable2의 테이블 결과가 표시됩니다.
지원되는 추가 시나리오
- MICROSOFT Entra 로그인에는 SQL 에이전트 관리 및 작업 실행이 지원됩니다.
- 데이터베이스 백업 및 복원 작업은 Microsoft Entra 로그인에서 실행할 수 있습니다.
- Microsoft Entra 로그인 및 인증 이벤트와 관련된 모든 문의 감사
- 서버 역할의 멤버인 Microsoft Entra 로그인에
sysadmin
대한 전용 관리자 연결입니다. - 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 기능을 참조하세요.