Snowflake Postgres 역할

Postgres에는 데이터베이스에 대한 연결을 관리하고 Postgres 서버에서 데이터베이스를 사용하기 위한 자체 역할 기반 인증이 있습니다. 이러한 역할은 Snowflake 역할과 별개입니다. Postgres 역할은 Snowflake Postgres 인스턴스 내의 데이터베이스, 테이블 및 기타 오브젝트에 액세스하고 관리하는 데 사용됩니다.

인스턴스를 생성하는 경우 Snowflake는 사용자가 사용할 수 있는 두 개의 특수 관리 역할을 자동으로 생성하며, 이에 대한 설명은 아래에 설명되어 있습니다.

Postgres 역할 관리에 대한 자세한 내용은 `Postgres 설명서<https://www.postgresql.org/docs/current/user-manag.html>`_를 참조하세요.

참고

여기뿐만 아니라 다른 많은 곳에서, Postgres 사용자 관리의 맥락에서 “역할”과 “사용자”라는 용어가 서로 바꿔서 사용되는 것을 볼 수 있습니다. 이는 Postgres 사용자가 단순히 postgres 역할 LOGIN 특성을 가진 역할이기 때문입니다.

Snowflake Postgres 관리 역할

Snowflake Postgres는 인스턴스를 생성함과 동시에 두 개의 관리 역할을 자동으로 생성합니다.

snowflake_admin 역할

snowflake_admin 역할은 Snowflake Postgres 인스턴스를 관리하는 데 사용되는 상위 권한의 Postgres 역할입니다. 이는 전체 Postgres 수퍼 사용자가 아니며, 일부 작업은 계속 제한되고 Snowflake에서 관리합니다. 그러나 다음을 포함하는 상승된 권한이 있습니다.

  • Postgres 역할 생성 및 관리.

  • 데이터베이스 생성 및 관리.

  • Snowflake Postgres 인스턴스의 복제 관리.

  • 행 수준 보안(RLS) 우회 정책(해당되는 경우).

또한, ``snowflake_admin``은 다음을 포함하여 모니터링 및 운영 기능을 부여하는 여러 Postgres 기본 제공 역할의 구성원입니다.

  • pg_signal_backend

  • pg_use_reserved_connections

  • pg_create_subscription

  • pg_read_all_settings

  • pg_read_all_stats

  • pg_stat_scan_tables

  • pg_monitor

  • snowflake_admin_group

application 역할

application 역할은 기본적으로 postgres 데이터베이스에서 오브젝트를 생성할 수 있는 권한을 가진, 수퍼 사용자가 아닌 역할입니다. 이 역할에 대한 새 권한 또는 소유권은 snowflake_admin 역할에서 부여해야 합니다.

Postgres 비밀번호 보안

Snowflake Postgres 관리 역할에 대한 자격 증명 다시 생성하기

snowflake_adminapplication 역할의 자격 증명은 인스턴스를 생성할 때 생성되며 한 번만 표시됩니다. 이러한 자격 증명은 언제든지 다시 생성하여 기존 자격 증명을 무효화할 수 있습니다.

대시보드에서 인스턴스 snowflake_admin 역할의 자격 증명을 다시 생성할 수 있습니다.

  1. 탐색 메뉴에서 Postgres 를 선택합니다.

  2. 인스턴스를 선택합니다.

  3. 오른쪽 상단의 Manage 메뉴에서 :ui:`Regenerate credentials`를 선택합니다.

  4. Acknowledge & continue 버튼을 클릭하여 작업을 확인합니다.

다른 Postgres 역할의 비밀번호 설정하기

Snowflake Postgres 인스턴스는 scram-sha-256 비밀번호 인증을 위해 구성됩니다. 새 비밀번호가 설정되면 서버에서 scram-sha-256 해시가 생성되어 저장되지만, Postgres log_statement 매개 변수가 none 이외의 값으로 설정된 다음 CREATEROLE 및 ALTER ROLE DDL 명령은 Postgres 서버 로그에 완전히 기록됩니다. 따라서 일반 텍스트 비밀번호가 해당 문의 일부로 기록되지 않도록 해야 합니다.

CREATE ROLE 및 ALTER ROLE Postgres DDL 명령에 대한 문 로깅 비활성화하기

CREATE ROLE 및 ALTER ROLE DDL 문에서 사용되는 일반 텍스트 비밀번호가 Postgres 서버 로그에 표시되지 않도록 방지하는 가장 간단한 방법은 SET LOCAL을 사용하여 실행하는 트랜잭션에 대해 log_statement 매개 변수를 비활성화하는 것입니다.

