Access control for cost anomalies
Access control for cost anomalies (비용 이상 접근 제어)
비용 이상(cost anomaly)은 일일 소비가 그날의 예상 소비 범위보다 위 또는 아래일 때 발생해요. 이 주제는 이상 모니터를 포함한 비용 이상 보기·구성에 대한 접근 제어 요구사항을 설명해요.
본문
비용 이상 접근이 동작하는 방식
접근은 계정 수준 이상, 조직 수준 이상, 이상 모니터에 대해 같은 방식으로 동작해요. 두 애플리케이션 역할이 기준선을 설정하고, 세 번째 역할이 통화로 된 소비 데이터에 대한 접근을 제어해요.
- 이상·소비 보기: APP_USAGE_ADMIN 또는 APP_USAGE_VIEWER 중 하나가 사용자가 비용 이상을 보고 그 뒤의 소비를 조사하게 해줘요. 측정 단위는 크레딧이에요. 두 역할 모두 같은 보기 접근을 부여해요.
- 구성 변경: APP_USAGE_ADMIN이 계정의 구성을 변경하는 능력을 추가해요. 계정 알림 목록 설정, 이상 모니터 생성·변경·삭제를 포함해요. APP_USAGE_ADMIN을 가진 사용자는 APP_USAGE_VIEWER도 필요하지 않아요.
- 통화로 소비 보기: 통화로 된 소비 데이터는 크레딧보다 더 민감하므로 APP_USAGE_ADMIN 또는 APP_USAGE_VIEWER와 함께 부여된 추가 역할이 필요해요. 같은 역할이 조직 알림 목록도 제어하는데, 그 알림은 통화 금액을 포함할 수 있기 때문이에요. 이상 모니터는 항상 크레딧 또는 AI 크레딧을 보고하고 절대 통화를 보고하지 않으므로 이 역할은 그 모니터에 영향을 주지 않아요.
통화 접근을 부여하는 역할은 사용자가 로그인하는 계정 유형에 따라 달라져요.
- 조직 계정에서는 ORGANIZATION_BILLING_VIEWER를 부여.
- ORGADMIN 활성 계정에서는 APP_ORGANIZATION_BILLING_VIEWER를 부여.
일반 계정은 ORGANIZATION_USAGE 스키마에도 통화 역할에도 접근이 없으므로, 일반 계정의 사용자는 항상 크레딧으로 소비를 봐요.
시스템 역할을 가진 관리자
다음 시스템 역할을 가진 관리자는 Snowsight와 ANOMALY_INSIGHTS 클래스 사용 둘 다에서 비용 이상 식별·조사와 관련된 모든 작업을 수행할 수 있어요. 이 주제에 설명된 애플리케이션 역할이 필요하지 않아요.
- ORGADMIN 활성 계정 또는 일반 계정의 ACCOUNTADMIN 역할.
- 조직 계정의 GLOBALORGADMIN 역할.
애플리케이션 역할
SNOWFLAKE 애플리케이션 안에 있는 다음 애플리케이션 역할을 부여해 다른 사용자가 비용 이상으로 작업하게 할 수 있어요.
| 애플리케이션 역할 | 설명 |
|---|---|
| APP_USAGE_VIEWER | 사용자가 크레딧으로 비용 이상과 그 뒤의 소비를 보게 해줘요. 이상 모니터의 결과를 포함하지만, 만들거나 변경하는 능력은 아니에요. |
| APP_USAGE_ADMIN | 사용자가 APP_USAGE_VIEWER가 하는 모든 것을 하고 계정 내에서 비용 이상을 구성하게 해줘요. 구성에는 계정 수준 비용 이상에 대한 알림이 전송될 이메일 주소 설정과, 각 모니터의 알림 목록과 함께 이상 모니터 생성·업데이트·이름 변경·드롭이 포함돼요. |
| ORGANIZATION_BILLING_VIEWER | APP_USAGE_ADMIN 또는 APP_USAGE_VIEWER와 결합하면 조직 계정의 사용자가 통화를 측정 단위로 소비를 보게 해줘요. 이 역할 없이는 사용자는 크레딧으로 소비를 보지 통화로 보지 않아요. 또한 조직 수준 비용 이상에 대한 알림이 전송될 이메일 주소를 보고 설정하는 데 필요해요. |
| APP_ORGANIZATION_BILLING_VIEWER | 조직 계정 대신 ORGADMIN 활성 계정에서 동일한 접근을 제공해요. |
ANOMALY_INSIGHTS 메서드용 애플리케이션 역할
다음 표는 ANOMALY_INSIGHTS 클래스의 각 메서드를 사용자가 호출하게 하는 애플리케이션 역할을 보여줘요. 주어진 메서드에 대해 ✔ 표시된 역할 중 하나만 있으면 돼요. 빈 셀은 역할이 메서드를 호출할 수 없음을 뜻해요. (preview)로 표시된 메서드는 이상 모니터에 속해요.
ORGADMIN 활성 계정에서는 이 표가 ORGANIZATION_BILLING_VIEWER를 나열하는 곳마다 APP_ORGANIZATION_BILLING_VIEWER를 부여해요.
| 메서드 | APP_USAGE_VIEWER | APP_USAGE_ADMIN | ORGANIZATION_BILLING_VIEWER |
|---|---|---|---|
| ADD_NOTIFICATION_INTEGRATION | ✔ | ✔ | |
| ADHOC_CALCULATE_ANOMALIES_FROM_CONFIG (preview) | ✔ | ✔ | |
| CREATE_MONITOR (preview) | ✔ | ||
| DROP_MONITOR (preview) | ✔ | ||
| GET_ACCOUNT_ANOMALIES_IN_CREDITS | ✔ | ✔ | |
| GET_ACCOUNT_NOTIFICATION_EMAILS | ✔ | ||
| GET_DAILY_CONSUMPTION_ANOMALY_DATA | ✔ | ||
| GET_HOURLY_CONSUMPTION_BY_SERVICE_TYPE | ✔ | ✔ | |
| GET_HOURLY_SPEND_FOR_ANOMALY | ✔ | ✔ | |
| GET_MONITOR_ANOMALIES (preview) | ✔ | ✔ | |
| GET_MONITOR_CONFIG (preview) | ✔ | ✔ | |
| GET_MONITOR_NOTIFICATION_EMAILS (preview) | ✔ | ||
| GET_MONITOR_NOTIFICATION_LOG (preview) | ✔ | ||
| GET_NOTIFICATION_INTEGRATIONS | ✔ | ✔ | ✔ |
| GET_ORG_NOTIFICATION_EMAILS | ✔ | ||
| GET_TOP_ACCOUNTS_BY_CONSUMPTION | ✔ | ✔ | |
| GET_TOP_QUERIES_FROM_WAREHOUSE | ✔ | ✔ | |
| GET_TOP_WAREHOUSES_ON_DATE | ✔ | ✔ | |
| LIST_MONITORS (preview) | ✔ | ✔ | |
| RECALCULATE_ANOMALIES (preview) | ✔ | ✔ | |
| REMOVE_NOTIFICATION_INTEGRATION | ✔ | ✔ | |
| RENAME_MONITOR (preview) | ✔ | ||
| SET_ACCOUNT_NOTIFICATION_EMAILS | ✔ | ||
| SET_MONITOR_NOTIFICATION_EMAILS (preview) | ✔ | ||
| SET_ORG_NOTIFICATION_EMAILS | ✔ | ||
| UPDATE_MONITOR_CONFIG (preview) | ✔ |
이 역할들이 어떻게 적용되는지에 대해 주의:
- ADD_NOTIFICATION_INTEGRATION과 REMOVE_NOTIFICATION_INTEGRATION은 계정 수준 이상용 통합을 관리하려면 APP_USAGE_ADMIN, 조직 수준 이상용 통합을 관리하려면 통화 역할이 필요해요. 둘 다 알림 통합 자체에 대한 권한도 필요해요. 자세한 내용은 메서드 참조 페이지를 참고해요.
- 계정의 모든 이상 모니터는 그 계정에서 APP_USAGE_VIEWER 또는 APP_USAGE_ADMIN을 가진 누구에게나 보여요. 모니터는 사용자별로 필터링되지 않아요. 모니터의 결과는 이 역할들이 이미 볼 수 있는 총계 비용 데이터이기 때문이에요.
사용자에게 접근 부여
다음 섹션은 일반적인 경우에 대한 이 애플리케이션 역할의 결합을 보여줘요.
특정 계정의 비용 이상 보기 능력 부여
사용자가 특정 계정에서 계정 수준 비용 이상을 볼 수 있게 하고 싶지만 관리자로는 행동하지 못하게 하려면 APP_USAGE_VIEWER 애플리케이션 역할을 부여해요.
예를 들어 사용자 joe가 특정 계정의 비용 이상을 볼 수 있게 하려면 계정에 로그인한 뒤 다음 명령을 실행해요.
USE ROLE ACCOUNTADMIN;
CREATE ROLE anomaly_viewer_role;
GRANT APPLICATION ROLE SNOWFLAKE.APP_USAGE_VIEWER TO ROLE anomaly_viewer_role;
GRANT ROLE anomaly_viewer_role TO USER joe;
모든 계정의 비용 이상 보기 능력 부여
사용자가 조직의 모든 계정에서 계정 수준 비용 이상을 보고 조직 수준 이상을 보게 하려면 APP_USAGE_VIEWER 역할과 다음 역할 중 하나를 부여해요.
- 사용자가 조직 계정에 로그인해 비용 이상을 보면 ORGANIZATION_BILLING_VIEWER 애플리케이션 역할도 부여.
- 사용자가 ORGADMIN 활성 계정에 로그인해 비용 이상을 보면 APP_ORGANIZATION_BILLING_VIEWER 애플리케이션 역할도 부여.
이 역할들을 부여받은 사용자는 크레딧이 아니라 통화를 측정 단위로 소비 데이터를 볼 수 있어요.
예를 들어 사용자 ralph가 조직 계정에 로그인해 조직 전체와 관련된 비용 이상을 보면 다음 명령을 실행해요.
USE ROLE ACCOUNTADMIN;
CREATE ROLE anomaly_viewer_role;
GRANT APPLICATION ROLE SNOWFLAKE.APP_USAGE_VIEWER TO ROLE anomaly_viewer_role;
GRANT APPLICATION ROLE SNOWFLAKE.ORGANIZATION_BILLING_VIEWER TO ROLE anomaly_viewer_role;
GRANT ROLE anomaly_viewer_role TO USER ralph;
특정 계정의 비용 이상 구성 능력 부여
사용자가 특정 계정 내에서 계정 수준 비용 이상을 보고 구성하게 하려면 APP_USAGE_ADMIN 애플리케이션 역할을 부여해요. 이 역할을 가진 사용자는 비용 이상을 보기 위해 APP_USAGE_VIEWER 역할이 필요하지 않아요. 비용 이상 구성에는 계정에 이상이 있을 때 알림이 전송될 이메일 주소 추가와 이상 모니터 관리가 포함돼요.
예를 들어 사용자 judy가 특정 계정의 계정 수준 비용 이상을 보고 구성하게 하려면 계정에 로그인한 뒤 다음 명령을 실행해요.
USE ROLE ACCOUNTADMIN;
CREATE ROLE anomaly_admin_role;
GRANT APPLICATION ROLE SNOWFLAKE.APP_USAGE_ADMIN TO ROLE anomaly_admin_role;
GRANT ROLE anomaly_admin_role TO USER judy;
조직 수준 비용 이상 구성 능력 부여
사용자가 조직 수준 비용 이상을 구성하게 하려면 APP_USAGE_ADMIN 역할과 다음 역할 중 하나를 부여해요.
- 사용자가 조직 계정에 로그인해 비용 이상을 구성·보면 ORGANIZATION_BILLING_VIEWER 애플리케이션 역할도 부여.
- 사용자가 ORGADMIN 활성 계정에 로그인해 비용 이상을 구성·보면 APP_ORGANIZATION_BILLING_VIEWER 애플리케이션 역할도 부여.
이 역할 조합 중 하나를 가진 관리자는 다음 작업을 수행할 수 있어요.
- 조직 수준 이상에 대한 알림이 전송될 이메일 주소 설정·보기.
- 조직의 모든 계정에서 계정 수준 비용 이상 보기.
- 조직 수준 비용 이상 보기.
- 통화를 측정 단위로 사용하는 소비 데이터 보기.
예를 들어 사용자 steven이 조직 계정에 로그인해 조직 전체와 관련된 비용 이상으로 작업하면 다음 명령을 실행해요.
USE ROLE ACCOUNTADMIN;
CREATE ROLE anomaly_admin_role;
GRANT APPLICATION ROLE SNOWFLAKE.APP_USAGE_ADMIN TO ROLE anomaly_admin_role;
GRANT APPLICATION ROLE SNOWFLAKE.ORGANIZATION_BILLING_VIEWER TO ROLE anomaly_admin_role;
GRANT ROLE anomaly_admin_role TO USER steven;
태그로 이상 모니터 범위 지정 능력 부여
이상 모니터를 정의하려면 APP_USAGE_ADMIN과 모니터 범위에 사용되는 각 태그에 대한 APPLYBUDGET 권한이 필요해요. APPLYBUDGET은 예산이 요구하는 것과 같은 권한이며, Snowflake는 이상 모니터에 대한 별도 권한을 정의하지 않아요.
예를 들어 anomaly_admin_role 역할이 모니터를 정의할 때 cost_center 태그를 사용하게 하려면:
USE ROLE ACCOUNTADMIN;
GRANT APPLYBUDGET ON TAG it.warehouse_management.cost_center TO ROLE anomaly_admin_role;
APPLYBUDGET이 애플리케이션 역할과 어떻게 상호작용하는지에 대해 주의:
- APPLYBUDGET은 모니터 범위에서 태그를 명명할 권한만 부여해요. 태그를 가진 리소스의 소비 데이터에 대한 접근은 부여하지 않아요.
- 모니터 결과에 대한 접근은 항상 그것을 읽는 사용자의 애플리케이션 역할로 평가되며, 모니터를 만든 사용자의 권한이 아니에요.
- 권한은 태그 참조를 만들 때 확인돼요. 태그에 대한 APPLYBUDGET이 없으면 SYSTEM$REFERENCE가 모니터 메서드가 실행되기 전에 실패해요.
- APPLYBUDGET은 모니터 저장에만 적용돼요. 저장하지 않고 구성을 테스트하는 ANOMALY_INSIGHTS!ADHOC_CALCULATE_ANOMALIES_FROM_CONFIG는 태그를 직접 명명하며 권한이 필요하지 않아요.
비용 이상 뷰에 대한 접근
이 주제의 애플리케이션 역할은 ANOMALY_INSIGHTS 클래스 메서드와 Snowsight를 제어해요. 비용 이상 뷰를 직접 쿼리하려면 대신 데이터베이스 역할이 필요해요.
- ANOMALIES_DAILY 뷰는 ACCOUNT_USAGE 스키마에 대한 읽기 접근이 있는 데이터베이스 역할(예: USAGE_VIEWER)이 필요해요.
- ANOMALIES_IN_CURRENCY_DAILY 뷰는 통화 데이터를 포함하고 ORGANIZATION_BILLING_VIEWER가 필요해요.
이상 모니터 결과는 어느 스키마에서도 사용할 수 없어요. 검색하려면 ANOMALY_INSIGHTS!GET_MONITOR_ANOMALIES를 사용해요.
더 알아보기
- Introduction to cost anomalies — 비용 이상 개요
- Use Snowsight to work with cost anomalies — Snowsight 사용
- Programmatically work with cost anomalies — 프로그래밍 방식