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-258 해시가 생성되어 저장되지만, Postgres `log_statement<https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-STATEMENT>`_ 매개 변수가 none 이외의 값으로 설정되면 CREATE ROLE 및 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<https://www.postgresql.org/docs/current/app-psql.html>`_에는 입력된 비밀번호의 scram-sha-256 해시를 미리 계산하고 서버로 전송된 ALTER ROLE 명령에 사용하는 기존 사용자의 비밀번호를 변경하는 사용할 있는 `password <https://www.postgresql.org/docs/current/app-psql.html>_ 메타 명령이 있습니다. 이 방법을 사용하려면 먼저 비밀번호 없이 새 사용자를 생성한 후 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

역할 제한 사항

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_admin``application``이 수행할 수 있는 작업에 추가 제한 사항을 도입할 수 있습니다. 이러한 확장 프로그램별 제한 사항은 시간이 지남에 따라 진화할 수 있으며 해당 확장 프로그램 동작과 함께 문서화됩니다. 작업이 차단되면 Snowflake Postgres에서 허용되지 않는다는 오류가 표시됩니다.