BEGIN;
SET LOCAL log_statement = 'none';
CREATE USER mynewrole PASSWORD 'mynewpassword';
COMMIT;
Copy

psql Postgres 클라이언트의 \password 명령 사용하기

Postgres psql 클라이언트 프로그램에는 기존 사용자의 비밀번호를 변경하는 데 사용할 수 있는 password<https://www.postgresql.org/docs/current/app-psql.html>_ 메타 명령이 있습니다. \password 메타 명령은 입력된 비밀번호의 scram-sha-256 해시를 미리 계산하고 이를 서버로 전송되는 ALTER ROLE 명령에 사용합니다. 이 방법을 사용하려면 먼저 비밀번호 없이 새 사용자를 생성한 다음 psql \password 메타 명령을 사용하여 각 사용자의 비밀번호를 설정합니다.

postgres=# CREATE ROLE mynewrole LOGIN;
CREATE ROLE

postgres=# \password mynewrole
Enter new password for user "mynewrole":
Enter it again:
Copy

log_statement``가 ``'none' 이외의 값으로 설정된 경우 위의 \password 명령에 대해 ``psql``에서 전송한 ALTER ROLE 명령에 대한 로그 항목에는 실제 일반 텍스트 비밀번호 대신 계산된 scram-sha-256 해시가 있습니다. 위에 설명된 대로 이 방법을 ``log_statement``의 완전한 비활성화와 결합하여 해시가 Postgres 로그에 표시되지 않도록 방지할 수 있습니다.

postgres=# CREATE ROLE mynewrole LOGIN;
CREATE ROLE

postgres=# BEGIN;
BEGIN

postgres=# SET LOCAL log_statement = 'none';
SET

postgres=# \password mynewrole
Enter new password for user "mynewrole":
Enter it again:

postgres=# COMMIT;
COMMIT
Copy

비밀번호 유출 방지

Leaked password protection is provided for roles on Snowflake Postgres instances. Discovery and notification work as described in our main 비밀번호 유출 방지. When Snowflake discovers a leaked password for one of your Snowflake Postgres roles:

  • 해당 역할은 향후 로그인을 방지하기 위해 특수 snowflake_nologin Postgres 그룹 역할에 추가됩니다.

  • 해당 역할에 대한 모든 기존 연결이 종료됩니다.

  • 수신되는 이메일 알림 제목에 “긴급 - 무단 액세스 방지를 위한 Snowflake Postgres 역할 비밀번호 재설정”이 포함됩니다.

Should you receive this email you should immediately securely update the role’s password as described above. When regenerating credentials for managed roles they are automatically removed from the snowflake_nologin Postgres role group. For non-managed roles, after updating the role’s password they can be removed from the snowflake_nologin group role by running this Postgres with the snowflake_admin role:

REVOKE snowflake_nologin FROM {rolename};
Copy

역할 제한 사항

Snowflake Postgres에서 특정 작업은 서비스 자체를 위해 예약되며 ``snowflake_admin``을 포함하여 고객 관리 역할이 수행할 수 없습니다. 몇 가지 예는 다음과 같습니다.

  • Snowflake에서 관리하는 보호된 서버 수준 구성 매개 변수 변경.

  • 핵심 Snowflake 관리 구성 요소나 확장 프로그램 수정 또는 비활성화.

  • 서비스에서 사용하는 Snowflake 관리 시스템 데이터베이스나 스키마 액세스 또는 변경.

  • Snowflake Postgres 인스턴스 파일 시스템 액세스 또는 변경.

  • 시스템 카탈로그 테이블의 직접 수정.

  • 다른 수퍼 사용자 생성.

  • 인스턴스에서 64개 이상의 역할 생성.

  • 인스턴스에서 32개 이상의 데이터베이스 생성.

  • ALTER SYSTEM 명령의 실행.

  • 파일 시스템 액세스를 허용하는 Postgres의 `일반 파일 액세스 함수<https://www.postgresql.org/docs/current/functions-admin.html#FUNCTIONS-ADMIN-GENFILE>`_에 대한 액세스 권한.

Snowflake Postgres 확장 프로그램은 인스턴스 내에서 snowflake_adminapplication 모두 수행할 수 있는 작업에 추가 제한 사항을 도입할 수 있습니다. 이러한 확장 프로그램별 제한 사항은 시간이 지남에 따라 진화할 수 있으며 해당 확장 프로그램 동작과 함께 문서화됩니다. 작업이 차단되면 Snowflake Postgres에서 허용되지 않는다는 오류 메시지가 표시됩니다.