ACCOUNTADMINロールのみが実行できるコマンド

管理者が利用者に権限を分け与えようとしたときに、ACCOUNTADMINロールでしかできないことがドキュメントに一覧化されていなかったので調べました。(2024年12月1日時点)
各コマンドのドキュメントに account administrators しか使えないと記述が見つかった場合、このページに情報を記載しているため、情報が網羅されているかは保証しません。


## 調べ方

以下の検索ワードで検索

`site:docs.snowflake.com Only account administrators (users with the ACCOUNTADMIN role) can execute this SQL command.`
`site:docs.snowflake.com This command can only be executed by account administrators.`
`site:docs.snowflake.com Only account administrators.`

## ACCOUNTADMINロールのみが実行できるコマンド

### 一部権限の付与

`CREATE DATABASE` や `CREATE SHARE` などの権限の `GRANT`

https://docs.snowflake.com/ja/user-guide/security-access-control-privileges#global-privileges-account-level-privileges

### アカウントの設定変更

`ALTER ACCOUNT` の実行

https://docs.snowflake.com/ja/sql-reference/sql/alter-account

### Behavior Change Bundlesの有効化・無効化

`SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE` , `SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE` の実行

https://docs.snowflake.com/en/release-notes/behavior-change-policy

### Preview 機能の有効化・無効化

`SYSTEM$ENABLE_PREVIEW_ACCESS()` , `SYSTEM$DISABLE_PREVIEW_ACCESS()` の実行

https://docs.snowflake.com/en/release-notes/preview-features#managing-access-to-all-preview-features

### Session関連の操作 

- 指定したSessionの中止

https://docs.snowflake.com/ja/sql-reference/functions/system_abort_session

- lockの一覧表示でセッションIDを一緒に表示

https://docs.snowflake.com/ja/sql-reference/sql/show-locks

Session Timeout時間はSession Policyで指定可能です。

https://docs.snowflake.com/ja/user-guide/session-policies


### リソースモニターの作成

`CREATE RESOURCE MONITOR` の実行

https://docs.snowflake.com/ja/sql-reference/sql/create-resource-monitor#usage-notes

リソースモニターを作成した後は `MODIFY` / `MONITOR` 権限で他のロールに操作権限を与えられる。

### Replication 機能の一部操作

Replication機能を使うための主要な権限( `CREATE FAILOVER GROUP` , `CREATE REPLICATION GROUP` など )は譲渡可能だが、以下の一部処理を行うために権限を譲渡することができない。

https://docs.snowflake.com/en/sql-reference/sql/show-replication-accounts

https://docs.snowflake.com/en/sql-reference/functions/system_disable_database_replication

https://docs.snowflake.com/ja/sql-reference/functions/system_link_account_objects_by_name

### クライアントリダイレクト関連

Failover時のクライアントリダイレクトに利用する `Connection` オブジェクトはACCOUNTADMINのみが所有者となれるため、クライアントリダイレクトの操作はACCOUNTADMINのみが実行可能。

> 接続権限
> ACCOUNTADMIN ロールのみが接続を所有しています。OWNERSHIP 権限を別のロールに付与することはできません。

https://docs.snowflake.com/ja/user-guide/security-access-control-privileges#connection-privileges

Failover自体を行う権限は他のロールに譲渡可能。

> このセクションの例は、 FAILOVER 権限 を持つロールによって実行する必要があります。

https://docs.snowflake.com/ja/user-guide/account-replication-failover-failback#promote-a-secondary-failover-group-to-primary-failover-group

### Azure内部ステージへのPublic Access Blockの設定

`SYSTEM$BLOCK_INTERNAL_STAGES_PUBLIC_ACCESS` , `SYSTEM$UNBLOCK_INTERNAL_STAGES_PUBLIC_ACCESS` , `SYSTEM$INTERNAL_STAGES_PUBLIC_ACCESS_STATUS` の実行

https://docs.snowflake.com/en/sql-reference/functions/system_block_internal_stages_public_access

https://docs.snowflake.com/en/sql-reference/functions/system_unblock_internal_stages_public_access

https://docs.snowflake.com/en/sql-reference/functions/system_internal_stages_public_access_status

### PrivateLink関連

`SYSTEM$ALLOWLIST_PRIVATELINK()` 以外、参照系のコマンド含め、ACCOUNTADMINのみが実行可能

https://docs.snowflake.com/en/sql-reference/functions/system_internal_stages_public_access_status

### Tri-Secret Secure 機能関連

`SYSTEM$REGISTER_CMK_INFO` , `SYSTEM$GET_CMK_INFO` , `SYSTEM$GET_CMK_CONFIG` , `SYSTEM$VERIFY_CMK_INFO` の実行

