클린룸 사용자와 접근 관리
클린룸 사용자와 접근 관리
클린룸 계정 관리자가 클린룸 UI와 API에 대한 사용자 접근을 관리하는 방법을 설명해요.
본문
지원 종료(EOL) 공지
레거시 Provider 및 Consumer 데이터 클린룸은 지원이 중단되고 있어요. 날짜와 마이그레이션 지침은 지원 종료 타임라인을 참고하세요.
이 항목은 클린룸 계정 관리자가 클린룸 UI와 API에 대한 사용자 접근을 관리하는 방법을 설명해요.
클린룸은 API와 UI의 다양한 하위 섹션에 접근을 허용하는 여러 애플리케이션 역할을 정의해요. 클린룸 UI와 API에 대한 접근은 별도로 부여돼요. 일반적으로 계정 관리자는 커스텀 역할을 만들고, UI와 API에 대한 세밀한 접근을 허용하도록 원하는 애플리케이션 역할을 부여한 뒤, 그 역할을 계정의 다양한 사용자에게 부여해요.
이 전략은 Snowflake 역할 기반 접근 제어(RBAC) 모델을 사용해 클린룸 사용자와 콜라보레이터에게 권한을 적절히 위임해요. RBAC에 대한 자세한 내용은 접근 제어 개요를 참고하세요. 특정 역할이 부여된 사용자를 보려면 다음 SQL 명령을 실행해요:
SHOW GRANTS OF ROLE <role_name>;
팁
이 항목은 다음 용어를 사용해요:
- 클린룸 사용자(Clean room users): Snowflake 계정에서 클린룸 UI 또는 API 접근이 부여된 사용자.
- 클린룸 콜라보레이터(Clean room collaborators): 클린룸 제공자가 클린룸에 참여하도록 초대한 소비자. 콜라보레이터는 또한 클린룸 사용자이기도 해요. 즉 초대를 수락하고 클린룸을 사용하려면 클린룸 UI나 API 접근 권한이 있어야 해요.
클린룸 UI 접근 관리
관리자는 Snowflake 계정에서 적절한 역할을 직접 또는 간접적으로 부여함으로써 클린룸 UI 접근을 부여해요. 관리자는 또한 UI 사용자에게 기본 웨어하우스를 배정하고 그 웨어하우스에 USAGE 권한을 부여해야 해요.
클린룸 UI를 관리하거나 접근할 권한을 부여하는 역할은 다음과 같아요:
- ACCOUNTADMIN: 클린룸 환경을 설치하거나 제거하는 데 사용되는 역할이에요. 이 역할은 또한 클린룸 UI의 Snowflake Admin 페이지 접근도 활성화해요. 계정 관리자는 이 페이지에서 서비스 사용자와 크로스 클라우드 자동 이행, 외부 및 Iceberg 테이블, UI 사용자용 데이터셋 등록 같은 계정 기능을 관리해요. 이 역할은 모든 클린룸 UI 권한을 가져요. ACCOUNTADMIN으로 실행하는 사용자는 추가 UI 애플리케이션 역할이 필요하지 않아요.
- MANAGE_CLEANROOMS: 클린룸을 생성·업데이트·삭제·설치하고, 클린룸 UI에서 분석을 생성·업데이트·삭제·실행할 수 있게 해주는 애플리케이션 역할이에요.
- MANAGE_DCR_PROFILE_AND_FEATURES: UI의 Admin 섹션에 있는 Profile & Features 페이지 접근을 제공하는 애플리케이션 역할이에요. 이 페이지에서 회사 프로필을 관리하고 클린룸에서 사용할 수 있는 제3자 커넥터를 제어할 수 있어요.
- MANAGE_DCR_CONNECTORS: UI의 Connectors 페이지 접근을 제공하는 애플리케이션 역할이에요. 이 페이지에서 제3자 커넥터를 구성할 수 있어요.
- MANAGE_DCR_COLLABORATORS: UI의 Collaborators 페이지 접근을 제공하는 애플리케이션 역할이에요. 이 페이지에서 UI의 클린룸 제공자가 사용할 수 있는 승인된 콜라보레이터 목록을 관리할 수 있어요. 이 역할은 API 사용 시 제공자에게 제공되는 콜라보레이터 목록을 제어하지 않아요. API 사용자는 누구든 콜라보레이션에 초대할 수 있어요. 자세한 내용은 클린룸 콜라보레이터 관리를 참고하세요.
예시:
다음 코드는 커스텀 역할을 만들고, 그 역할에 여러 UI 기능을 부여한 다음 커스텀 역할을 사용자에게 부여하는 방법을 보여줘요.
-- Create the role.
USE ROLE ACCOUNTADMIN;
CREATE ROLE dcr_access;
-- Grant capabilities to the new role.
GRANT APPLICATION ROLE SAMOOHA_BY_SNOWFLAKE.MANAGE_CLEANROOMS TO ROLE dcr_access;
GRANT APPLICATION ROLE SAMOOHA_BY_SNOWFLAKE.MANAGE_DCR_COLLABORATORS TO ROLE dcr_access;
GRANT APPLICATION ROLE SAMOOHA_BY_SNOWFLAKE.MANAGE_DCR_PROFILE_AND_FEATURES TO ROLE dcr_access;
GRANT APPLICATION ROLE SAMOOHA_BY_SNOWFLAKE.MANAGE_DCR_CONNECTORS TO ROLE dcr_access;
-- Assign the role to a user.
-- You must also grant access to a default warehouse to the role.
GRANT USAGE ON WAREHOUSE <your_warehouse> TO ROLE dcr_access;
ALTER USER <some_user> SET DEFAULT_WAREHOUSE = <your_warehouse>;
GRANT ROLE dcr_access to USER <some_user>;
API 사용자 관리
API 접근은 역할을 사용해 관리돼요. API에 접근하거나 관리하는 데 사용되는 Snowflake 역할은 다음과 같아요:
- ACCOUNTADMIN: 클린룸 환경을 설치하거나 제거하는 데 사용되는 역할이에요. 이 역할은 SAMOOHA_APP_ROLE을 포함하지 않아요. API를 사용하려면 SAMOOHA_APP_ROLE을 사용해야 해요.
- SAMOOHA_APP_ROLE: 이 역할은 이 계정의 클린룸 API에 대한 전체 권한을 부여해요. (이 역할은 클린룸 UI가 API와 통신할 때 사용해요.)
- 실행 전용 개발자 역할(run-only developer role): SAMOOHA_APP_ROLE을 사용하는 사람은 제한된 접근 역할에 usage를 부여할 수 있어요. 실행 역할(run role)이라고도 하는 이 역할은 소비자 컨텍스트에서 특정 클린룸의 API 프로시저 하위 집합을 사용할 권한을 부여해요. 이 제한된 역할은 데이터 분석가 같은 특정 사용자에게 계정에서 범위가 제한된 usage를 제공하기 위해 역할에 부여될 수 있어요.
전체 API 접근 부여 또는 회수
SAMOOHA_APP_ROLE 역할은 사용자에게 Snowflake 계정의 모든 클린룸에 대한 전체 API 접근을 부여해요. 이 역할은 클린룸과 함께 설치된 모든 웨어하우스에 대해 usage 권한이 있어요.
전체 API 접근 부여:
USE ROLE ACCOUNTADMIN;
GRANT ROLE SAMOOHA_APP_ROLE TO USER <user_name>;
전체 API 접근 회수:
USE ROLE ACCOUNTADMIN;
REVOKE ROLE SAMOOHA_APP_ROLE FROM USER <user_name>;
제한된 API 접근 부여(실행 역할)
계정의 지정된 클린룸에 제한된 API 접근을 부여할 수 있어요. 제한된 접근은 consumer.run_analysis 같은 소비자 프로시저의 하위 집합만 호출할 수 있게 하고, 클린룸을 설치·생성·참여·수정하는 능력은 부여하지 않아요. 이 접근 수준은 제한된 API 접근이 있는 역할을 만들어 사용자에게 부여하는 작업을 수반하므로 실행 역할(run role)이라고도 불러요.
사용자에게 제한된 접근을 부여하는 방법은 다음과 같아요:
- SAMOOHA_APP_ROLE 역할을 부여할 수 있는 사용자가 새 역할을 만들고 그 역할에 제한된 기능을 배정해요. 역할은 또한 클린룸에 접근할 때 사용할 웨어하우스에 USAGE가 부여되어야 해요.
-- Create the role.
USE ROLE ACCOUNTADMIN;
CREATE ROLE MARKETING_ANALYST_ROLE;
-- Grant USAGE on one of the basic clean room warehouses.
-- You can grant USAGE to any warehouses that you want them to use.
GRANT USAGE ON WAREHOUSE APP_WH TO MARKETING_ANALYST_ROLE;
-- Grant limited functionality to the role for a subset of clean rooms.
CALL samooha_by_snowflake_local_db.consumer.grant_run_on_cleanrooms_to_role(
[$cleanroom_1, $cleanroom_2],
'MARKETING_ANALYST_ROLE'
);
-- Grant the role to a user.
GRANT ROLE MARKETING_ANALYST_ROLE TO USER george.washington;
- 그러면 사용자는 자신의 제한된 역할로 클린룸 계정에서 특정 작업을 수행해요:
-- User george.washington logs in and uses the limited role.
USE WAREHOUSE APP_WH
USE ROLE MARKETING_ANALYST_ROLE;
USE SECONDARY ROLES NONE;
-- Consumer-run analyses should succeed.
CALL samooha_by_snowflake_local_db.consumer.run_analysis(
$cleanroom_name,
'prod_overlap_analysis',
['MY_DB.MYDATA.CONVERSIONS'], -- Consumer tables
['MY_DB.MYDATA.EXPOSURES'], -- Provider tables
object_construct(
'max_age', 30
)
);
-- Clean room creation and management procedures fail.
CALL samooha_by_snowflake_local_db.provider.cleanroom_init($cleanroom_name, 'INTERNAL');
제한된 API 접근 회수
- 특정 역할에서 특정 클린룸에 대한 실행 권한을 회수하려면 revoke_run_on_cleanrooms_from_role을 호출해요.
- 단일 사용자에게서 부여된 모든 실행 권한을 회수하려면 사용자에게서 역할을 회수해요.
클린룸 콜라보레이터 관리
콜라보레이터는 클린룸 제공자가 소비자로서 클린룸에 참여하도록 초대한 사용자예요.
클린룸 UI를 사용할 때 생성자는 MANAGE_DCR_COLLABORATORS 역할을 사용하는 사람이 관리하는 목록에서 콜라보레이터를 초대할 수 있어요.
클린룸 API를 사용할 때 제공자는 미리 정의된 콜라보레이터 목록에 제한되지 않고, Snowflake 계정 로케이터로 어떤 클린룸 콜라보레이터든 추가할 수 있어요. Snowflake 계정이 없는 콜라보레이터를 초대하려면 먼저 클린룸 관리 계정을 만들어야 해요. 초대 대상은 개별 사용자가 아니라 계정이라는 점을 기억하세요. 초대된 계정에서 클린룸 접근 권한이 있는 모든 사용자가 클린룸에 참여해 사용할 수 있어요.
참고
Snowflake 콜라보레이터가 자신의 Snowflake 계정과 다른 리전에 계정을 가지고 있다면, 콜라보레이터로 추가하기 전에 계정 관리자가 크로스 클라우드 자동 이행을 활성화해야 해요.
클린룸 UI / 클린룸 API
클린룸 UI에서 사용되는 콜라보레이터 목록을 관리하려면 MANAGE_DCR_COLLABORATORS 역할이 필요해요.
- 클린룸 UI에 로그인해요.
- 왼쪽 탐색에서 Collaborators를 선택해요.
- 다음 중 하나를 수행해요:
- 콜라보레이터에게 Snowflake 계정이 있다면 Snowflake Partners » + Snowflake Partner를 선택해요. 콜라보레이터 Snowflake 계정의 세부 사항을 입력하라는 안내에 응답하세요.
- 콜라보레이터가 Snowflake 고객이 아니라면:
- Snowflake Support에 문의해 관리 계정을 만들 수 있는 권한을 받으세요.
- 그 권한을 받으면 Collaborators 창으로 돌아가 Managed Accounts 탭을 선택해 콜라보레이터를 위한 클린룸 관리 계정을 만들어요.
클린룸 API를 사용할 때 제공자는 provider.add_consumers 프로시저를 호출해 콜라보레이터를 추가할 수 있어요.
콜라보레이터가 Snowflake 고객이 아니라면 누군가 클린룸 관리 계정을 만들어야 해요.