SQL Database, SQL Managed Instance 및 Azure Synapse Analytics에 대한 데이터베이스 액세스 권한 부여
적용 대상: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics
이 문서에서는 다음에 대해 알아봅니다.
- 사용자가 관리 작업을 수행하고 각 데이터베이스에 저장된 데이터에 액세스할 수 있도록 Azure SQL Database, Azure SQL Managed Instance와 Azure Synapse Analytics를 구성하는 옵션.
- 새 서버를 처음 만든 후의 액세스 및 권한 부여 구성.
master
데이터베이스에서 로그인 및 사용자 계정을 추가하고 해당 계정에 관리 권한을 부여하는 방법.- 사용자 계정을 로그인에 연결된 사용자 계정으로 또는 포함된 사용자 계정으로 사용자 데이터베이스에 추가하는 방법.
- 사용자 데이터베이스에서 데이터베이스 역할 및 명시적` 권한을 사용하여 권한과 함께 사용자 계정을 구성하는 방법.
중요
Azure SQL Database, Azure SQL Managed Instance 및 Azure Synapse의 데이터베이스는 이 문서의 나머지 부분에서 전체적으로 데이터베이스로 참조되며, 서버는 Azure SQL Database와 Azure Synapse용 데이터베이스를 관리하는 논리 서버를 참조합니다.
참고 항목
Microsoft Entra ID는 이전에 Azure Active Directory(Azure AD)로 알려졌습니다.
인증 및 권한 부여
인증은 사용자의 신원을 증명하는 과정입니다. 사용자는 사용자 계정을 사용하여 데이터베이스에 접속합니다. 데이터베이스 접속을 시도하는 사용자는 사용자 계정과 인증 정보를 제공합니다. 사용자는 다음과 같은 두 가지 인증 방법 중 하나를 사용하여 인증됩니다.
-
이 인증 방법에서는 사용자가 사용자 계정 이름 및 암호를 제출하여 연결을 설정합니다. 암호는 로그인에 연결된 사용자 계정의 경우
master
데이터베이스에, 로그인에 연결되지 ‘않은’ 사용자 계정의 경우 사용자 계정을 포함하는 데이터베이스에 저장됩니다.참고 항목
Azure SQL 데이터베이스는 암호 정책에 대한 암호 복잡성만 적용합니다. Azure SQL Managed Instance의 암호 정책은 Azure SQL Managed Instance 자주 묻는 질문 (FAQ)을 참조하세요.
-
이 인증 방법을 사용하면 사용자가 사용자 계정 이름을 제출하고 서비스에서 Microsoft Entra ID(과거 Azure Active Directory)에 저장된 자격 증명 정보를 사용하도록 요청합니다.
로그인 및 사용자: 데이터베이스의 사용자 계정은 master
데이터베이스에 저장된 로그인에 연결되거나 개별 데이터베이스에 저장된 사용자 이름일 수 있습니다.
- 로그인은
master
데이터베이스에 있는 개별 계정으로, 하나 이상의 데이터베이스에 있는 사용자 계정과 연결될 수 있습니다. 로그인에는 해당 사용자 계정의 자격 증명 정보가 함께 저장됩니다. - 사용자 계정은 임의 데이터베이스에 있는 개별 계정으로, 로그인과 연결될 수 있지만 반드시 연결되어야 하지는 않습니다. 로그인에 연결되지 않은 사용자 계정에는 해당 사용자 계정의 자격 증명 정보가 함께 저장됩니다.
데이터에 액세스하고 각종 동작을 수행하기 위한 권한 부여는 데이터베이스 역할 및 명시적 권한을 사용하여 관리됩니다. 권한 부여는 사용자에게 할당되는 권한을 가리키며, 사용자가 수행할 수 있는 작업을 결정합니다. 권한 부여는 사용자 계정의 데이터베이스 역할 구성원 자격 및 개체 수준 권한에 의해 제어됩니다. 사용자에게 필요한 최소한의 권한을 부여하는 것이 가장 좋습니다.
새 데이터베이스를 만든 후의 기존 로그인 및 사용자 계정
Azure SQL을 처음 배포할 때 특별한 유형의 관리 로그인인 서버 관리자에 대한 로그인 이름과 암호를 지정할 수 있습니다. 마스터 및 사용자 데이터베이스의 로그인 및 사용자 구성은 배포 중에 발생합니다.
- 관리자 권한을 갖는 SQL 로그인이 지정된 로그인 이름을 사용하여 만들어집니다. 로그인은 SQL Database, SQL Managed Instance 및 Azure Synapse에 로깅하는 개인 계정입니다.
- 이 로그인에는 모든 데이터베이스에 대한 전체 관리 권한이 서버 수준 보안 주체로서 부여됩니다. 로그인에는 사용 가능한 모든 권한이 있으므로 제한할 수 없습니다. SQL Managed Instance에서는 이 로그인이 sysadmin 고정 서버 역할에 추가됩니다(이 역할은 Azure SQL Database에는 없음).
- 이 계정이 데이터베이스에 로그인하면 각 사용자 데이터베이스에 존재하는 특수 사용자 계정
dbo
(사용자 계정에 일치합니다. dbo 사용자는 데이터베이스에서 모든 데이터베이스 권한을 가지며db_owner
고정 데이터베이스 역할의 회원입니다. 그 밖의 고정 데이터베이스 역할에 대해서는 이 문서의 뒷부분에서 설명합니다.
논리적 서버의 서버 관리자 계정을 식별하려면 Azure 포털을 열고 서버 또는 관리되는 인스턴스의 속성 탭으로 이동합니다.
Important
서버 관리자 계정의 이름을 만든 후에는 변경할 수 없습니다. 서버 관리자에 대한 암호를 다시 설정하려면 Azure Portal로 이동하여 SQL Server를 선택하고 목록에서 서버를 선택한 다음, 암호 재설정을 선택합니다. SQL Managed Instance의 암호를 다시 설정하려면 Azure Portal로 이동하여 인스턴스를 선택하고 암호 재설정을 선택합니다. PowerShell이나 Azure CLI를 사용할 수도 있습니다.
관리자 권한을 갖는 추가 로그인 및 사용자 만들기
이 시점에서 서버 또는 관리되는 인스턴스는 단일 SQL 로그인 및 사용자 계정을 사용하는 액세스에 대해서만 구성됩니다. 전체 또는 부분 관리자 권한을 갖는 추가 로그인을 만들려면 (배포 모드에 따라) 다음과 같은 옵션을 사용할 수 있습니다.
전체 관리 권한이 있는 Microsoft Entra 관리자 계정 만들기
Microsoft Entra 인증을 사용하도록 설정하고 Microsoft Entra 관리자를 추가합니다. 하나의 Microsoft Entra 계정은 전체 관리 권한이 있는 Azure SQL 배포의 관리자로 구성할 수 있습니다. 이 계정은 개별 계정일 수도 있고 보안 그룹 계정일 수도 있습니다. Microsoft Entra 계정을 사용하여 SQL 데이터베이스, SQL 관리형 인스턴스 또는 Azure Synapse에 연결하려면 Microsoft Entra 관리자를 반드시 구성해야 합니다. 모든 Azure SQL 배포 유형에 Microsoft Entra 인증을 사용하도록 설정하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.
SQL Managed Instance에서 전체 관리 권한이 있는 SQL 로그인을 만듭니다
master
데이터베이스에서 추가 SQL 로그인을 만듭니다.- ALTER SERVER ROLE 문을 사용하여 sysadmin 고정 서버 역할에 로그인을 추가합니다. 이 로그인은 전체 관리자 권한을 갖습니다.
- 또는 CREATE LOGIN 구문을 사용하여 Microsoft Entra 로그인을 만듭니다.
참고 항목
dbmanager
및loginmanager
역할은 Azure SQL Managed Instance 배포와 관련이 없습니다.SQL Database에서 관리 권한이 제한된 SQL 로그인을 만듭니다.
master
데이터베이스에서 추가 SQL 로그인을 만듭니다.##MS_DatabaseManager##
,##MS_LoginManager##
및##MS_DatabaseConnector##
에 로그인을 추가하고 ALTER SERVER ROLE 문을 사용하여 서버 수준 역할을 추가합니다.
Azure SQL Database의 이러한 특수
master
데이터베이스 역할 구성원에게는 데이터베이스를 만들고 관리하거나 로그인을 만들고 관리하는 권한이 있습니다.dbmanager
역할의 구성원인 사용자가 만든 데이터베이스에서, 해당 구성원은db_owner
고정 데이터베이스 역할에 매핑되며dbo
사용자 계정을 사용하여 해당 데이터베이스에 로그인하고 해당 데이터베이스를 관리할 수 있습니다. 이러한 역할에는master
데이터베이스 외부에서는 명시적인 권한이 없습니다.Important
Azure SQL 데이터베이스에서는 전체 관리자 권한을 갖는 추가 SQL 로그인을 만들 수 없습니다. 서버 관리자 계정 또는 Microsoft Entra 관리자 계정(Microsoft Entra 그룹일 수 있는)만 서버 역할의 다른 로그인을 추가하거나 제거할 수 있습니다. 이는 Azure SQL 데이터베이스에만 해당됩니다.
Azure Synapse 전용 SQL 풀에서 제한된 관리 권한으로 SQL 로그인 만들기
master
데이터베이스에서 추가 SQL 로그인을 만듭니다.master
데이터베이스에 이 새로운 로그인에 연결된 사용자 계정을 만듭니다.- sp_addrolemember 문을 사용하여
dbmanager
,loginmanager
역할 또는 둘 다에 사용자 계정을 추가합니다. 둘 다master
데이터베이스에 있습니다.
Azure Synapse 서버리스 SQL 풀에서 제한된 관리 권한으로 SQL 로그인 만들기
master
데이터베이스에서 추가 SQL 로그인을 만듭니다.- ALTER SERVER ROLE 문을 사용하여 sysadmin 고정 서버 역할에 SQL 로그인을 추가합니다.
- 또는 CREATE LOGIN 구문을 사용하여 Microsoft Entra 로그인을 만듭니다.
비관리자 사용자를 위한 계정 만들기
다음 두 가지 방법 중 하나를 사용하여 비관리자 사용자를 위한 계정을 만들 수 있습니다.
로그인 만들기
master
데이터베이스에서 SQL 로그인을 만듭니다. 그런 다음 사용자가 액세스해야 하는 각 데이터베이스에서 사용자 계정을 만들고 해당 사용자 계정을 로그인에 연결합니다. 이 접근 방식은 사용자가 여러 데이터베이스에 액세스해야 하며 암호를 일정하게 유지하려는 경우에 선호됩니다. 그러나 이 접근 방식에서는 주 서버와 보조 서버 양쪽에서 모두 로그인이 만들어져야 하므로 지역 복제와 함께 사용할 경우 복잡한 문제가 발생할 수 있습니다. 자세한 내용은 지역 복원 또는 장애 조치(failover)를 위해 Azure SQL Database 보안 구성 및 관리를 참조하세요.사용자 계정 만들기
사용자가 액세스해야 하는 데이터베이스에서 사용자 계정을 만듭니다(포함된 사용자).
- SQL Database로 항상 이러한 유형의 사용자 계정을 만들 수 있습니다.
- Microsoft Entra 서버 주체를 지원하는 SQL Managed Instance를 사용하면, 데이터베이스 사용자를 포함된 데이터베이스 사용자로 만들지 않고도 SQL Managed Instance에 인증할 사용자 계정을 만들 수 있습니다.
이 접근 방식에서는 사용자 인증 정보가 각 데이터베이스에 저장되고 지역 복제된 데이터베이스로 자동 복제됩니다. 그러나 여러 데이터베이스에 동일한 계정이 존재하며 SQL 인증을 사용하는 경우에는 암호를 수동으로 동기화된 상태로 유지해야 합니다. 또한, 사용자에게 다른 데이터베이스에 다른 암호를 갖는 계정이 있는 경우 암호를 기억하는 것이 문제가 될 수 있습니다.
Important
Microsoft Entra ID에 매핑된 포함된 사용자를 만들려면 Azure SQL Database의 데이터베이스에서 Microsoft Entra 계정을 사용하여 로그인해야 합니다. SQL Managed Instance에서 sysadmin
권한이 있는 SQL 로그인 또한 Microsoft Entra 로그인 또는 사용자를 만들 수 있습니다.
로그인 및 사용자를 만드는 방법을 보여 주는 예제는 다음을 참조하세요.
- Azure SQL Database에 대한 로그인 만들기
- Azure SQL Managed Instance에 대한 로그인 만들기
- Azure Synapse의 로그인 만들기
- 사용자 만들기
- Microsoft Entra 포함 사용자 만들기
팁
Azure SQL Database에서 사용자 만들기를 포함하는 보안 자습서는 자습서: Azure SQL Database 보호를 참조하세요.
고정 및 사용자 지정 데이터베이스 역할 사용
데이터베이스에서 로그인 기반 또는 포함된 사용자로서 사용자 계정을 만든 후에는 해당 사용자가 여러 동작을 수행하고 특정 데이터베이스에 있는 데이터에 액세스하도록 권한을 부여할 수 있습니다. 다음 방법을 사용하여 액세스 권한을 부여할 수 있습니다.
고정 데이터베이스 역할
사용자 계정을 고정 데이터베이스 역할에 추가합니다. 고정 데이터베이스 역할은 9가지이며 각각 정의된 권한 세트가 있습니다. 가장 일반적인 고정 데이터베이스 역할은 db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter 및 db_denydatareader입니다. db_owner는 일반적으로 일부 사용자에게만 전체 권한을 부여하는 데 사용됩니다. 기타 고정된 데이터베이스 역할은 개발에서 단순한 데이터베이스를 신속하게 가져오는 데 유용하지만 대부분의 프로덕션 데이터베이스에는 권장되지 않습니다. 예를 들어 db_datareader 고정 데이터베이스 역할은 데이터베이스에 있는 모든 테이블에 대한 읽기 액세스 권한을 부여합니다. 읽기 액세스 권한은 반드시 필요한 권한 이상입니다.
고정 데이터베이스 역할에 사용자를 추가하려면:
- Azure SQL 데이터베이스 및 Azure Synapse 서버리스 SQL 풀에서 ALTER ROLE 문을 사용합니다. 예제는 ALTER ROLE 예제를 참조하세요.
- Azure Synapse 전용 SQL 풀에서 sp_addrolemember 문을 사용합니다. 예제는 sp_addrolemember 예제를 참조하세요.
사용자 지정 데이터베이스 역할
CREATE ROLE 문을 사용하여 사용자 지정 데이터베이스 역할을 만듭니다. 사용자 지정 역할을 사용하면 사용자 정의 데이터베이스 역할을 만들고 각 역할에 비즈니스 요구 사항에 맞는 최소한의 권한을 신중하게 부여할 수 있습니다. 그런 다음 사용자 지정 역할에 사용자를 추가할 수 있습니다. 사용자가 여러 역할의 멤버인 경우 모두에 대한 권한을 집계합니다.
권한 직접 부여
사용자 계정 권한을 직접 부여합니다. SQL Database에는 개별적으로 부여하거나 거부할 수 있는 100개가 넘는 사용 권한이 있습니다. 이러한 사용 권한은 대부분 중첩됩니다. 예를 들어 스키마에 대한
UPDATE
권한에는 해당 스키마 내에 있는 각 테이블에 대한UPDATE
권한이 포함됩니다. 대부분의 사용 권한 시스템에서와 같이 사용 권한 거부는 권한 부여를 재정의합니다. 중첩된 특성과 사용 권한 수로 인해 데이터베이스를 제대로 보호할 적절한 사용 권한 시스템을 설계하는 데 신중을 기할 수 있습니다. 사용 권한(데이터베이스 엔진)에서 사용 권한 목록부터 시작하여 사용 권한의 포스터 크기 그래픽을 검토하세요.
그룹 사용
효율적인 액세스 관리에서는 개별 사용자가 아닌 Active Directory 보안 그룹 및 고정 또는 사용자 지정 역할에 할당된 권한을 사용합니다.
Microsoft Entra 인증을 사용하는 경우 Microsoft Entra 사용자를 Microsoft Entra 보안 그룹에 배치합니다. 해당 그룹에 대해 포함된 데이터베이스 사용자를 만듭니다. 사용자 그룹에 적절한 특정 사용 권한이 있는 사용자 지정 또는 기본 제공 데이터베이스 역할에 하나 이상의 데이터베이스 사용자를 구성원으로 추가합니다.
SQL 인증을 사용하는 경우 데이터베이스에서 포함된 데이터베이스 사용자를 만듭니다. 하나 이상의 데이터베이스 사용자를 해당 사용자 그룹에 적절한 권한을 갖는 사용자 지정 데이터베이스 역할에 배치합니다.
참고
포함되지 않은 데이터베이스 사용자에 대해서는 그룹을 사용할 수도 있습니다.
사용 권한을 제한 또는 확장시키는 데 사용할 수 있는 다음 기능을 잘 알고 있어야 합니다.
- 가장 및 모듈 서명은 일시적으로 권한을 안전하게 상승시키는 데 사용할 수 있습니다.
- 행 수준 보안 은 사용자가 액세스할 수 있는 행을 제한하는 데 사용할 수 있습니다.
- 데이터 마스킹 은 중요한 데이터의 노출을 제한하는 데 사용할 수 있습니다.
- 저장 프로시저 는 데이터베이스에서 수행할 수 있는 작업을 제한하는 데 사용할 수 있습니다.