다음을 통해 공유


Azure Synapse Analytics의 SQL 인증

Azure Synapse Analytics에는 리소스 소비량을 제어할 수 있는 두 가지 SQL 폼 요소가 있습니다. 이 문서에서는 두 가지 폼 요소가 사용자 인증을 제어하는 방법을 설명합니다.

Synapse SQL에 인증하려면 다음 두 가지 옵션을 사용할 수 있습니다.

  • Microsoft Entra 인증
  • SQL 인증

SQL 인증을 사용하면 레거시 애플리케이션이 사용자 이름 및 암호를 사용하여 친숙한 방식으로 Azure Synapse SQL에 연결할 수 있습니다. 그러나 Microsoft Entra 인증을 사용하면 SQL 풀과 같은 Azure Synapse 리소스에 대한 액세스를 중앙에서 관리할 수 있습니다. Azure Synapse Analytics는 작업 영역을 만드는 동안과 이후에 SQL 인증과 같은 로컬 인증 비활성화를 지원합니다. 비활성화되면 권한 있는 사용자가 언제든지 로컬 인증을 활성화할 수 있습니다. Microsoft Entra 전용 인증에 대한 자세한 내용은 Azure Synapse Analytics에서 로컬 인증 사용 안 함을 참조하세요.

관리자 계정

관리자 역할을 하는 두 개의 관리 계정(SQL 관리자 사용자 이름 및 Microsoft Entra 관리자)이 있습니다. SQL 풀에 대한 이러한 관리자 계정을 식별하려면 Azure Portal을 열고 Synapse 작업 영역의 속성 탭으로 이동합니다.

SQL Server 관리자

  • SQL 관리자 사용자 이름

    Azure Synapse Analytics를 만들 때 서버 관리자 로그인의 이름을 지정해야 합니다. SQL 서버는 master 데이터베이스에 로그인으로 해당 계정을 만듭니다. 이 계정은 SQL Server 인증(사용자 이름 및 암호)을 사용하여 연결됩니다. 이러한 계정 중 하나만 존재할 수 있습니다.

  • Microsoft Entra 관리자

    하나의 Microsoft Entra 계정, 개인 또는 보안 그룹 계정을 관리자로 구성할 수도 있습니다. Microsoft Entra 관리자를 구성하는 것은 선택 사항이지만, Microsoft Entra 계정을 사용하여 Synapse SQL에 연결하려면 Microsoft Entra 관리자를 구성해야 합니다.

    • Microsoft Entra 관리자 계정은 전용 SQL 풀에 대한 액세스를 제어하는 반면 Synapse RBAC 역할은 서버리스 풀(예:Synapse 관리자Synapse SQL 관리자 역할)에 대한 액세스를 제어하는 데 사용될 수 있습니다.

SQL 관리자 사용자 이름 및 Microsoft Entra 관리자 계정에는 다음과 같은 특징이 있습니다.

  • 이들은 서버에서 모든 SQL Database에 자동으로 연결할 수 있는 유일한 계정입니다. (사용자 데이터베이스에 연결하려면 다른 계정은 데이터베이스의 소유자이거나 사용자 데이터베이스에 사용자 계정이 있어야 합니다.)
  • 이러한 계정은 dbo 사용자로 사용자 데이터베이스에 들어가고 사용자 데이터베이스에서 모든 권한을 갖습니다. (사용자 데이터베이스의 소유자는 또한 dbo 사용자로 데이터베이스에 들어갑니다.)
  • master 데이터베이스에 dbo 사용자로 들어가지 마세요. 그리고 master 데이터베이스에서는 제한된 사용 권한을 갖습니다.
  • SQL Database에서 사용할 수 없는 표준 SQL Server sysadmin 고정 서버 역할의 멤버가 아닙니다.
  • 데이터베이스, 로그인, master 데이터베이스의 사용자 및 서버 수준 IP 방화벽 규칙을 만들고 변경하고 삭제할 수 있습니다.
  • dbmanagerloginmanager 역할에 멤버를 추가하고 제거할 수 있습니다.
  • sys.sql_logins 시스템 테이블을 볼 수 있습니다.

참고 항목

사용자가 Microsoft Entra 관리자 및 Synapse 관리자로 구성된 다음 Microsoft Entra 관리자 역할에서 제거된 경우 사용자는 Synapse의 전용 SQL 풀에 대한 액세스 권한을 잃게 됩니다. 사용자는 전용 SQL 풀에 대한 액세스 권한을 다시 얻으려면 제거된 다음, Synapse 관리자 역할에 추가되어야 합니다.

