포함된 데이터베이스 사용자 - 이식 가능한 데이터베이스 만들기Contained Database Users - Making Your Database Portable

이 항목은 다음에 적용됩니다.예SQL Server(2012부터 시작)예Azure SQL Database예Azure SQL Data Warehouse 예병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2012)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

포함된 데이터베이스 사용자를 사용하여 데이터베이스 수준에서 SQL ServerSQL ServerSQL 데이터베이스SQL Database 연결을 인증합니다.Use contained database users to authenticate SQL ServerSQL Server and SQL 데이터베이스SQL Database connections at the database level. 포함된 데이터베이스는 다른 데이터베이스 및 해당 데이터베이스를 호스팅하는 SQL ServerSQL Server/ SQL 데이터베이스SQL Database (및 master 데이터베이스) 인스턴스에서 격리된 데이터베이스입니다.A contained database is a database that is isolated from other databases and from the instance of SQL ServerSQL Server/ SQL 데이터베이스SQL Database (and the master database) that hosts the database. SQL ServerSQL Server 에서 Windows 및 SQL ServerSQL Server 인증을 위해 포함된 데이터베이스 사용자를 지원합니다. authentication. SQL 데이터베이스SQL Database을(를) 사용하는 경우, 포함된 데이터베이스 사용자와 데이터베이스 수준 방화벽 규칙을 조합합니다.When using SQL 데이터베이스SQL Database, combine contained database users with database level firewall rules. 이 항목은 포함된 데이터베이스 모델을 사용할 때와 기존의 로그인/사용자 모델 및 Windows 또는 서버 수준 방화벽 규칙을 사용할 때를 비교하여 그 차이점과 장점을 검토합니다.This topic reviews the differences and benefits of using the contained database model compared to traditional login/user model and Windows or server-level firewall rules. 특정 시나리오의 경우, 관리 효율성 또는 응용 프로그램 비즈니스 논리는 여전히 기존의 로그인/사용자 모델 및 서버 수준 방화벽 규칙을 사용해야 할 수도 있습니다.Specific scenarios, manageability or application business logic may still require use of traditional login/user model and server-level firewall rules.

참고

MicrosoftMicrosoft 이(가) SQL 데이터베이스SQL Database 서비스를 발전시키고 보다 높게 보장된 SLA로 이동함에 따라, 지정된 데이터베이스에 대해 가용성 SLA와 최대 로그인 속도를 더 높이기 위하여 포함된 데이터베이스 사용자 모델 및 데이터베이스 범위 방화벽 규칙으로 전환이 필요할 수 있습니다.As MicrosoftMicrosoft evolves the SQL 데이터베이스SQL Database service and moves towards higher guaranteed SLAs you may be required to switch to the contained database user model and database-scoped firewall rules to attain the higher availability SLA and higher max login rates for a given database. MicrosoftMicrosoft 은(는) 지금 이러한 변경 사항을 고려할 것을 권장합니다. encourage you to consider such changes today.

기존의 로그인/사용자 모델Traditional Login and User Model

기존 연결 모델에서 Windows 사용자 또는 Windows 그룹의 구성원은 Windows에서 인증된 사용자 또는 그룹 자격 증명을 제공하여 데이터베이스 엔진Database Engine 에 연결합니다.In the traditional connection model, Windows users or members of Windows groups connect to the 데이터베이스 엔진Database Engine by providing user or group credentials authenticated by Windows. 또는 SQL ServerSQL Server 인증을 사용하여 이름 및 암호를 모두 제공할 수 있습니다.Or you can provide both a name and password and connects by using SQL ServerSQL Server authentication. 두 경우 모두 master 데이터베이스에 연결 자격 증명과 일치하는 로그인 정보가 반드시 있어야 합니다.In both cases, the master database must have a login that matches the connecting credentials. 데이터베이스 엔진Database Engine 에서 Windows 인증 자격 증명을 승인하거나 SQL ServerSQL Server 인증 자격 증명을 인증한 후에 연결은 일반적으로 사용자 데이터베이스에 연결을 시도합니다.After the 데이터베이스 엔진Database Engine confirms the Windows authentication credentials or authenticates the SQL ServerSQL Server authentication credentials, the connection typically attempts to connect to a user database. 사용자 데이터베이스에 연결하려면 로그인은 사용자 데이터베이스에 포함된 데이터베이스 사용자와 매핑(즉, 연결)될 수 있어야 합니다.To connect to a user database, the login must be able to be mapped to (that is, associated with) a database user in the user database. 연결 문자열은 SQL ServerSQL Server 에서는 선택 사항이지만 SQL 데이터베이스SQL Database에서는 필수인 특정 데이터베이스에 연결을 지정할 수 있습니다.The connection string may also specify connecting to a specific database which is optional in SQL ServerSQL Server but required in SQL 데이터베이스SQL Database.

