다음을 통해 공유


CREATE LOGIN(Transact-SQL)

 

데이터베이스 엔진 및 SQL Server에 대한 Azure SQL 데이터베이스 로그인을 만듭니다.

적용 대상: SQL Server (SQL Server 2008부터 현재 버전), Azure SQL 데이터베이스.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

-- SQL Server Syntax
CREATE LOGIN login_name { WITH <option_list1> | FROM <sources> }

<option_list1> ::= 
    PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ]
    [ , <option_list2> [ ,... ] ]

<option_list2> ::=  
    SID = sid
    | DEFAULT_DATABASE =database    
    | DEFAULT_LANGUAGE =language
    | CHECK_EXPIRATION = { ON | OFF}
    | CHECK_POLICY = { ON | OFF}
    | CREDENTIAL =credential_name <sources> ::=
    WINDOWS [ WITH <windows_options>[ ,... ] ]
    | CERTIFICATE certname
    | ASYMMETRIC KEY asym_key_name<windows_options> ::=      
    DEFAULT_DATABASE =database
    | DEFAULT_LANGUAGE =language

-- Syntax for Windows Azure SQL Database

CREATE LOGIN login_name
 { WITH <option_list3> }

<option_list3> ::= 
    PASSWORD = { 'password' }
    [ SID = sid ]

