SQL Server 사용자

이 페이지에서는 Cloud SQL에서 SQL Server 사용자 및 역할이 사용되는 방법을 보여줍니다. SQL Server 역할을 사용하면 SQL Server 인스턴스에 액세스하는 사용자의 액세스 권한 및 기능을 제어할 수 있습니다.

Cloud SQL 사용자 만들기 및 관리에 관한 자세한 내용은 사용자 만들기 및 관리를 참조하세요.

SQL Server 역할 및 사용자

SQL Server 역할은 단일 역할일 수 있으며 하나의 역할 그룹으로 작동할 수 있습니다.

사용자는 로그인 기능이 있는 역할입니다(역할에 LOGIN 권한이 포함됨). Cloud SQL에서 생성되는 모든 역할에 LOGIN 권한이 포함되므로, Cloud SQL에서 '역할' 및 '사용자'라는 용어는 서로 동일한 의미로 사용됩니다. 하지만 클라이언트에 역할을 만들 경우 LOGIN 권한이 반드시 포함되지는 않습니다.

모든 SQL Server 사용자는 비밀번호가 있어야 합니다. 비밀번호가 없는 사용자로는 로그인할 수 없습니다.

수퍼유저 및 시스템 저장 프로시져

SQL Server용 Cloud SQL은 관리형 서비스이므로 고급 권한이 필요한 특정 시스템 저장 프로시져 및 테이블에 대한 액세스를 제한합니다. Cloud SQL에서는 수퍼유저 권한이 있는 사용자를 만들거나 해당 사용자로 액세스할 수 없습니다.

기본 SQL Server 사용자

SQL Server용 Cloud SQL 인스턴스를 새로 만들면 기본 sqlserver 사용자가 자동으로 생성되며, 사용자 비밀번호를 설정해야 합니다.

sqlserver 사용자는 CustomerDbRootRole 역할의 일부이며, 해당 권한에 다음이 포함됩니다.

  • CONNECT SQL
  • CREATE ANY DATABASE
  • ALTER ANY LOGIN
  • ALTER ANY CONNECTION
  • ALTER TRACE
  • VIEW ANY DATABASE
  • VIEW ANY DEFINITION
  • VIEW SERVER STATE
  • ALTER SERVER STATE
  • CREATE SERVER ROLE
  • ALTER ANY SERVER ROLE

서버 권한 부여

GRANT 명령어를 사용하여 권한을 부여할 때는 CustomerDbRootRolegrantor_principal 값 등으로 전달해야 합니다.

다음 GRANT ALTER ANY LOGIN 예시는 유효합니다.

GRANT ALTER ANY LOGIN TO [Account] AS CustomerDbRootRole

다음 GRANT ALTER ANY LOGIN 예시는 유효하지 않습니다.

GRANT ALTER ANY LOGIN TO [Account]

다른 SQL Server 사용자

다른 SQL Server 사용자 또는 역할을 만들 수 있습니다. Cloud SQL을 사용하여 만드는 모든 사용자는 CustomerDbRootRole 역할의 일부로 생성되며, sqlserver 사용자와 동일한 권한 집합을 포함합니다. ALTER ROLE 명령어를 사용하면 모든 사용자의 권한을 변경할 수 있습니다.

클라이언트에 새 사용자를 만들 경우, 이를 다른 역할과 연결하거나, 여기에 다른 권한을 부여할 수 있습니다.

문제 해결

데이터베이스 액세스 오류

만든 사용자로 생성한 데이터베이스에 액세스하려고 하면 The server principal USERNAME is not able to access the database DATABASE_NAME under the current security context. 오류가 발생합니다.

문제 원인

사용자가 데이터베이스의 구성원이 아닙니다.

해결 방법

데이터베이스에 sqlserver 사용자로 연결하고 새 사용자를 추가한 다음 데이터베이스의 db_owner 역할을 새 사용자에게 부여합니다. 예를 들면 다음과 같습니다.

EXEC sp_adduser 'user';
EXEC sp_addrolemember 'db_owner', 'user'

다음 단계