Amazon Redshift는 2025년 11월 1일부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. Python UDF를 사용하려면 이 날짜 이전에 UDF를 생성하세요. 기존 Python UDF는 정상적으로 계속 작동합니다. 자세한 내용은 블로그 게시물
CREATE USER
새 데이터베이스 사용자를 생성합니다. 데이터베이스 사용자는 권한 및 역할에 따라 데이터베이스에서 데이터를 검색하고, 명령을 실행하고, 기타 작업을 수행할 수 있습니다. 이 명령을 실행하려면 데이터베이스 슈퍼 사용자여야 합니다.
필수 권한
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;