서버리스 SQL 풀에 액세스할 수 있는 사용자를 관리하려면 아래 지침을 사용하면 됩니다.

서버리스 SQL 풀에 대한 로그인을 만들려면 다음 구문을 사용합니다.

CREATE LOGIN Mary WITH PASSWORD = '<strong_password>';
-- or
CREATE LOGIN [Mary@domainname.net] FROM EXTERNAL PROVIDER;

로그인이 있으면 서버리스 SQL 풀 엔드포인트 내에서 개별 데이터베이스에 사용자를 만들고 이 사용자에게 필요한 권한을 부여할 수 있습니다. 사용자를 만들려면 다음 구문을 사용할 수 있습니다.

CREATE USER Mary FROM LOGIN Mary;
-- or
CREATE USER Mary FROM LOGIN Mary@domainname.net;
-- or
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;

로그인 및 사용자가 생성되면 일반 SQL Server 구문을 사용하여 권한을 부여할 수 있습니다.

비관리자 사용자

일반적으로 비관리자 계정은 master 데이터베이스에 액세스할 필요가 없습니다. CREATE USER(Transact-SQL) 문을 사용하여 데이터베이스 수준에서 포함된 데이터베이스 사용자를 만듭니다.

사용자는 Microsoft Entra 인증 포함된 데이터베이스 사용자(Microsoft Entra 인증에 대한 환경을 구성한 경우)이거나, SQL Server 인증 포함된 데이터베이스 사용자 또는 SQL Server 인증 로그인 기반 SQL Server 인증 사용자(이전 단계에서 만듬)일 수 있습니다.

사용자를 만들고 데이터베이스에 연결하려면 다음 예제와 유사한 문을 실행합니다.

CREATE USER Mary FROM LOGIN Mary;
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;

처음에는 관리자 또는 데이터베이스 소유자 중 하나만 사용자를 만들 수 있습니다. 새 사용자를 만드는 추가 사용자의 권한을 부여하려면 다음과 같은 문을 사용하여 선택한 사용자에게 ALTER ANY USER 권한을 부여합니다.

GRANT ALTER ANY USER TO Mary;

추가 사용자에게 데이터베이스의 모든 권한을 부여하려면 db_owner 고정 데이터베이스 역할의 멤버로 설정합니다.

Azure SQL Database 또는 synapse 서버리스에서 ALTER ROLE 문을 사용합니다.

ALTER ROLE db_owner ADD MEMBER Mary;

전용 SQL 풀에서 EXEC sp_addrolemember를 사용합니다.

EXEC sp_addrolemember 'db_owner', 'Mary';

참고 항목

서버 로그인을 기반으로 데이터베이스 사용자를 만드는 일반적인 이유 중 하나는 여러 데이터베이스에 액세스해야 하는 사용자를 위한 것입니다. 포함된 데이터베이스 사용자가 개별 엔터티이므로 각 데이터베이스는 자체 사용자 및 암호를 유지합니다. 따라서 사용자가 각 데이터베이스의 암호를 모두 기억해야 하므로 오버헤드가 발생할 수 있으며, 여러 데이터베이스의 여러 암호를 변경해야 할 때 변경이 어려울 수 있습니다.

그룹 및 역할

효율적인 액세스 관리에서는 개별 사용자 대신 그룹 및 역할에 할당된 권한을 사용합니다.

  • Microsoft Entra 인증을 사용하는 경우 Microsoft Entra 사용자를 Microsoft Entra 그룹에 배치합니다. 해당 그룹에 대해 포함된 데이터베이스 사용자를 만듭니다. 하나 이상의 데이터베이스 사용자를 데이터베이스 역할에 배치한 다음 해당 데이터베이스 역할에 권한을 할당합니다.

  • SQL Server 인증을 사용하는 경우 포함된 데이터베이스 사용자를 데이터베이스에 만듭니다. 하나 이상의 데이터베이스 사용자를 데이터베이스 역할에 배치한 다음 해당 데이터베이스 역할에 권한을 할당합니다.

데이터베이스 역할은 db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter, db_denydatareader와 같은 기본 제공된 역할일 수 있습니다. db_owner는 일반적으로 일부 사용자에게만 전체 권한을 부여하는 데 사용됩니다. 기타 고정된 데이터베이스 역할은 개발에서 단순한 데이터베이스를 신속하게 가져오는 데 유용하지만 대부분의 프로덕션 데이터베이스에는 권장되지 않습니다.