중요한 원칙은 로그인(master 데이터베이스에 포함된)과 사용자(사용자 데이터베이스에 포함된)가 반드시 존재해야 하며 서로 관련되어 있어야 한다는 것입니다.The important principal is that both the login (in the master database) and the user (in the user database) must exist and be related to each other. 이는 사용자 데이터베이스에 대한 연결이 master 데이터베이스의 로그인에 종속성을 갖고 있으며 이것은 데이터베이스가 다른 호스팅 SQL ServerSQL Server 또는 Azure SQL 데이터베이스Azure SQL Database 서버로 이동될 수 있는 역량을 제한합니다.This means that the connection to the user database has a dependency upon the login in the master database, and this limits the ability of the database to be moved to a different hosting SQL ServerSQL Server or Azure SQL 데이터베이스Azure SQL Database server. 또한, 어떠한 이유로든 master 데이터베이스에 대한 연결을 사용할 수 없으면(예: 장애 조치(failover)가 진행 중인 경우) 전반적으로 연결 시간이 증가하거나 연결 시간이 초과될 수 있습니다.And if, for any reason, a connection to the master database is not available (for example, a failover is in progress), the overall connection time will be increased or connection might time out. 따라서 연결 확장성을 줄어들 수 있습니다.Consequently this may reduce connection scalability.

포함된 데이터베이스 사용자 모델Contained Database User Model

포함된 데이터베이스 사용자 모델에서 master 데이터베이스의 로그인은 존재하지 않습니다.In the contained database user model, the login in the master database is not present. 대신 인증 프로세스가 사용자 데이터베이스에서 일어나며 사용자 데이터베이스에 포함된 데이터베이스 사용자는 master 데이터베이스에 연관된 로그인을 갖지 않습니다.Instead, the authentication process occurs at the user database, and the database user in the user database does not have an associated login in the master database. 포함된 데이터베이스 사용자 모델은 Windows 인증 및 SQL ServerSQL Server 인증을 모두 지원하고 SQL ServerSQL ServerSQL 데이터베이스SQL Database모두에 사용할 수 있습니다.The contained database user model supports both Windows authentication and SQL ServerSQL Server authentication, and can be used in both SQL ServerSQL Server and SQL 데이터베이스SQL Database. 포함된 데이터베이스 사용자로 연결하려면 데이터베이스 엔진Database Engine 에서 인증 프로세스를 관리할 책임이 있는 데이터베이스를 알 수 있도록 연결 문자열은 사용자 데이터베이스에 대한 매개 변수를 항상 포함해야 합니다.To connect as a contained database user, the connection string must always contain a parameter for the user database so that the 데이터베이스 엔진Database Engine knows which database is responsible for managing the authentication process. 포함된 데이터베이스 사용자의 활동은 데이터베이스 인증으로 제한되기 때문에 포함된 데이터베이스 사용자로 연결하는 경우 데이터베이스 사용자 계정은 반드시 사용자가 필요로 하는 각각의 데이터베이스에 독립적으로 생성되어야 합니다.The activity of the contained database user is limited to the authenticating database, so when connecting as a contained database user, the database user account must be independently created in each database that the user will need. 데이터베이스를 변경하려면 SQL 데이터베이스SQL Database 사용자가 새 연결을 만들어야 합니다.To change databases, SQL 데이터베이스SQL Database users must create a new connection. SQL ServerSQL Server 의 포함된 데이터베이스 사용자는 동일한 사용자가 다른 데이터베이스에 존재하면 데이터베이스를 변경할 수 있습니다.Contained database users in SQL ServerSQL Server can change databases if an identical user is present in another database.

