해결하려는 문제
이전에는 Azure SQL 데이터베이스의 Microsoft Entra ID를 **포함된 데이터베이스 사용자(contained database users)**로만 생성할 수 있었습니다. 이는 단일 데이터베이스로 범위가 제한된 보안 주체로, 서버 수준의 실체가 없음을 의미했습니다. 이로 인해 다음과 같은 문제들이 발생했습니다:
- 세분화된 서버 수준 권한 위임 불가: Entra 보안 주체에게
##MS_ServerStateReader##(여러 데이터베이스에 걸친 DMV 쿼리용) 또는##MS_LoginManager##(로그인 관리용)와 같은 서버 역할을 할당할 수 없었습니다. 오직 Entra 관리자나 SQL 로그인만 이러한 서버 범위의 작업을 수행할 수 있었습니다. - 데이터베이스별 프로비저닝 오버헤드: 서버 수준의 권한을 상속받을 방법이 없었기 때문에, 액세스가 필요한 모든 데이터베이스마다 각 Entra 보안 주체를 포함된 데이터베이스 사용자로 개별 생성해야 했습니다.
- 중앙 집중식 "차단" 스위치 부재: 구성원을 오프보딩(퇴사 등)할 때 모든 데이터베이스에서 포함된 데이터베이스 사용자를 일일이 찾아야 했습니다. 비활성화할 수 있는 서버 수준의 로그인이 존재하지 않았기 때문입니다.
이러한 격차로 인해 많은 팀이 Entra를 통해 비밀번호 없는(password-less) 환경을 구축하려 했음에도 불구하고, 관리 작업을 위해 어쩔 수 없이 SQL 인증을 유지해야 했습니다.
일반 공급(GA)에 따른 변화
이제 Microsoft Entra 로그인이 SQL 로그인과 마찬가지로 논리적 master 데이터베이스에서 **일류 서버 보안 주체(first-class server principals)**가 됩니다. 이 기능은 Azure SQL 데이터베이스에서 공개 미리 보기(Public Preview) 상태였으나(Azure SQL Managed Instance 및 SQL Server 2022 이상에서는 이미 일반 공급됨), 이번 릴리스를 통해 Azure SQL 데이터베이스에서도 일반 공급(GA) 단계에 도달하여 프로덕션 환경에서 다음 세 가지 기능을 활용할 수 있게 되었습니다.
1. Entra ID를 위한 서버 역할 할당
Azure SQL 데이터베이스의 7가지 고정 서버 수준 역할을 Entra 서버 보안 주체(로그인)에게 할당할 수 있습니다. 이 역할들은 데이터베이스 연결, 관리, 정의 및 보안 정의 읽기, 로그인 관리, 서버 상태 읽기/관리 등을 아우릅니다.
즉, 모니터링 서비스 주체에게 모든 데이터베이스에 대한 읽기 전용 DMV 액세스 권한(##MS_ServerStateReader##)을 부여하거나, 보안 팀원에게 로그인 관리 권한(##MS_LoginManager##)을 위임하고, DevOps 앱이 데이터베이스를 생성(##MS_DatabaseManager##)하도록 할 수 있습니다. 이 모든 과정에서 SQL 인증 없이 Entra ID만을 사용합니다.
2. 서버 전체 로그인 모델
모든 데이터베이스에 포함된 사용자를 독립적으로 프로비저닝하는 대신, 서버 로그인에 매핑된 데이터베이스 사용자를 생성할 수 있습니다(CREATE USER ... FROM LOGIN). 이러한 사용자들은 서버 범위의 권한을 자동으로 상속받습니다. 하나의 로그인으로 여러 데이터베이스를 중앙에서 관리할 수 있습니다.
T-SQL 구문에 대한 자세한 내용은 Microsoft Entra 서버 로그인 생성 및 활용을 참조하세요.
3. 중앙 집중식 로그인 활성화/비활성화
ALTER LOGIN [[email protected]] DISABLE 명령 하나로 해당 ID가 서버의 모든 데이터베이스에 연결되는 것을 차단할 수 있습니다. 오프보딩이나 사고 대응 시 데이터베이스별로 사용자를 찾아다닐 필요가 없습니다. 로그인을 다시 활성화하면 모든 위치에서 액세스가 복구됩니다.
참고: ALTER LOGIN ... DISABLE은 포함된 데이터베이스 사용자가 아닌 로그인 기반 사용자에게만 적용됩니다. 이 명령은 새로운 연결만 차단하며, 기존 세션은 필요한 경우 KILL 명령으로 종료할 때까지 유지됩니다. 즉각적인 효과를 보려면 캐시 전파(cache propagation)를 확인하세요. Microsoft Entra 그룹 로그인은 지원되지 않으며, 대안은 서버 보안 주체 문서를 참조하세요.
조직에 제공되는 이점
- 비밀번호 없는 환경 구축 가능: 서버 보안 주체와 역할이 일반 공급됨에 따라, 조직은 서버 수준 기능의 공백 없이 Entra 전용 인증을 도입할 수 있습니다. Entra 로그인은 SQL 로그인과 유사한 기능을 제공하여 SQL 인증을 완전히 비활성화하고 Entra를 유일한 인증 경로로 사용하는 것을 실용적으로 만들어 줍니다.
- 최소 권한 원칙의 관리: 서버 수준 역할은 관리자 권한 없이도 일반적인 관리 및 모니터링 책임을 위임할 수 있게 하여 권한 관리를 간소화합니다. 이를 통해 대규모 환경에서 최소 권한 원칙과 직무 분리를 준수하면서 동일한 논리 서버 내 여러 데이터베이스에 대한 관리를 용이하게 합니다. 이전에는 Entra ID의 유일한 서버 범위 옵션이 강력한 권한을 가진 Entra 관리자뿐이었으나, 이제는 보안 감사자에게 'db_owner' 대신
##MS_SecurityDefinitionReader##역할을, 모니터링 도구에는 관리자 역할 대신##MS_ServerStateReader##역할을 부여할 수 있습니다. - 제로 터치(Zero-touch) DevOps:
##MS_DatabaseManager##및##MS_LoginManager##권한을 가진 서비스 주체는 데이터베이스 및 사용자 프로비저닝을 엔드투엔드로 자동화할 수 있습니다. 초기 Entra 관리자 설정 이후에는 일상적인 운영에 사람이 개입할 필요가 없습니다. - 빠른 사고 대응: 보안 주체가 침해되었을 때 서버 수준에서 로그인을 비활성화하세요. 사용자가 어떤 데이터베이스에 액세스 권한이 있는지 일일이 파악하지 않고도 모든 데이터베이스에서 새로운 연결을 즉시 차단할 수 있습니다. 활성 세션을 즉시 끊으려면 인증 캐시를 플러시하고 기존 세션을 KILL하세요.
- 지역 복제(Geo-replica) 지원: 기본 서버에서 생성된 Entra 로그인은 지역 복제본에서 자동으로 사용할 수 있으며, 복제된 데이터베이스에 대해 읽기 전용 액세스 권한을 가집니다.
주요 참고 사항
- 부트스트랩 요구 사항: Microsoft Entra 관리자가 첫 번째 Entra 로그인을 생성해야 합니다. 그 이후에는
ALTER ANY LOGIN권한이나##MS_LoginManager##역할 멤버십을 가진 모든 Entra 보안 주체가 추가 로그인을 생성할 수 있습니다. - Entra 관리자 우선권: 특정 주체가 Entra 관리자인 동시에 로그인을 가지고 있는 경우, 관리자 권한이 우선합니다. 로그인 권한은 추가적인 영향을 미치지 않습니다.
- 캐시 전파: 역할 멤버십 및 권한 변경 사항은 다음 연결 시 적용됩니다. 즉각적인 적용이 필요한 경우
DBCC FLUSHAUTHCACHE및DBCC FREESYSTEMCACHE('TokenAndPermUserStore')를 사용하여 인증 캐시를 지우세요. EXECUTE AS LOGIN은 Azure SQL 데이터베이스의 Entra 로그인에 대해 지원되지 않습니다(Managed Instance에서는 지원됨).
시작하기
- 논리 서버에 Microsoft Entra 관리자 구성
- 첫 번째 Entra 로그인 생성 및 서버 역할 할당 (단계별 자습서)
- 서버 역할 및 해당 권한 이해
- SQL 인증을 완전히 제거하기 위해 Entra 전용 인증 활성화 고려
SQL 인증에서 마이그레이션할 준비가 되셨나요?
기존 SQL 로그인을 Entra로 이동하려는 경우 Microsoft Entra 비밀번호 없는 인증을 통한 Azure SQL 데이터베이스 보안 - 마이그레이션 가이드를 확인하세요. SQL 로그인 종속성 식별부터 Entra 보안 주체로의 변환, Entra 전용 모드 활성화까지의 전체 과정을 안내합니다.
더 알아보기
- Microsoft Entra 서버 보안 주체(로그인) - 구문, 권한, 제한 사항에 대한 전체 참조.
- Azure SQL 데이터베이스 서버 역할 - 역할 설명, 권한 매트릭스, 예시.
- Microsoft Entra 인증 개요 - Azure SQL과 Entra 인증의 작동 원리.
- 로그인 및 사용자 관리 - 로그인 수명 주기 관리.