예를 들어 db_datareader 고정된 데이터베이스 역할은 데이터베이스에 있는 모든 테이블에 대한 읽기 액세스 권한을 부여하며 일반적으로 그 이상이 필요합니다.

CREATE ROLE 문을 사용하여 고유의 사용자 정의된 데이터베이스 역할을 만들고 각 역할에 비즈니스 요구에 필요한 최소한의 권한을 신중하게 부여하는 것이 좋습니다. 사용자가 여러 역할의 멤버인 경우 모두에 대한 권한을 집계합니다.

사용 권한

SQL Database에는 개별적으로 부여하거나 거부할 수 있는 100개가 넘는 사용 권한이 있습니다. 이러한 사용 권한은 대부분 중첩됩니다. 예를 들어 스키마에 대한 UPDATE 권한에는 해당 스키마 내에 있는 각 테이블에 대한 UPDATE 권한이 포함됩니다. 대부분의 사용 권한 시스템에서와 같이 사용 권한 거부는 권한 부여를 재정의합니다.

중첩된 특성과 사용 권한 수로 인해 데이터베이스를 제대로 보호할 적절한 사용 권한 시스템을 설계하는 데 신중을 기할 수 있습니다.

사용 권한(데이터베이스 엔진)에서 사용 권한 목록부터 시작하여 데이터베이스 엔진 사용 권한의 포스터 크기 그래픽을 검토하세요.

고려 사항 및 제한 사항

SQL Database에서 로그인 및 사용자를 관리하는 경우 다음 사항을 고려합니다.

  • CREATE/ALTER/DROP DATABASE 문을 실행하려면 master 데이터베이스에 연결해야 합니다.
  • Server 관리자 로그인에 해당하는 데이터베이스 사용자를 변경 또는 삭제할 수 없습니다.
  • Microsoft Entra 전용 인증이 활성화되면 서버 관리자가 비활성화됩니다.
  • Server 관리자 로그인의 기본 언어는 미국 영어입니다.
  • 관리자(서버 관리자 로그인 또는 Microsoft Entra 관리자) 및 master 데이터베이스에서 dbmanager 데이터베이스 역할의 멤버만 CREATE DATABASEDROP DATABASE 문을 실행할 수 있는 권한이 있습니다.
  • CREATE/ALTER/DROP LOGIN 문을 실행하려면 master 데이터베이스에 연결해야 합니다. 그러나 로그인 사용은 권장되지 않습니다. 대신에 포함된 데이터베이스 사용자를 사용합니다. 자세한 내용은 포함된 데이터베이스 사용자 - 데이터베이스를 이식 가능하게 만들기를 참조하세요.
  • 사용자 데이터베이스에 연결하려면 연결 문자열에 데이터베이스 이름을 제공해야 합니다.
  • master 데이터베이스에서 loginmanager 데이터베이스 역할의 서버 수준 보안 주체 로그인 및 멤버는 CREATE LOGIN, ALTER LOGINDROP LOGIN 문을 실행할 권한이 있습니다.
  • ADO.NET 애플리케이션에서 CREATE/ALTER/DROP LOGINCREATE/ALTER/DROP DATABASE 문을 실행하는 경우 매개 변수화된 명령을 사용할 수 없습니다. 자세한 내용은 명령 및 매개 변수를 참조하세요.
  • CREATE USER문을 FOR/FROM LOGIN 옵션과 함께 실행하는 경우 Transact-SQL 배치에서 유일한 문이어야 합니다.
  • ALTER USER문을 WITH LOGIN 옵션과 함께 실행하는 경우 Transact-SQL 배치에서 유일한 문이어야 합니다.
  • CREATE/ALTER/DROP LOGINCREATE/ALTER/DROP USER 문은 Azure Synapse 작업 영역에 대해 Microsoft Entra 전용 인증을 사용하는 경우 지원되지 않습니다.
  • CREATE/ALTER/DROP에 사용자가 ALTER ANY USER 데이터베이스에 대한 권한을 요청합니다.
  • 데이터베이스 역할의 소유자가 해당 데이터베이스 역할에서 다른 데이터베이스 사용자를 추가 또는 제거하려고 할 때 다음과 같은 오류가 발생할 수 있습니다. 사용자 또는 역할 ‘이름’이 데이터베이스에 존재하지 않습니다. 사용자가 소유자에게 표시되지 않기 때문에 이 오류가 발생합니다. 이 문제를 해결하려면 역할 소유자에게 사용자에 대한 VIEW DEFINITION 권한을 부여합니다.

자세한 내용은 포함된 데이터베이스 사용자 - 데이터베이스를 이식 가능하게 만들기를 참조하세요.