Azure: SQL 데이터베이스SQL Database and SQL 데이터 웨어하우스SQL Data Warehouse support Azure Active Directory identities as contained database users.Azure: SQL 데이터베이스SQL Database and SQL 데이터 웨어하우스SQL Data Warehouse support Azure Active Directory identities as contained database users. SQL 데이터베이스SQL DatabaseSQL ServerSQL Server 인증을 사용하여 포함된 데이터베이스 사용자를 지원하지만 SQL 데이터 웨어하우스SQL Data Warehouse 는 그렇지 않습니다. does not. 자세한 내용은 Azure Active Directory 인증을 사용하여 SQL 데이터베이스에 연결을 참조하세요.For more information, see Connecting to SQL Database By Using Azure Active Directory Authentication. Azure Active Directory 인증을 사용할 경우 Active Directory 유니버설 인증을 사용하여 SSMS에서 연결됩니다.When using Azure Active Directory authentication, connections from SSMS can be made using Active Directory Universal Authentication. 관리자는 전화 통화, 문자 메시지, PIN을 사용하는 스마트 카드, 모바일 앱 알림을 사용하여 ID를 확인하는 Multi-Factor Authentication이 필요하도록 유니버설 인증을 구성할 수 있습니다.Administrators can configure Universal Authentication to require Multi-Factor Authentication, which verifies identity by using a phone call, text message, smart card with pin, or mobile app notification. 자세한 내용은 SQL Database 및 SQL Data Warehouse를 사용한 Azure AD MFA에 대한 SSMS 지원을 참조하세요.For more information, see SSMS support for Azure AD MFA with SQL Database and SQL Data Warehouse.

SQL 데이터베이스SQL DatabaseSQL 데이터 웨어하우스SQL Data Warehouse의 경우, 연결 문자열에 데이터베이스 이름이 항상 필요하므로 기존 모델에서 포함된 데이터베이스 사용자 모델로 전환 시 연결 문자열을 변경하지 않아도 됩니다.For SQL 데이터베이스SQL Database and SQL 데이터 웨어하우스SQL Data Warehouse, since the database name is always required in the connection string, no changes are required to the connection string when switching from the traditional model to the contained database user model. SQL ServerSQL Server 연결은 데이터베이스 이름이 (이미 존재하지 않는 경우) 연결 문자열에 반드시 추가되어야 합니다.For SQL ServerSQL Server connections, the name of the database must be added to the connection string, if it is not already present.

중요

기존 모델을 사용하는 경우, 서버 수준 역할 및 서버 수준 권한은 모든 데이터베이스에 대한 액세스를 제한할 수 있습니다.When using the traditional model, the server level roles and server level permissions can limit access to all databases. 포함된 데이터베이스 모델을 사용하는 경우, 데이터베이스 소유자와 ALTER ANY USER 권한이 있는 데이터베이스 사용자는 데이터베이스에 대한 액세스를 부여할 수 있습니다.When using the contained database model, database owners and database users with the ALTER ANY USER permission can grant access to the database. 이것은 고급 권한 서버 로그인의 액세스 제어를 줄이고 고급 권한 데이터베이스 사용자에 대한 액세스 제어를 확장합니다.This reduces the access control of high privileged server logins and expands the access control to include high privileged database users.

방화벽Firewalls

SQL ServerSQL Server

Windows 방화벽 규칙은 모든 연결에 적용되며 로그인(기존 모델 연결) 및 포함된 데이터베이스 사용자에 동일한 효력을 갖습니다.Windows firewall rules apply to all connections and have the same effects on logins (traditional model connections) and contained database users. Windows 방화벽에 대한 자세한 내용은 Configure a Windows Firewall for Database Engine Access을(를) 참조하세요.For more information about the Windows firewall, see Configure a Windows Firewall for Database Engine Access.

SQL 데이터베이스SQL Database 방화벽 Firewalls

SQL 데이터베이스SQL Database 은 여러 수준 연결(로그인) 및 데이터베이스 수준 연결(포함된 데이터베이스 사용자)에 대해 별도의 방화벽 규칙을 허용합니다. allows separate firewall rules for sever level connections (logins) and for database level connections (contained database users). 사용자 데이터베이스에 연결할 때 첫 번째 데이터베이스 방화벽 규칙이 확인됩니다.When connecting to a user database, first database firewall rules are checked. 데이터베이스에 액세스를 허용하는 규칙이 없는 경우, 서버 수준 방화벽 규칙이 확인되고 논리 서버 master 데이터베이스에 대한 액세스가 필요합니다.If there is no rule that allows access to the database, the server level firewall rules are checked, which requires access to the logical server master database. 포함된 데이터베이스 사용자와 결합된 데이터베이스 수준 방화벽 규칙은 연결 시 서버의 master 데이터베이스에 액세스할 필요가 없고 향상된 연결 확장성을 제공합니다.Database level firewall rules combined with contained database users can eliminate necessity to access master database of the server during connection providing improved connection scalability.

