연락처(Contacts) 사용하기

연락처(Contacts) 사용하기

연락처(Contacts)는 특정 목적을 위해 연락할 수 있는 사용자 또는 사용자 그룹에 대한 세부 정보를 담는 스키마 수준 객체예요. 예를 들어 data_stewards라는 연락처는 이메일 메일링 리스트를 담고, support_department라는 연락처는 부서 웹사이트의 URL을 담을 수 있어요.

출처: Using Contacts

본문

연락처는 데이터베이스나 테이블 같은 다른 객체와 연결할 수 있어서, 해당 객체에 대한 도움이 필요할 때 적절한 사람에게 연락할 수 있어요. 예를 들어 테이블에 대한 접근을 얻는 데 도움을 줄 수 있는 사용자들을 담은 연락처가 그 테이블에 있을 수 있어요. 연락처의 목적은 연락처 자체의 속성이 아니라, 연락처와 특정 객체 사이의 연결(association)이에요. 예를 들어 같은 연락처가 한 테이블에는 일반 지원을 제공하고 다른 테이블에는 접근 승인을 제공할 수 있어요.

객체는 각 연락처의 목적이 객체마다 고유한 한 여러 연락처를 가질 수 있어요. 예를 들어 테이블이 테이블에 대한 접근을 부여하는 연락처 하나와 테이블에 대한 일반 지원을 제공하는 연락처 하나를 가질 수 있어요. 사용자가 객체에 연결된 연락처를 볼 때 각 연락처의 목적과 연락 수단을 함께 보게 되어, 특정 사유로 누구에게 어떻게 연락해야 하는지 알 수 있어요.

데이터 사용자들은 Snowsight의 Horizon Catalog Explorer를 사용해 데이터베이스, 스키마, 테이블형 객체를 탐색할 때 이러한 연락처를 볼 수 있어요. 사용자에게 알림을 보내는 Snowflake 기능은 객체에 연결된 연락처를 사용해 사용자들과 소통할 수 있어요.

연락처 상속과 재정의

연락처는 하위 객체(descendant objects)에 상속돼요. 한 객체에 연락처를 연결하면 그 객체의 자식, 손자 등이 연락처를 상속해요. 예를 들어 스키마에 연락처를 연결하면 기본적으로 스키마 안의 모든 테이블이 그 연락처를 상속해요.

자식 객체에 같은 목적의 연락처가 있으면 연락처 상속이 재정의(override)돼요. 예를 들어 누군가 테이블 t1을 담은 ac_sch 스키마에 다음 두 연락처를 연결했다고 가정해 보세요.

연락처 목적
data_stewards 스튜어드(Steward)
business_unit1 승인자(Approver)

이제 누군가 접근 승인 목적으로 연락처 finance_dept를 t1에 연결했다고 가정해 보세요. t1에 연결된 연락처는 이제 다음과 같아요.

연락처 목적
data_stewards 스튜어드
finance_dept 승인자

ac_sch에서 접근 승인을 담당하던 연락처가 t1에 직접 연결된 연락처로 바뀌었지만, t1은 스키마로부터 data_stewards 연락처를 계속 상속해요.

상속 계층에서 더 아래의 연결로 재정의되지 않는 한, 모든 객체는 계정에 설정된 연락처를 상속해요.

지원되는 객체

연락처를 다음 객체와 연결할 수 있어요.

  • 데이터베이스(Database)
  • 동적 테이블(Dynamic table)
  • 이벤트 테이블(Event table)
  • 외부 테이블(External table)
  • Iceberg 테이블
  • 구체화된 뷰(Materialized view)
  • 스키마(Schema)
  • 테이블(Table)
  • 태스크(Task)
  • 뷰(View)

연락처 만들기

연락처를 만들 때 연락처의 이름과 연락 방법을 지정해요. 연락 수단에는 다음이 있어요.

  • 웹사이트의 URL.
  • 이메일 주소(메일링 리스트일 수 있음).
  • Snowflake 사용자 목록.

연락처는 Snowsight 또는 SQL을 사용해 만들 수 있어요.

팁 모든 연락처를 전용 스키마에 만드는 것이 도움이 될 수 있어요.

Snowsight:

Snowsight에 로그인해요. 탐색 메뉴에서 Catalog › Explorer를 선택해요. 연락처를 만들 스키마로 이동해요. Create › Contact를 선택해요. 연락처의 이름을 지정해요. 연락 수단을 선택한 뒤, 객체에 대한 도움으로 연락할 수 있는 사람들의 이메일 주소, 사용자 또는 URL을 지정해요. 연락처를 객체와 연결할 수 있는 역할을 선택해요. 이 역할들은 연락처에 대한 APPLY 권한을 부여받아요. Create를 선택해요.