인수

  • login_name
    만들 로그인 이름을 지정합니다. 로그인에는 SQL Server 로그인, Windows 로그인, 인증서 매핑 로그인 및 비대칭 키 매핑 로그인의 네 가지 유형이 있습니다. Windows 도메인 계정에서 매핑된 로그인을 만들 경우 [<domainName>\<login_name>] 형식에 Windows 2000 이전 버전의 사용자 로그온 이름을 사용해야 합니다. login_name@DomainName 형식에 UPN을 사용할 수 없습니다. 이 항목의 뒷부분에 나오는 예 4를 참조하세요.SQL Server 인증 로그인은 sysname 형식이고 식별자에 대한 규칙을 준수해야 하며 '\'를 포함할 수 없습니다. Windows 로그인은 '\'를 포함할 수 있습니다.

  • PASSWORD ='password'
    SQL Server 로그인에만 적용됩니다. 만들 로그인의 암호를 지정합니다. 강력한 암호를 사용해야 합니다. 자세한 내용은 강력한 암호암호 정책을 참조하세요.

    암호는 대소문자를 구분합니다. 암호의 길이는 항상 8자 이상이어야 하며 128자를 초과할 수 없습니다. 암호에는 a-z, A-Z, 0-9 및 영숫자가 아닌 대부분의 문자를 포함할 수 있습니다. 작은따옴표나 login_name은 암호에 포함할 수 없습니다.

  • PASSWORD **=**hashed_password

    적용 대상: SQL Server 2008부터 SQL Server 2014까지

    HASHED 키워드에만 적용됩니다. 만들 로그인에 대한 암호의 해시된 값을 지정합니다.

  • HASHED

    적용 대상: SQL Server 2008부터 SQL Server 2014까지

    SQL Server 로그인에만 적용됩니다. PASSWORD 인수 다음에 입력한 암호가 이미 해시되었음을 지정합니다. 이 옵션을 선택하지 않으면 암호로 입력한 문자열이 데이터베이스에 저장되기 전에 해시됩니다. 이 옵션은 두 서버 간에 데이터베이스를 마이그레이션하는 데에만 사용해야 합니다. HASHED 옵션을 사용하여 새 로그인을 만들면 안 됩니다. HASHED 옵션은 SQL Server 7 또는 그 이전 버전에서 만든 해시와 함께 사용할 수 없습니다.

  • MUST_CHANGE

    적용 대상: SQL Server 2008부터 SQL Server 2014까지

    SQL Server 로그인에만 적용됩니다. 이 옵션을 선택한 경우 새 로그인을 처음 사용할 때 SQL Server 에서는 새 암호를 묻는 메시지를 표시합니다.

  • CREDENTIAL **=**credential_name

    적용 대상: SQL Server 2008부터 SQL Server 2014까지

    새 SQL Server 로그인에 매핑할 자격 증명의 이름입니다. 자격 증명이 서버에 이미 있어야 합니다. 현재 이 옵션은 자격 증명을 로그인에 연결하는 역할만 합니다. 자격 증명은 sa 로그인으로 매핑할 수 없습니다.

  • SID = sid
    로그인을 다시 만드는데 사용됩니다.SQL Server 인증 로그인에만 적용되고 Windows 인증 로그인에는 적용되지 않습니다. 새 SQL Server 인증 로그인의 SID를 지정합니다. 이 옵션을 사용하지 않으면 SQL Server에서 자동으로 SID를 할당합니다. SID 구조는 SQL Server 버전에 따라 달라집니다.

    • SQL Server 로그인 SID: GUID를 기반으로 하는 16바이트(이진(16)) 리터럴 값입니다. 예: SID = 0x14585E90117152449347750164BA00A7

    • SQL 데이터베이스 로그인 SID: Azure SQL 데이터베이스에 유효한 SID 구조입니다. 일반적으로 이것은 0x01060000000000640000000000000000와(과) GUID를 나타내는 16바이트로 구성된 32바이트(이진(32)) 리터럴입니다. 예: SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7

  • DEFAULT_DATABASE **=**database

    적용 대상: SQL Server 2008부터 SQL Server 2014까지

    로그인에 할당할 기본 데이터베이스를 지정합니다. 이 옵션을 선택하지 않으면 기본 데이터베이스가 master로 설정됩니다.

  • DEFAULT_LANGUAGE **=**language

    적용 대상: SQL Server 2008부터 SQL Server 2014까지

    로그인에 할당할 기본 언어를 지정합니다. 이 옵션을 선택하지 않으면 기본 언어가 서버의 현재 기본 언어로 설정됩니다. 나중에 서버의 기본 언어가 변경되더라도 로그인의 기본 언어는 그대로 유지됩니다.

  • CHECK_EXPIRATION = { ON | OFF }

    적용 대상: SQL Server 2008부터 SQL Server 2014까지

    SQL Server 로그인에만 적용됩니다. 이 로그인에 암호 만료 정책을 적용할지 여부를 지정합니다. 기본값은 OFF입니다.

  • CHECK_POLICY = { ON | OFF }

    적용 대상: SQL Server 2008부터 SQL Server 2014까지

    SQL Server 로그인에만 적용됩니다.SQL Server가 실행 중인 컴퓨터의 Windows 암호 정책을 이 로그인에 적용하도록 지정합니다. 기본값은 ON입니다.

    Windows 정책에 따라 강력한 암호가 필요한 경우에는 암호에 다음 네 가지 문자 중 세 가지 이상을 포함해야 합니다.

    • 대문자(A-Z)

    • 소문자(a-z)

    • 숫자(0-9)

    • 영숫자가 아닌 문자 중 하나(예: 공백, _, @, *, ^, %, !, $, # 또는 &)

  • WINDOWS

    적용 대상: SQL Server 2008부터 SQL Server 2014까지

    로그인이 Windows 로그인에 매핑되도록 지정합니다.

  • CERTIFICATE certname

    적용 대상: SQL Server 2008부터 SQL Server 2014까지

    이 로그인과 연결될 인증서의 이름을 지정합니다. 이 인증서는 master 데이터베이스에 이미 있어야 합니다.

  • ASYMMETRIC KEY asym_key_name

    적용 대상: SQL Server 2008부터 SQL Server 2014까지

    이 로그인과 연결될 비대칭 키의 이름을 지정합니다. 이 키는 master 데이터베이스에 이미 있어야 합니다.

설명

암호는 대소문자를 구분합니다.

SQL Server 로그인을 만들 때만 암호를 미리 해시할 수 있습니다.

HASHED 및 CHECK_POLICY = ON 인수가 모두 지정되는 경우, 다음에 암호를 변경할 때까지 암호의 복잡성은 검사되지 않습니다.

MUST_CHANGE를 지정한 경우에는 CHECK_EXPIRATION 및 CHECK_POLICY를 ON으로 설정해야 합니다. 그렇지 않으면 문이 실패합니다.

CHECK_POLICY = OFF와 CHECK_EXPIRATION = ON의 조합은 지원되지 않습니다.

CHECK_POLICY를 OFF로 설정하면 lockout_time이 다시 설정되고 CHECK_EXPIRATION이 OFF로 설정됩니다.

중요

CHECK_EXPIRATION 및 CHECK_POLICY는 Windows Server 2003 이상 버전에서만 적용됩니다. 자세한 내용은 암호 정책을 참조하세요.

인증서나 비대칭 키에서 만든 로그인은 코드 서명 용도로만 사용되며SQL Server에 연결할 때는 사용할 수 없습니다. 인증서나 비대칭 키가 master 데이터베이스에 이미 있는 경우에만 인증서나 비대칭 키에서 로그인을 만들 수 있습니다.

로그인을 전송하는 스크립트는 SQL Server 2005와 SQL Server 2008 인스턴스 간에 로그인 및 암호를 전송하는 방법을 참조하세요.

로그인을 만들면 새 로그인이 자동으로 사용하도록 설정되고 해당 로그인에 서버 수준 CONNECT SQL 권한이 부여됩니다.

Windows Azure SQL 데이터베이스 로그인

SQL 데이터베이스에서 CREATE LOGIN 문은 일괄 처리의 유일한 문이어야 합니다.

SQL 데이터베이스에서는 master 데이터베이스에 연결하여 로그인을 만들어야 합니다.

SQL Server 규칙을 사용하여 <loginname>@<servername> 형식의 SQL Server 인증 로그인을 만들 수 있습니다.SQL 데이터베이스 서버가 myazureserver이고 로그인이 myemail@live.com인 경우 myemail@live.com@myazureserver라는 로그인을 제공할 수 있습니다. 단일 서버로의 연결에 이 자격 증명을 사용할 예정인 경우에만 이 방법을 사용합니다. SQL 클라이언트 라이브러리의 일부 이전 버전은 Azure SQL 데이터베이스 연결 시 <loginname>@<servername> 형식을 사용해야 합니다.

SQL 데이터베이스 로그인에 대한 자세한 내용은 Windows Azure SQL 데이터베이스에서 데이터베이스 및 로그인 관리를 참조하세요.

사용 권한

SQL Server 버전에서는 서버에 대한 ALTER ANY LOGIN 사용 권한 또는 securityadmin 고정 서버 역할의 멤버 자격이 필요합니다.

SQL 데이터베이스에서는 프로비전 프로세스를 통해 만들어진 서버 수준의 보안 주체 로그인이나 master 데이터베이스에서 loginmanager 데이터베이스 역할이 할당된 멤버만 새 로그인을 만들 수 있습니다.

CREDENTIAL 옵션을 사용하는 경우에는 서버에 대한 ALTER ANY CREDENTIAL 권한도 필요합니다.

다음 단계

로그인을 만든 후 해당 로그인으로 데이터베이스 엔진 또는 SQL 데이터베이스에 연결할 수 있지만 이 로그인은 public 역할에 부여된 사용 권한만 갖습니다. 다음 작업 중 일부를 수행하는 것이 좋습니다.

1. 암호로 로그인 만들기

다음 예에서는 특정 사용자에 대한 로그인을 만들고 암호를 할당합니다.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

2. 암호로 로그인 만들기

다음 예에서는 특정 사용자에 대한 로그인을 만들고 암호를 할당합니다.MUST_CHANGE 옵션을 사용하는 경우 사용자는 서버에 처음 연결할 때 이 암호를 변경해야 합니다.

적용 대상: SQL Server 2008부터 SQL Server 2014까지

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>' MUST_CHANGE;
GO

3. 자격 증명에 매핑된 로그인 만들기

다음 예에서는 사용자를 사용하여 특정 사용자에 대한 로그인을 만듭니다. 이 로그인은 자격 증명에 매핑됩니다.

적용 대상: SQL Server 2008부터 SQL Server 2014까지

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>', 
    CREDENTIAL = <credentialName>;
GO

4. 인증서에서 로그인 만들기

다음 예에서는 master의 인증서를 사용하여 특정 사용자에 대한 로그인을 만듭니다.

적용 대상: SQL Server 2008부터 SQL Server 2014까지

USE MASTER;
CREATE CERTIFICATE <certificateName>
    WITH SUBJECT = '<login_name> certificate in master database',
    EXPIRY_DATE = '12/05/2025';
GO
CREATE LOGIN <login_name> FROM CERTIFICATE <certificateName>;
GO

5. Windows 도메인 계정에서 로그인 만들기

다음 예에서는 Windows 도메인 계정을 사용하여 로그인을 만듭니다.

적용 대상: SQL Server 2008부터 SQL Server 2014까지

CREATE LOGIN [<domainName>\<login_name>] FROM WINDOWS;
GO

6. SID에서 로그인 만들기

다음 예제에서는 우선 SQL Server 인증 로그인을 만들고 로그인의 SID를 결정합니다.

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';

SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

내 쿼리는 SID로 0x241C11948AEEB749B0D22646DB1A19F2을(를) 반환합니다. 쿼리는 다른 값을 반환합니다. 다음 문은 로그인을 삭제한 후 로그인을 다시 만듭니다. 이전 쿼리의 SID를 사용합니다.

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin 
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

참고 항목

보안 주체(데이터베이스 엔진)
암호 정책
ALTER LOGIN(Transact-SQL)
DROP LOGIN(Transact-SQL)
EVENTDATA(Transact-SQL)
로그인 만들기