SQL 데이터베이스SQL Database 방화벽 규칙에 대한 자세한 내용은 다음 항목을 참조하십시오.For more information about SQL 데이터베이스SQL Database firewall rules, see the following topics:

구문 차이Syntax Differences

기존 모델Traditional model 포함된 데이터베이스 사용자 모델Contained database user model
master 데이터베이스에 연결하는 경우:When connected to the master database:

CREATE LOGIN login_name WITH PASSWORD = 'strong_password';

사용자 데이터베이스에 연결하는 경우:Then when connected to a user database:

CREATE USER 'user_name' FOR LOGIN 'login_name';
사용자 데이터베이스에 연결하는 경우:When connected to a user database:

CREATE USER user_name WITH PASSWORD = 'strong_password';
기존 모델Traditional model 포함된 데이터베이스 사용자 모델Contained database user model
master DB의 컨텍스트에서 암호를 변경하려면:To change password, in context of master DB:

ALTER LOGIN login_name WITH PASSWORD = 'strong_password';
사용자 DB의 컨텍스트에서 암호를 변경하려면:To change password, in context of user DB:

ALTER USER user_name WITH PASSWORD = 'strong_password';

주의Remarks

  • SQL ServerSQL Server에서 포함된 데이터베이스 사용자는 SQL ServerSQL Server인스턴스에 대해 설정되어야 합니다.In SQL ServerSQL Server, contained database users must be enabled for the instance of SQL ServerSQL Server. 자세한 내용은 contained database authentication Server Configuration Option을 참조하세요.For more information, see contained database authentication Server Configuration Option.

  • 겹치지 않는 이름을 가진 포함된 데이터베이스 사용자와 로그인은 응용 프로그램에서 공존할 수 있습니다.Contained database users and logins with non-overlapping names can co-exist in your applications.

  • name1 이라는 이름으로 마스터 데이터베이스에 로그인하고 name1이라는 이름으로 포함된 데이터베이스 사용자를 만들면, 데이터베이스 이름이 연결 문자열에 제공되는 경우, 데이터베이스에 연결할 때 데이터베이스 사용자의 컨텍스트는 로그인 컨텍스트보다 우선하여 선택됩니다.If there is a login in master database with the name name1 and you create a contained database user named name1, when a database name is provided in the connection string, the context of the database user will be picked over login context when connecting to the database. 즉, 포함된 데이터베이스 사용자가 동일한 이름의 로그인보다 우선합니다.That is, contained database user will take precedence over logins with the same name.

  • SQL 데이터베이스SQL Database 에서 포함된 데이터베이스 사용자의 이름은 서버 관리자 계정의 이름과 같을 수 없습니다.In SQL 데이터베이스SQL Database the name of contained database user cannot be the same as the name of the server admin account.

  • SQL 데이터베이스SQL Database 서버 관리자 계정은 포함된 데이터베이스 사용자일 수 없습니다.The SQL 데이터베이스SQL Database server admin account can never be a contained database user. 서버 관리자에는 포함된 데이터베이스 사용자를 만들고 관리하는 데 충분한 권한이 있습니다.The server admin has sufficient permissions to create and manage contained database users. 서버 관리자는 사용자 데이터베이스의 포함된 데이터베이스 사용자에게 권한을 부여할 수 있습니다.The server admin can grant permissions to contained database users on user databases.

  • 포함된 데이터베이스 사용자가 데이터베이스 수준의 주체이기 때문에, 사용하려는 모든 데이터베이스에 포함된 데이터베이스 사용자를 만들어야 합니다.Since contained database users are database level principals, you need to create contained database users in every database that you would use them. ID는 데이터베이스에만 한정되며 동일한 서버에 있는 다른 데이터베이스의 동일한 이름과 동일한 암호를 가진 사용자와는 모든 면에서 관련이 없습니다.The identity is confined to the database and is independent in all aspects from a user with same name and same password in another database in the same server.

  • 일반적으로 사용하는 것과 동일한 강도의 암호를 사용하여 로그인합니다.Use the same strength passwords that you would normally use for logins.

관련 항목:See Also

포함된 데이터베이스 Contained Databases
포함된 데이터베이스의 보안 모범 사례 Security Best Practices with Contained Databases
CREATE USER(Transact-SQL) CREATE USER (Transact-SQL)
Azure Active Directory 인증을 사용하여 SQL 데이터베이스에 연결 Connecting to SQL Database By Using Azure Active Directory Authentication