SQL:

CREATE CONTACT 명령을 실행해 새 연락처를 만들 수 있어요.

예시

웹사이트를 통해 연락하는 지원 팀용 연락처 만들기:

CREATE CONTACT support_dept URL = 'http://internalsupport.example.com';

메일링 리스트 역할을 하는 이메일 주소를 통해 연락하는 재무 팀용 연락처 만들기:

CREATE CONTACT finance_dept EMAIL_DISTRIBUTION_LIST = '[email protected]';

Snowflake 사용자 객체의 이름으로 식별되는 데이터베이스 관리자용 연락처 만들기:

CREATE CONTACT db_admins USERS = ('ex_admin1', 'ex_admin2');

연락처를 객체에 연결하기

연락처를 객체에 연결할 때 연락처의 이름과 연락처-객체 연결의 목적을 지정해요. 사용자가 객체에 연결된 모든 연락처를 볼 때 각 연락처의 목적에 따라 누구와 소통할지 결정할 수 있어요. Snowflake 기능이 연락처를 사용해 사람들에게 연락한다면 목적에 따라 올바른 연락처를 선택할 수 있어요.

객체에 연결된 연락처의 목적은 다음 중 하나일 수 있어요.

목적 설명 SQL 값
승인자(Approver) 데이터에 대한 접근 요청을 승인하거나 거부해요. ACCESS_APPROVAL
보안 및 규정 준수(Security and compliance) 보안 및 규정 준수 업데이트를 받아요. SECURITY_COMPLIANCE
데이터 스튜어드(Data steward) 데이터의 정확성, 일관성, 신뢰성에 대한 정보를 제공해요. STEWARD
지원(Support) 데이터셋과 관련된 기술 지원을 제공해요. SUPPORT

기존 객체를 수정하거나 새 객체를 만들 때 연락처를 연결하고 그 목적을 정의할 수 있어요.

기존 객체에 연락처 연결하기

Snowsight:

Snowsight에 로그인해요. 탐색 메뉴에서 Catalog › Explorer를 선택해요. 지원되는 객체 중 하나로 이동해요. Details 탭을 선택해요. Assigned Contacts 섹션을 찾아 Edit 아이콘을 선택해요. 하나 이상의 목적에 대해 연락처를 선택해요. 예를 들어 Approver 드롭다운 목록에서 연락처를 선택하면 데이터 사용자들이 해당 객체에 대한 접근이 필요할 때 그 연락처로 연락해요. Save를 선택해요.

SQL:

기존 객체에 대한 ALTER … SET CONTACT 명령을 사용하면 연락처를 연결하고 해당 객체에 대한 연락처의 목적을 지정할 수 있어요. 연락처를 연결하는 구문은 연락처와 연결할 수 있는 모든 객체에 동일해요.

ALTER <object_type> <object_name> SET CONTACT <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ]

목적은 연락처와 객체의 관계를 설명하는 사전 정의된 목적 중 하나여야 해요. 사용자가 객체의 연락처를 볼 때 목적을 사용해 어떤 연락처와 소통할지 결정해요.

예시

테이블에 대한 접근이 필요할 때 누구에게 연락할지 사용자들이 알 수 있도록 finance_dept 연락처를 테이블에 연결해요.

ALTER TABLE t1 SET CONTACT ACCESS_APPROVAL = finance_dept;

Snowflake 기능이 보안 및 규정 준수 관련 업데이트를 보낼 수 있도록 security_officers 연락처를 계정에 연결해요.

ALTER ACCOUNT SET CONTACT SECURITY_COMPLIANCE = security_officers;

스키마 안 테이블의 객체 태깅에 관해 누구에게 연락할지 사용자들이 알 수 있도록 data_stewards 연락처를 스키마에 연결해요.

ALTER SCHEMA sch1 SET CONTACT STEWARD = data_stewards;

주의 기존 Iceberg 테이블, 외부 테이블 또는 동적 테이블에 연락처를 설정하려면 ALTER TABLE 명령을 사용해야 해요.

새 객체를 만들 때 연락처 연결하기

CREATE … WITH CONTACT 명령을 사용하면 새 객체에 연락처를 연결할 수 있어요. WITH CONTACT 절의 구문은 연락처와 연결할 수 있는 모든 객체에 동일해요.

WITH CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] )

목적은 연락처와 객체의 관계를 설명하는 사전 정의된 목적 중 하나여야 해요. 사용자가 객체의 연락처를 볼 때 목적을 사용해 어떤 연락처와 소통할지 결정해요.

테이블과 테이블형 객체의 경우 WITH CONTACT 절은 열 정의 뒤에 지정해요.

조직 관리자(organization administrator)는 계정을 만들 때 연락처를 연결할 수 없어요.