https://docs.snowflake.com/en/user-guide/security-encryption-tss

`SYSTEM$GET_CMK_KMS_KEY_POLICY` , `SYSTEM$GET_CMK_AKV_CONSENT_URL` , `SYSTEM$GET_GCP_KMS_CMK_GRANT_ACCESS_CMD` の実行は `MONITOR SECURITY` 権限で操作可能。

https://docs.snowflake.com/en/release-notes/bcr-bundles/2023_01/bcr-805


### Snowpipe 機能の一部操作

Amazon S3 イベント通知を Amazon Simple Queue Service (SQS) キューに直接送信する方法から、Amazon Simple Notification Service (SNS) トピックを使用する方法に移行する際に使用するコマンド ( `SYSTEM$CONVERT_PIPES_SQS_TO_SNS` ) が対象

https://docs.snowflake.com/en/user-guide/account-replication-stages-pipes-load-history#migrate-to-amazon-simple-notification-service-sns


## ORGADMINのみが実行できるコマンド

ORGADMIN については以下のコマンドを実行可能。

> - 組織にアカウントを作成する。詳細については、 アカウントの作成 をご参照ください。
> - 組織内のすべてのアカウントを閲覧または表示する。詳細については、 組織内のアカウントの表示 をご参照ください。
> - 組織で有効になっているリージョンのリストを閲覧または表示する。詳細については、 組織で利用可能なリージョンのリストの表示 をご参照ください。
> - 組織内のアカウントすべての使用情報を表示する。詳細については、 組織の使用状況 をご参照ください。
> - 組織内のアカウントのデータベース複製を有効にします。詳細については、 前提条件: 組織内のアカウントの複製を有効にする をご参照ください。

追加で規約同意にも `ORGADMIN` ロールが必要です。

https://other-docs.snowflake.com/ja/collaboration/consumer-listings-paying#accept-the-consumer-terms-of-service

GROBALORGADMINロールについては割愛します。

https://docs.snowflake.com/en/user-guide/organization-accounts


## ACCOUNTADMINロールのみが実行できるコマンドをACCOUNTADMIN以外が実行する方法

セキュリティ上の良し悪しは各自で判断し、自己責任で実行願います。

### 1. 所有者権限ストアドプロシージャの実行

「ストアドプロシージャの所有者権限を持つロール」の権限を参照して、ストアドプロシージャを実行することができます。今回のパターンでは、ACCOUNTADMINロールが所有者のプロシージャにより、ACCOUNTADMINロールのみが実行できるコマンドを実行します。

https://docs.snowflake.com/ja/developer-guide/stored-procedure/stored-procedures-rights

ただし、所有者権限ストアドプロシージャの実行には色々と制限があり、
参照系のSYSTEMコマンドを利用する場合に有効です

(機械翻訳)
>所有者権限ストアド プロシージャには、セッション変数とセッション パラメータに関連する制限に加えて、いくつかの追加の制限があります。これらの制限は、次のものに影響します。
> - ストアド プロシージャ内から呼び出すことができる組み込み関数。
> - ALTER USERステートメントを実行する機能。
> - 実行時にストアド プロシージャを監視します。
> - SHOW および DESCRIBE コマンド。
> - ストアド プロシージャ内から呼び出すことができる SQL ステートメントの種類。

https://docs.snowflake.com/ja/developer-guide/stored-procedure/stored-procedures-rights#additional-restrictions-on-owner-s-rights-stored-procedures


### 2. Task実行

TaskはTaskの所有者権限を持つロールの権限を参照して処理を実行します。また、Taskの `OPERATE` 権限を渡すことで、Taskを他のロールで手動で実行することができます。
これにより、非同期ですが、ACCOUNTADMINロールで作成した処理を他のロールで実行することができます。

> OPERATE 権限を持つ別のロールが EXECUTE TASK を使用してタスクを実行する場合でも、タスクは常に元の所有者ロールの権限で実行されます。

https://docs.snowflake.com/ja/sql-reference/sql/execute-task#usage-notes


## 他のロールに付与可能な権限

他のロールに付与可能な権限は以下のページから参照してください。

https://docs.snowflake.com/en/user-guide/security-access-control-privileges

具体的な権限の構成方法は各機能の説明ページに書かれていることが多いです。

- Replication

https://docs.snowflake.com/ja/user-guide/account-replication-config#step-1-create-a-role-with-the-create-failover-group-privilege-in-the-source-account-optional

- 共有

https://docs.snowflake.com/ja/user-guide/data-exchange-marketplace-privileges


## おわりに

ACCOUNTADMINロールのみが実行できるコマンドの方向性としては、アカウントの変更、BCエディション機能関連が主なようでした。

