Skip to main content
Snowflake 계정을 연결하면 Tony (Database Engineer)가 웨어하우스 크레딧 소모를 읽고, 느린 쿼리와 실패한 쿼리의 순위를 매기며, 테이블 스토리지 부담을 측정할 수 있습니다. CloudThinker는 프로그래매틱 액세스 토큰으로 SQL REST API를 통해 Snowflake에 접근하며, 새로 만든 연결은 쓰기 도구를 켜기 전까지 읽기 전용입니다.

사전 준비

  • 역할, 서비스 사용자, 토큰을 만들 ACCOUNTADMIN (또는 동등한) 권한.
  • 해당 사용자에게 연결할 네트워크 정책. 네트워크 정책이 없으면 Snowflake는 토큰 인증을 거부합니다.
  • 역할이 사용할 수 있는 웨어하우스. 메타데이터 쿼리는 컴퓨트가 필요 없으므로, 웨어하우스가 없어도 연결 테스트는 통과하고 실제 분석만 실패할 수 있습니다.

설정

1

읽기 전용 역할 만들기

ACCOUNTADMIN으로 실행하세요. USAGE_VIEWER는 미터링과 스토리지를, OBJECT_VIEWER는 객체 인벤토리를 담당하며, GOVERNANCE_VIEWERQUERY_HISTORY를 읽을 수 있게 합니다:
2

서비스 사용자 만들기

SERVICE 유형 사용자는 비밀번호, MFA, SSO가 없으므로 토큰으로만 인증합니다:
3

네트워크 정책 연결하기

테스트 계정이 아니라면 ALLOWED_IP_LIST를 사용 중인 이그레스 IP 대역으로 좁히세요:
이 단계를 건너뛰는 것이 가장 흔한 설정 실패이며, 반환되는 오류(390403)는 정책을 언급하지 않습니다.
4

프로그래매틱 액세스 토큰 발급하기

Snowflake는 생성 시 토큰을 한 번만 보여줍니다. DAYS_TO_EXPIRY는 엄격한 만료 기한이며, 그날부터 연결이 390318로 실패하기 시작하므로 새 토큰을 발급해야 합니다.
5

CloudThinker에서 연결 추가하기

Connections → Snowflake로 이동해 다음을 입력하세요:
  • Account identifier: MYORG-MYACCOUNT. Snowsight → Account details에서 확인합니다. 전체 URL이 아닙니다.
  • Programmatic access token: 이전 단계에서 발급한 토큰. 계정 비밀번호가 아닙니다.
  • Role: 선택 사항. 비워 두면 사용자의 기본 역할을 사용합니다.
  • Warehouse: 선택 사항. 비워 두면 사용자의 기본 웨어하우스를 사용합니다.
Connect를 클릭합니다. CloudThinker가 계정, 리전, 역할, 웨어하우스를 확인하면 상태가 Connected로 바뀝니다.

연결 세부 정보

REST 호스트는 계정 식별자를 소문자로 바꾸고 구분자를 하이픈으로 처리하므로, 밑줄로 작성한 식별자도 정상적으로 해석됩니다.

필요한 권한

읽기 전용 (기본값)

GOVERNANCE_VIEWER는 놓치기 쉽습니다. 이것이 없으면 비용과 스토리지 답변은 계속 작동하지만, 느린 쿼리와 오류 답변은 모두 QUERY_HISTORY에서 실패합니다.

쓰기 접근 (활성화하는 경우에만)

OPERATE는 에이전트가 조작해도 되는 웨어하우스에만 부여하고, 공유 프로덕션 웨어하우스에는 절대 부여하지 마세요. 리소스 모니터를 붙인 전용 에이전트 웨어하우스를 두면 어떤 프롬프트로도 올릴 수 없는 컴퓨트 상한이 생깁니다.

에이전트 기능

연결하면 Tony는 다음을 할 수 있습니다:

연결 확인

프롬프트 예시

Snowflake는 통화가 아니라 크레딧을 노출하며, 크레딧당 단가는 이 연결로 읽을 수 없습니다. 에이전트는 크레딧을 크레딧으로 보고합니다.

쓰기 접근

