사용자 생성
새 데이터베이스 사용자를 생성합니다. 데이터베이스 사용자는 권한 및 역할에 따라 데이터베이스에서 데이터를 검색하고, 명령을 실행하고, 기타 작업을 수행할 수 있습니다. 이 명령을 실행하려면 데이터베이스 슈퍼 사용자여야 합니다.
필수 권한
CREATE USER에 필요한 권한은 다음과 같습니다.
수퍼유저
CREATE USER 권한이 있는 사용자
구문
CREATE USER name [ WITH ] PASSWORD { 'password' | 'md5hash' | 'sha256hash' | DISABLE } [ option [ ... ] ] where option can be: CREATEDB | NOCREATEDB | CREATEUSER | NOCREATEUSER | SYSLOG ACCESS { RESTRICTED | UNRESTRICTED } | IN GROUP groupname [, ... ] | VALID UNTIL 'abstime' | CONNECTION LIMIT { limit | UNLIMITED } | SESSION TIMEOUT limit | EXTERNALID external_id
파라미터
- 이름
-
생성할 사용자의 이름입니다. 사용자 이름은
PUBLIC
일 수 없습니다. 유효한 이름에 대한 자세한 내용은 이름 및 식별자 섹션을 참조하세요. - WITH
-
선택적 키워드입니다. WITH는 Amazon Redshift에서 무시됩니다.
- PASSWORD { 'password' | 'md5hash' | 'sha256hash' | DISABLE }
-
사용자의 암호를 설정합니다.
기본적으로, 암호가 비활성화 상태가 아닌 이상 사용자는 암호를 변경할 수 있습니다. 사용자의 암호를 비활성화하려면 DISABLE을 지정하십시오. 사용자 암호를 비활성화하면 시스템에서 해당 암호가 삭제되고 사용자는 임시 AWS Identity and Access Management(IAM) 사용자 자격 증명만 이용해 로그인할 수 있습니다. 자세한 내용은 IAM 인증을 이용한 데이터베이스 사용자 자격 증명 생성을 참조하십시오. 수퍼유저만이 암호를 활성화 또는 비활성화할 수 있습니다. 수퍼유저의 암호를 비활성화할 수는 없습니다. 암호를 활성화하려면 ALTER USER 단원을 실행하고 암호를 지정하십시오.
암호를 일반 텍스트, MD5 해시 문자열 또는 SHA256 해시 문자열로 지정할 수 있습니다.
참고
AWS Management Console, AWS CLI 또는 Amazon Redshift API를 사용하여 새 클러스터를 시작할 때 초기 데이터베이스 사용자를 위한 일반 텍스트 암호를 입력해야 합니다. 이후에 ALTER USER를 사용하여 암호를 변경할 수 있습니다.
일반 텍스트의 경우, 암호는 다음 제약 조건을 충족해야 합니다.
-
8~64자 사이의 길이여야 합니다.
-
최소한 대문자 1개, 소문자 1개 및 숫자 1개를 포함해야 합니다.
-
'(작은따옴표), "(큰따옴표), \, / 또는 @을 제외하고 모든 ASCII 문자(ASCII 코드 33~126)를 사용할 수 있습니다.
CREATE USER 암호 파라미터를 일반 텍스트로 전달하는 대신 사용할 수 있는 더 안전한 방법으로, 암호와 사용자 이름을 포함하는 문자열의 MD5 해시를 지정할 수 있습니다.
참고
MD5 해시 문자열을 지정하면 CREATE USER 명령이 유효한 MD5 해시 문자열이 있는지 확인하지만 그 문자열에서 암호 부분의 유효성을 검사하지는 않습니다. 이 경우에는 빈 문자열과 같은 암호를 생성할 수 있는데, 이 암호로 데이터베이스에 로그인할 수는 없습니다.
MD5 암호를 지정하려면 다음 단계를 따르십시오.
-
암호와 사용자 이름을 연결합니다.
예를 들어, 암호가
ez
이고 사용자가user1
인 경우 연결된 문자열은ezuser1
입니다. -
연결된 문자열을 32자의 MD5 해시 문자열로 변환합니다. MD5 유틸리티를 사용하여 해시 문자열을 생성할 수 있습니다. 다음 예에서는 Amazon Redshift MD5 함수 및 연결 연산자(||)를 사용하여 32자의 MD5 해시 문자열을 반환합니다.
select md5('ez' || 'user1');
md5 -------------------------------- 153c434b4b77c89e6b94f12c5393af5b
-
MD5 해시 문자열 앞에 '
md5
'를 연결하고 연결된 문자열을 md5hash 인수로 제공합니다.create user user1 password 'md5153c434b4b77c89e6b94f12c5393af5b';
-
로그인 자격 증명을 사용하여 데이터베이스에 로그인합니다.
이 예의 경우 암호
user1
를 사용하여ez
로 로그인합니다.
또 다른 안전한 대안은 암호 문자열의 SHA-256 해시를 지정하는 것입니다. 또는 사용자 고유의 유효한 SHA-256 다이제스트 및 다이제스트를 생성하는 데 사용된 256비트 솔트를 제공할 수 있습니다.
다이제스트 – 해싱 함수의 출력입니다.
솔트 – 해시 함수 출력의 패턴을 줄이는 데 도움이 되도록 암호와 결합되는 무작위로 생성된 데이터입니다.
'sha256|Mypassword'
'sha256|digest|256-bit-salt'
다음 예에서 Amazon Redshift는 솔트를 생성하고 관리합니다.
CREATE USER admin PASSWORD 'sha256|Mypassword1';
다음 예에서는 유효한 SHA-256 다이제스트 및 다이제스트를 생성하는 데 사용된 256비트 솔트가 제공됩니다.
비밀번호를 지정하고 자체 솔트로 해시하려면 다음 단계를 따릅니다.
-
256비트 솔트를 생성합니다. 16진수 문자열 생성기를 사용하여 64자 길이의 문자열을 생성하면 솔트를 확보할 수 있습니다. 이 예제에서 솔트는
c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6
입니다. FROM_HEX 함수를 사용하여 솔트를 바이너리로 변환합니다. SHA2 함수에는 솔트의 바이너리 표현이 필요하기 때문입니다. 다음 문을 참조하십시오.
SELECT FROM_HEX('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6');
CONCAT 함수를 사용하여 솔트를 비밀번호에 추가하십시오. 이 예제의 암호는
Mypassword1
입니다. 다음 문을 참조하십시오.SELECT CONCAT('Mypassword1',FROM_HEX('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6'));
SHA2 함수를 사용하여 암호와 솔트 조합으로 다이제스트를 만들 수 있습니다. 다음 문을 참조하십시오.
SELECT SHA2(CONCAT('Mypassword1',FROM_HEX('c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6')), 0);
이전 단계의 다이제스트와 솔트를 사용하여 사용자를 생성합니다. 다음 문을 참조하십시오.
CREATE USER admin PASSWORD 'sha256|821708135fcc42eb3afda85286dee0ed15c2c461d000291609f77eb113073ec2|c721bff5d9042cf541ff7b9d48fa8a6e545c19a763e3710151f9513038b0f6c6';
-
로그인 자격 증명을 사용하여 데이터베이스에 로그인합니다.
이 예의 경우 암호
admin
를 사용하여Mypassword1
로 로그인합니다.
해싱 함수를 지정하지 않고 암호를 일반 텍스트로 설정하면 사용자 이름을 솔트로 사용하여 MD5 다이제스트가 생성됩니다.
-
- CREATEDB | NOCREATEDB
-
CREATEDB 옵션을 사용하여 신규 사용자가 새 데이터베이스를 만들 수 있습니다. 기본값은 NOCREATEDB입니다.
- CREATEUSER | NOCREATEUSER
-
CREATEUSER 옵션으로 CREATE USER를 포함한 모든 데이터베이스 권한을 가진 수퍼유저를 생성합니다. 기본값은 NOCREATEUSER입니다. 자세한 내용은 superuser 단원을 참조하십시오.
- SYSLOG ACCESS { RESTRICTED | UNRESTRICTED }
-
Amazon Redshift 시스템 테이블 및 뷰에 대한 사용자의 액세스 수준을 지정합니다.
SYSLOG ACCESS RESTRICTED 권한이 있는 일반 사용자는 사용자 가시성 시스템 테이블 및 뷰에서 해당 사용자가 생성한 행만 볼 수 있습니다. 기본값은 RESTRICTED입니다.
SYSLOG ACCESS UNRESTRICTED 권한이 있는 일반 사용자는 사용자 가시성 시스템 테이블 및 뷰에서 다른 사용자가 생성한 행을 포함한 모든 행을 볼 수 있습니다. UNRESTRICTED는 수퍼유저 가시성 테이블에 대한 일반 사용자 액세스를 부여하지 않습니다. 수퍼유저만 수퍼유저 가시성 테이블을 볼 수 있습니다.
참고
사용자에게 시스템 테이블에 대한 무제한 액세스를 제공하면 다른 사용자가 생성한 데이터에 대한 가시성이 사용자에게 제공됩니다. 예를 들어, STL_QUERY 및 STL_QUERYTEXT에는 INSERT, UPDATE 및 DELETE 문의 전체 텍스트가 포함되며, 여기에는 사용자가 생성한 민감한 데이터가 포함될 수 있습니다.
SVV_TRANSACTIONS의 모든 행은 모든 사용자에게 표시됩니다.
자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 단원을 참조하십시오.
- IN GROUP groupname
-
사용자가 속한 기존 그룹의 이름을 지정합니다. 여러 개의 그룹 이름이 목록에 표시될 수 있습니다.
- VALID UNTIL abstime
-
VALID UNTIL 옵션은 그 시간 이후로는 사용자 암호가 더 이상 유효하지 않게 되는 절대 시간을 설정합니다. 기본적으로 암호에는 제한 시간이 없습니다.
- CONNECTION LIMIT { limit | UNLIMITED }
-
사용자가 동시에 열어놓을 수 있는 데이터베이스 연결의 최대 개수입니다. 슈퍼 사용자에 대해서는 이 제한이 적용되지 않습니다. 최대 동시 연결 수를 허용하려면 UNLIMITED 키워드를 사용하십시오. 각 데이터베이스에 대한 연결 개수 제한이 적용될 수도 있습니다. 자세한 내용은 데이터베이스 생성 단원을 참조하십시오. 기본값은 UNLIMITED입니다. 현재 연결을 보려면 STV_SESSIONS 시스템 뷰를 쿼리하십시오.
참고
사용자 및 데이터베이스 연결 제한이 모두 적용되는 경우 사용되지 않는 연결 슬롯은 사용자가 연결 시도 시 양쪽 제한 범위 내에서 모두 사용 가능해야 합니다.
- SESSION TIMEOUT limit
-
세션이 비활성 또는 유휴 상태로 유지되는 최대 시간(초)입니다. 범위는 60초(1분)~1,728,000초(20일)입니다. 사용자에 대해 세션 시간 제한이 설정되지 않은 경우 클러스터 설정이 적용됩니다. 자세한 내용은 Amazon Redshift 관리 가이드의 Amazon Redshift의 할당량 및 제한 섹션을 참조하세요.
세션 시간 제한을 설정하면 새 세션에만 적용됩니다.
시작 시간, 사용자 이름 및 세션 시간 제한을 포함하여 활성 사용자 세션에 대한 정보를 보려면 STV_SESSIONS 시스템 뷰를 쿼리합니다. 사용자 세션 기록에 대한 정보를 보려면 STL_SESSIONS 뷰를 쿼리합니다. 세션 시간 제한 값을 포함하여 데이터베이스 사용자에 대한 정보를 검색하려면 SVL_USER_INFO 뷰를 쿼리합니다.
- EXTERNALID external_id
-
자격 증명 공급자와 연결된 사용자의 식별자입니다. 사용자는 암호를 비활성화해야 합니다. 자세한 내용은 Amazon Redshift용 네이티브 자격 증명 공급자(IdP) 페더레이션을 참조하세요.
사용 노트
기본적으로, 모든 사용자는 PUBLIC 스키마에 대해 CREATE 및 USAGE 권한이 있습니다. 사용자가 데이터베이스의 PUBLIC 스키마에 객체를 만들도록 허용하지 않으려면 REVOKE 명령을 사용하여 그 권한을 제거하십시오.
IAM 인증을 이용해 데이터베이스 사용자 자격 증명을 만들 때는 임시 자격 증명만을 이용해 로그인할 수 있는 수퍼유저를 만들 수 있습니다. 수퍼유저의 암호를 비활성화할 수는 없지만 임의로 생성되는 MD5 해시 문자열을 이용해 알 수 없는 암호를 만들 수는 있습니다.
create user iam_superuser password 'md5A1234567890123456780123456789012' createuser;
큰따옴표로 묶여 있는 사용자 이름의 대/소문자는 enable_case_sensitive_identifier
구성 옵션 설정과 관계없이 항상 유지됩니다. 자세한 내용은 enable_case_sensitive_identifier 단원을 참조하십시오.
예시
다음 명령은 이름이 dbuser이고 암호가 "abcD1234"이며 데이터베이스 생성 권한이 있고 연결 제한이 30인 사용자를 생성합니다.
create user dbuser with password 'abcD1234' createdb connection limit 30;
PG_USER_INFO 카탈로그 테이블을 쿼리하여 데이터베이스 사용자에 대한 세부 정보를 봅니다.
select * from pg_user_info;
usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig | useconnlimit -----------+----------+-------------+----------+-----------+----------+----------+-----------+------------- rdsdb | 1 | true | true | true | ******** | infinity | | adminuser | 100 | true | true | false | ******** | | | UNLIMITED dbuser | 102 | true | false | false | ******** | | | 30
다음 예에서는 계정 암호가 2017년 6월 10일까지 유효합니다.
create user dbuser with password 'abcD1234' valid until '2017-06-10';
다음 예에서는 특수 문자를 포함하고 대/소문자를 구분하는 암호를 가진 사용자를 생성합니다.
create user newman with password '@AbC4321!';
MD5 암호에 백래시('\')를 사용하려면 원본 문자열에 있는 백래시로 백래시를 이스케이프하십시오. 다음 예에서는 이름이 slashpass
이고 암호가 단일 백래시('\
')인 사용자를 생성합니다.
select md5('\\'||'slashpass');
md5 -------------------------------- 0c983d1a624280812631c5389e60d48c
md5 비밀번호로 사용자를 생성합니다.
create user slashpass password 'md50c983d1a624280812631c5389e60d48c';
다음 예에서는 유휴 세션 시간 제한이 120초로 설정된 dbuser
라는 사용자를 생성합니다.
CREATE USER dbuser password 'abcD1234' SESSION TIMEOUT 120;
다음 예에서는 이름이 bob
인 사용자를 생성합니다. 네임스페이스는 myco_aad
입니다. 이것은 예시입니다. 명령을 성공적으로 실행하려면 등록된 ID 공급업체가 있어야 합니다. 자세한 내용은 Native identity provider (IdP) federation for Amazon Redshift(Amazon Redshift용 네이티브 자격 증명 공급자(IdP) 페더레이션)를 참조하세요.
CREATE USER myco_aad:bob EXTERNALID "ABC123" PASSWORD DISABLE;