예시

테이블에 대한 접근이 필요할 때 누구에게 연락할지 사용자들이 알 수 있도록 finance_dept 연락처를 새 테이블에 연결해요.

CREATE TABLE t1 (col1 VARCHAR, col2 INT) WITH CONTACT (ACCESS_APPROVAL = finance_dept);

스키마 안 테이블의 객체 태깅에 관해 누구에게 연락할지 사용자들이 알 수 있도록 data_stewards 연락처를, 접근이 필요할 때 누구에게 연락할지 알 수 있도록 finance_dept 연락처를 새 스키마에 연결해요.

CREATE SCHEMA sch1 WITH CONTACT (STEWARD = data_stewards, ACCESS_APPROVAL = finance_dept);

객체에서 연락처 분리하기

Snowsight:

Snowsight에 로그인해요. 탐색 메뉴에서 Catalog › Explorer를 선택해요. 객체로 이동해요. Details 탭을 선택해요. Assigned Contacts 섹션을 찾아 Edit 아이콘을 선택해요. 분리할 연락처가 있는 목적(예: Approver)을 찾고 드롭다운 목록에서 None을 선택해요. Save를 선택해요.

SQL:

ALTER … UNSET CONTACT 명령으로 객체에서 연락처를 분리할 수 있어요. 연락처를 분리하는 구문은 연락처와 연결할 수 있는 모든 객체에 동일해요.

ALTER <object_type> <object_name> UNSET CONTACT <purpose>

분리할 연락처는 연락처 이름이 아니라 연락처-객체 연결의 목적을 지정해 식별해요. 연락처 분리에 지정할 수 있는 가능한 목적의 목록은 사전 정의된 목적을 참고하세요.

예를 들어 테이블의 STEWARD로 추가된 연락처를 분리하려면 다음을 실행해요.

ALTER TABLE t1 UNSET CONTACT STEWARD;

주의 기존 Iceberg 테이블, 외부 테이블 또는 동적 테이블에서 연락처를 unset하려면 ALTER TABLE 명령을 사용해야 해요.

객체의 연락처 보기

Snowsight:

Snowsight에서 객체로 이동하면 객체에 연결된 연락처가 Details 탭에 표시돼요.

SQL:

객체에 대해 하나 이상의 권한이 있는 사용자는 GET_CONTACTS 테이블 함수를 사용해 해당 객체에 연결된 연락처를 볼 수 있어요. 이 함수는 객체에 연결된 각 연락처마다 행을 하나 반환해요.

예를 들어 테이블 t1의 연락처를 나열하려면 하나 이상의 권한이 있는 사용자가 다음을 실행할 수 있어요.

SELECT * FROM TABLE(SNOWFLAKE.CORE.GET_CONTACTS('t1', 'TABLE'));

이 함수는 각 연락처에 대해 다음을 나열해요.

  • 연락처의 목적.
  • 연락처의 연락 수단.
  • 연락처가 객체에 직접 연결되었는지, 상위 객체에서 상속되었는지 여부.

연락처 및 연결 관리

Snowsight:

스키마에서 생성된 연락처를 나열하고 특정 연락처의 세부 정보로 드릴다운하려면:

  1. Snowsight에 로그인해요.
  2. 탐색 메뉴에서 Catalog › Explorer를 선택한 뒤 스키마를 선택해요.
  3. Contacts 탭을 선택해요.
  4. 세부 정보(연결된 객체 포함)를 보려면 연락처를 선택해요.

SQL:

ACCOUNT_USAGE 스키마는 연락처 관리를 돕는 다음 뷰를 제공해요.

  • CONTACTS 뷰 — 계정의 모든 연락처를 나열해요.
  • CONTACT_REFERENCES 뷰 — 연락처가 연결된 객체를 나열해요.

접근 제어 권한

다음은 사용자가 연락처로 작업하는 데 필요한 권한을 요약한 것이에요.

작업 필요한 권한
연락처 만들기 다음 모두: 스키마에 대한 CREATE CONTACT, 스키마와 데이터베이스에 대한 USAGE
연락처를 객체에 연결 다음 중 하나: 계정에 대한 APPLY CONTACT, 연락처에 대한 APPLY 권한과 객체에 대한 OWNERSHIP
객체의 연락처 나열 객체에 대한 임의의 권한.
객체에서 연락처 분리 다음 중 하나: 계정에 대한 APPLY CONTACT, 연락처에 대한 APPLY 권한과 객체에 대한 OWNERSHIP
기존 연락처 수정 다음 중 하나: 연락처에 대한 OWNERSHIP, 연락처에 대한 MODIFY
연락처 삭제 연락처에 대한 OWNERSHIP

더 알아보기