연결은 읽기 전용으로 제공되며, 접근 권한은 자격 증명을 따르므로 쓰기는 연결마다 결정합니다. 하나의 워크스페이스가 읽기 전용 토큰과 쓰기 가능 토큰을 동시에 가질 수 있습니다. Connections → Snowflake → Tool permissions에서 켭니다. 먼저 따져볼 두 가지:
  • 여기서 쓰기란 정확히 두 가지 작업이며, 임의의 SQL이 아닙니다. 리소스 모니터 상향, DATA_RETENTION_TIME_IN_DAYS 하향, 웨어하우스 크기 변경은 여전히 Snowsight에서 직접 실행할 구문으로 보고됩니다.
  • 권한 부여가 더 강한 통제입니다. 도구 권한은 CloudThinker가 쓰기를 요청할지를 결정하고, 토큰의 ROLE_RESTRICTION과 역할의 권한이 Snowflake가 쓰기를 허용할지를 결정합니다.
Snowflake에는 조건부 일시 중단이 없습니다. 사용 중 확인과 ALTER는 별개의 구문이므로 그 사이에 쿼리가 시작되어 컴퓨트를 잃을 수 있습니다. 에이전트는 상태 변경과 이 한계를 보고할 뿐, 일시 중단이 안전했다고는 결코 말하지 않습니다.
모든 쓰기는 도구 호출 시 사용자의 승인을 받아야 합니다.

문제 해결

사용자에게 네트워크 정책이 없습니다. 정책이 연결될 때까지 Snowflake는 토큰 인증을 거부합니다: ALTER USER SVC_CLOUDTHINKER SET NETWORK_POLICY = CT_POLICY;
토큰이 만료되었거나 취소되었습니다. DAYS_TO_EXPIRY는 엄격한 만료 기한입니다. 새 토큰을 발급하고 연결을 업데이트하세요.
뷰 이름 오타가 아니라 데이터베이스 역할이 누락된 것입니다. 에이전트에게 탐색을 실행시키세요. 역할이 읽을 수 있는 모든 ACCOUNT_USAGE 뷰를 나열하고, 읽지 못하는 뷰에는 정확한 GRANT 구문을 출력합니다.
리소스 모니터가 할당량을 초과했거나, 웨어하우스가 중단된 채 재개하지 못하고 있습니다. 권한이 아니라 계정 용량 문제이므로 어떤 GRANT로도 해결되지 않습니다. 계정 관리자가 리소스 모니터를 올리거나 재설정해야 합니다.자격 증명이 유효하고 테스트 프로브는 컴퓨트가 필요 없기 때문에 연결 상태는 Connected로 유지됩니다.
서비스 사용자에게 DEFAULT_WAREHOUSE가 없고 설정된 웨어하우스도 없습니다. 연결의 Warehouse를 설정하거나 사용자에게 기본값을 지정하세요.
역할이 토큰의 ROLE_RESTRICTION 범위 밖에 있습니다. 토큰이 사용할 수 있는 역할을 쓰거나, Role을 비워 사용자의 기본값을 사용하세요.
오류가 아닙니다. ACCOUNT_USAGE는 최대 몇 시간까지 지연되고 1년치 이력을 보관하므로, 활동이 적은 계정에서 좁은 기간을 조회하면 행이 없습니다.

보안

  • 최소 권한 — 에이전트가 사용 사례에 필요한 권한만 부여하세요. 읽기 전용으로 시작한 후 필요에 따라 확장하세요.
  • 기본 읽기 전용 — 에이전트가 이 연결을 통해 변경 작업을 수행하게 할 것이 아니라면 읽기 전용 자격증명을 사용하세요.
  • 자격증명 교체 — 정기 일정에 따라 키와 토큰을 교체하세요. 연결을 업데이트하면 CloudThinker가 새 값을 자동으로 반영합니다.
  • 오프보딩 시 취소 — 연결을 삭제하거나 팀원이 퇴사할 때 프로바이더에서 자격증명을 제거하세요.
  • 전용 서비스 사용자TYPE = SERVICE 사용자는 비밀번호, MFA, SSO가 없어 토큰이 유일한 진입 경로가 되고 감사 기록이 읽기 쉬워집니다.
  • 토큰을 제한하고 만료시키기ROLE_RESTRICTION은 연결이 도달할 수 있는 범위를 제한하고, DAYS_TO_EXPIRY는 잊기 쉬운 교체 주기를 강제합니다.

관련 항목

Tony 에이전트

데이터베이스 중심 최적화 에이전트

ClickHouse 연결

ClickHouse 클러스터를 위한 유사한 설정