CREATE MULTI PARTY APPROVAL POLICY

CREATE MULTI PARTY APPROVAL POLICY

현재 또는 지정한 스키마에 새 Multi-party Approval 정책을 만들거나 기존 정책을 교체하는 명령이에요. Multi-party Approval 정책은 중요한 계정 작업이 적용되기 전에 추가 승인된 사용자의 승인을 요구하는 규칙을 정의해요.

출처: 문서

본문

현재 또는 지정한 스키마에 새 Multi-party Approval 정책을 만들거나 기존 Multi-party Approval 정책을 교체해요. Multi-party Approval 정책은 중요한 계정 작업이 적용되기 전에 추가 승인된 사용자의 승인을 요구하는 규칙을 정의해요.

구문 (Syntax)

CREATE [ OR REPLACE ] MULTI PARTY APPROVAL POLICY [ IF NOT EXISTS ] <name>
  AS $$
  [ description: '<description>' ]
  rules:
    - name: <rule_name>
      [ description: '<description>' ]
      operations: ( <operation> [ , <operation> , ... ] )
      approvers:
        users: ( '<username>' [ , '<username>' , ... ] )
      [ required_approvals: <integer> ]
      [ request_duration_days: <integer> ]
      [ self_approval_allowed: { true | false } ]
  $$

필수 매개변수 (Required parameters)

name Multi-party Approval 정책의 식별자를 지정해요.

또한 식별자는 반드시 알파벳 문자로 시작해야 하며, 전체 식별자 문자열이 큰따옴표로 묶이지 않는 한 공백이나 특수 문자를 포함할 수 없어요 (예: "My object"). 큰따옴표로 묶인 식별자는 대소문자를 구분해요.

자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고해요.

AS $$ ... $$ 정책의 승인 규칙을 정의하는 YAML 본문이에요.

정책 매개변수 (Policy parameters)

description: 'description' 정책의 선택적인 설명이에요.

rules: 하나 이상의 승인 규칙 목록이에요. 각 규칙은 어떤 작업에 승인이 필요한지, 누가 승인할 수 있는지를 지정해요.

규칙 매개변수 (Rule parameters)

rules 목록의 각 규칙은 다음 매개변수를 지원해요.

필수 규칙 매개변수

name: rule_name 정책 안에서 이 규칙의 고유 이름이에요.

operations: ( operation [ , operation , ... ] ) 이 규칙이 관리하는 보호 작업 목록이에요. 사용자가 이 작업 중 하나를 시도하면 다른 승인된 사용자가 요청을 승인한 뒤에 실행돼요.

각 작업에 대한 자세한 내용은 보호 작업(Protected operations)을 참고해요. 그룹별 유효한 값:

관리자 작업 (Admin operations)

  • MODIFY_MULTI_PARTY_APPROVAL — Multi-party Approval 정책·규칙·계정 설정·승인자 할당의 변경(정책을 계정에 연결/연결 해제 포함)에 승인이 필요해요. 이 작업은 단일 로그온을 제어하고 따라서 승인자로 인증할 수 있는 사람을 제어하는 SAML2 보안 인티그레이션의 생성·수정·삭제도 포함해요.
    • ⚠️ 중요: 모든 정책은 operations 목록에 MODIFY_MULTI_PARTY_APPROVAL을 포함하는 규칙을 최소 하나 가져야 해요. 이 자체 보호 규칙은 손상된 관리자가 Multi-party Approval 자체를 단독으로 비활성화하거나 수정하는 것을 방지해요.

  • DISABLE_MULTI_FACTOR_AUTHENTICATION — Multi-Factor Authentication 비활성화 또는 사용자 비밀번호 재설정에 승인이 필요해요.
  • MODIFY_TRI_SECRET_SECURE — Tri-Secret Secure 고객 관리 암호화 키의 활성화·비활성화에 승인이 필요해요. 이 작업은 Business Critical Edition(또는 그 이상)이 필요해요.
    • 참고: 이 작업이 있는 정책이 계정에 연결된 지 72시간이 지나면 Tri-Secret Secure 작업에 대한 속도 완충(speed bump)이 더 이상 필요하지 않아요.

  • MODIFY_PRIVILEGED_ROLE_GRANTSACCOUNTADMIN 또는 SECURITYADMIN 역할 부여·회수, 그리고 MANAGE GRANTS 권한 부여·회수에 승인이 필요해요.
  • MODIFY_CORTEX_GUARDRAILS — 계정의 Cortex AI 가드레일(guardrail) 설정 수정에 승인이 필요해요.
  • MODIFY_DATA_RETENTION_TIME — 계정·데이터베이스·스키마·테이블의 DATA_RETENTION_TIME_IN_DAYS(Time Travel) 매개변수 수정에 승인이 필요해요.