ぜひ参考にしてください！


## 仲間募集

NTTデータ テクノロジーコンサルティング事業本部 では、以下の職種を募集しています。

<details><summary>1. クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア)</summary>

クラウド／プラットフォーム技術の知見に基づき、DWH、BI、ETL領域におけるソリューション開発を推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/cloud_engineer

</details>

<details><summary>2. データサイエンス領域（データサイエンティスト／データアナリスト）</summary>

データ活用／情報処理／AI／BI／統計学などの情報科学を活用し、よりデータサイエンスの観点から、データ分析プロジェクトのリーダーとしてお客様のDX／デジタルサクセスを推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/datascientist

</details>

<details><summary>3.お客様のAI活用の成功を推進するAIサクセスマネージャー</summary>

DataRobotをはじめとしたAIソリューションやサービスを使って、
お客様のAIプロジェクトを成功させ、ビジネス価値を創出するための活動を実施し、
お客様内でのAI活用を拡大、NTTデータが提供するAIソリューションの利用継続を推進していただく人材を募集しています。
https://nttdata.jposting.net/u/job.phtml?job_code=804

</details>

<details><summary>4.DX／デジタルサクセスを推進するデータサイエンティスト《管理職/管理職候補》</summary>
データ分析プロジェクトのリーダとして、正確な課題の把握、適切な評価指標の設定、分析計画策定や適切な分析手法や技術の評価・選定といったデータ活用の具現化、高度化を行い分析結果の見える化・お客様の納得感醸成を行うことで、ビジネス成果・価値を出すアクションへとつなげることができるデータサイエンティスト人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=898

</details>


## ソリューション紹介

<details><summary> Trusted Data Foundationについて</summary><div>

～データ資産を分析活用するための環境をオールインワンで提供するソリューション～
https://www.nttdata.com/jp/ja/lineup/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ（Datalake+DWH+AI/BI）を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

</div></details>

<details><summary> TDFⓇ-AM（Trusted Data Foundation - Analytics Managed Service）について</summary><div>

～データ活用基盤の段階的な拡張支援（Quick Start) と保守運用のマネジメント（Analytics Managed）をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス～
https://www.nttdata.com/jp/ja/lineup/tdf_am/
TDFⓇ-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。

</div></details>


<details><summary> NTTデータとDatabricksについて </summary>
NTTデータは、お客様企業のデジタル変革・DXの成功に向けて、「databricks」のソリューションの提供に加え、情報活用戦略の立案から、AI技術の活用も含めたアナリティクス、分析基盤構築・運用、分析業務のアウトソースまで、ワンストップの支援を提供いたします。

https://www.nttdata.com/jp/ja/lineup/databricks/

</details>


<details><summary>NTTデータとTableauについて </summary><div>

ビジュアル分析プラットフォームのTableauと2014年にパートナー契約を締結し、自社の経営ダッシュボード基盤への採用や独自のコンピテンシーセンターの設置などの取り組みを進めてきました。さらに2019年度にはSalesforceとワンストップでのサービスを提供開始するなど、積極的にビジネスを展開しています。

これまでPartner of the Year, Japanを4年連続で受賞しており、2021年にはアジア太平洋地域で最もビジネスに貢献したパートナーとして表彰されました。
また、2020年度からは、Tableauを活用したデータ活用促進のコンサルティングや導入サービスの他、AI活用やデータマネジメント整備など、お客さまの企業全体のデータ活用民主化を成功させるためのノウハウ・方法論を体系化した「デジタルサクセス」プログラムを提供開始しています。
https://www.nttdata.com/jp/ja/lineup/tableau/

</div></details>


<details><summary>NTTデータとAlteryxについて </summary><div>
Alteryxは、業務ユーザーからIT部門まで誰でも使えるセルフサービス分析プラットフォームです。

Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。

導入時のプロフェッショナル支援など独自メニューを整備し、特定の業種によらない多くのお客さまに、Alteryxを活用したサービスの強化・拡充を提供します。

https://www.nttdata.com/jp/ja/lineup/alteryx/

</div></details>

<details><summary>NTTデータとDataRobotについて </summary><div>
DataRobotは、包括的なAIライフサイクルプラットフォームです。

NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。

https://www.nttdata.com/jp/ja/lineup/datarobot/

</div></details>

<details><summary> NTTデータとInformaticaについて</summary><div>

データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ているInformatica社とパートナーシップを結び、サービス強化を推進しています。
https://www.nttdata.com/jp/ja/lineup/informatica/

</div></details>

<details><summary>NTTデータとSnowflakeについて </summary><div>
NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。

NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。

https://www.nttdata.com/jp/ja/lineup/snowflake/

</div></details>