정책 작업 (Policy operations)

  • MODIFY_NETWORK_POLICY — 계정과 사용자의 활성 네트워크 정책·네트워크 규칙·정책 할당 변경에 승인이 필요해요.
  • MODIFY_SESSION_POLICY — 계정과 사용자의 세션 정책 설정·할당 수정에 승인이 필요해요.
  • MODIFY_AUTHENTICATION_POLICY — 계정과 사용자의 인증 정책 설정·할당 수정에 승인이 필요해요.
  • MODIFY_PASSWORD_POLICY — 계정과 사용자의 비밀번호 정책 설정·할당 수정에 승인이 필요해요.

보안 인티그레이션 작업 (Security integration operations)

  • MODIFY_OAUTH_INTEGRATION — Snowflake OAuth 보안 인티그레이션의 생성·수정·삭제에 승인이 필요해요.
  • MODIFY_EXTERNAL_OAUTH_INTEGRATION — External OAuth 보안 인티그레이션의 생성·수정·삭제에 승인이 필요해요.
  • MODIFY_SCIM_INTEGRATION — SCIM 보안 인티그레이션의 생성·수정·삭제에 승인이 필요해요.

approvers: 이 규칙에 따라 요청을 승인할 권한이 있는 사용자를 지정해요.

users: ( 'username' [ , 'username' , ... ] ) 이 규칙의 요청을 승인할 수 있는 Snowflake 사용자 이름(따옴표로 묶인 문자열) 목록이에요.

선택 규칙 매개변수

description: 'description' 규칙의 목적에 대한 사람이 읽을 수 있는 설명이에요.

required_approvals: integer 보호 작업이 승인되기 전에 필요한 승인 수예요. approvers.users 목록의 사용자 수보다 작거나 같아야 해요.

  • 기본값: 2

request_duration_days: integer 승인 요청이 만료되기 전에 열려 있는 일수예요. 이 기간 안에 필요한 승인을 받지 못하면 요청이 만료되고 새 요청을 만들어야 해요.

  • 기본값: 3

self_approval_allowed: { true | false } 보호 작업을 시작한 사용자가 승인자 목록에 있다면 자신의 요청을 승인할 수 있는지 여부를 지정해요.

  • 기본값: true

접근 제어 요구 사항 (Access control requirements)

이 작업을 실행하는 데 사용하는 역할(role)은 최소한 다음 권한을 가져야 해요.

권한 (Privilege) 객체 (Object) 비고
CREATE MULTI PARTY APPROVAL POLICY Schema

스키마 안의 객체를 작업하려면 상위 데이터베이스에 대한 권한이 최소 하나, 상위 스키마에 대한 권한이 최소 하나 필요해요.

지정된 권한 집합으로 사용자 지정 역할을 만드는 방법은 사용자 지정 역할 만들기(Creating custom roles)를 참고해요. 보호 가능한 객체에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여의 일반적인 내용은 접근 제어 개요(Overview of Access Control)를 참고해요.

사용 메모 (Usage notes)

Multi-party Approval 정책을 만든 뒤에는 ALTER ACCOUNT 명령으로 Snowflake 계정에 연결해요.

규칙의 operations 목록은 비어 있을 수 없어요. 각 규칙은 최소 하나의 작업을 관리해야 해요.

각 작업은 정책 안의 최대 하나의 규칙에 나타날 수 있어요. 같은 작업을 같은 정책의 여러 규칙에 할당하면 오류가 발생해요.

기존 정책을 교체해야 하고 현재 정의를 확인해야 한다면 DESCRIBE MULTI PARTY APPROVAL POLICY 명령을 실행해요.

OR REPLACEIF NOT EXISTS 절은 서로 배타적이에요. 같은 문에서 둘 다 사용할 수 없어요.

CREATE OR REPLACE <object> 문은 원자적(atomic)으로 동작해요. 즉, 객체를 교체할 때 기존 객체는 삭제되고 새 객체는 단일 트랜잭션 안에서 생성돼요.

예시 (Examples)

정책 자체에 대한 변경을 승인하려면 두 번째 관리자가 필요하도록 하는 단일 규칙 정책을 만들어요.

CREATE MULTI PARTY APPROVAL POLICY security_db.policies.mpa_policy
AS $$
rules:
  - name: self_protection_rule
    description: "Self Protection MPA Rule"
    operations: [MODIFY_MULTI_PARTY_APPROVAL]
    approvers:
      users: ['ADMIN1', 'ADMIN2']
$$;

다중 규칙 정책을 만들어요. 두 번째 규칙은 세 번의 승인이 필요하고 요청자가 자신의 요청을 승인할 수 없어요.

CREATE MULTI PARTY APPROVAL POLICY security_db.policies.mpa_policy
AS $$
rules:
  - name: self_protection_rule
    description: "Self Protection MPA Rule"
    operations: [MODIFY_MULTI_PARTY_APPROVAL]
    approvers:
      users: ['ADMIN1', 'ADMIN2']

  - name: tss_rule
    description: "TSS Rule"
    operations: [MODIFY_TRI_SECRET_SECURE, MODIFY_NETWORK_POLICY]
    approvers:
      users: ['ADMIN1', 'ADMIN2', 'ADMIN3']
    required_approvals: 3
    request_duration_days: 2
    self_approval_allowed: false
$$;

더 알아보기 (Learn more)