Snowflake Integration
はじめに
Attribute プラットフォームは、さまざまなサードパーティのクラウドサービスと連携することで、コストの一元的な可視化と完全なコストアトリビューションを実現できます。
本ドキュメントでは、Snowflake の請求情報と連携を完了するために必要な手順について説明します。
必要条件
組織全体の詳細な情報を提供するために、Attribute は[organization account]へのアクセスを必要とします。
このアクセスを安全に取得するために、以下が必要です。
- 認証用の RSA キーペア
- 業務オペレーションへの影響を避けるための専用 warehouse
- 必要なすべての権限をまとめるための新しい role
- 新しい role に対する必要な権限の付与
- 新しい warehouse への [USAGE] 権限
- organization account への [ORG_USAGE_ADMIN] application role
- ユーザーアク セスを保護するための network policy
- 新しい role と network policy が割り当てられた新規サービスユーザー
連携手順
- openssl を使用した RSA キーペアの生成
- 既存の organization account を使用した連携
- 新しい organization account の作成
すべての Snowflake SQL コマンドは、Snowflake の UI Web インターフェースである Snowsight の worksheet から実行できます。

1. 新しい RSA キーペアの生成
以下の手順では、新しい RSA キーペアを作成し、Snowflake で必要な形式に変換する方法を説明します。
1.1. openssl が利用可能なコマンドシェルを開きます。
1.2. 次のコマンドを使用して、新しい秘密鍵 (key.p8) を生成します。十分に強力なパスフレーズを選択してください。
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out key.p8
1.3 次のコマンドを使用して公開鍵 (key.pub) を生成します。1.2 の手順で生成した秘密鍵を必ず使用してください。
秘密鍵を作成した際に使用したパスフレーズを指定してください。
openssl rsa -in key.p8 -pubout -out key.pub
公開鍵 key.pub は、次のような形式になります。

1.4. 公開鍵の形式を Snowflake の要件に合わせて変換します。
Snowflake で公開鍵を使用するには、区切り文字と改行を削除する必要があります。次のコマンドを使用して、公開鍵 (key.pub) を Snowflake 用形式に変換してください。
sed '1d;$d' key.pub | tr -d '\n' > key.snowflake.pub
新しいユーザーを作成する際に、公開鍵 key.snowflake.pub を使用します。
新しいユーザーでログインできるようにするには、以下が必要です。
- 秘密鍵
- 秘密鍵用に設定したパスフレーズ
既存の Organization Account を使用した連携
以下の手順では、organization account を使用した連携プロセスについて説明します。
コマンドは必ず organization account 配下のユーザーで実行し、そのユーザーが GLOBALORGADMIN と ACCOUNTADMIN の両方の role を利用できることを確認してください。
organization account を作成する必要がある場合は、「付録 B - organization account の作成」を参照してください。
以下は、連携を完了するために必要な手順です。
利便性のために、「付録 B - Integration script」に、コピー&ペーストで利用できる連携用スクリプトを用意しています。
コマンドを実行する際は、必ず ACCOUNTADMIN role を使用してください。
USE ROLE ACCOUNTADMIN;
1. Warehouse の作成
新しい warehouse を作成することで、Attribute のクエリが既存の業務オペレーションをブロックしないようにできます。
以下のコマンドを使用して、コスト最適化された新しい warehouse を作成してください。
CREATE OR ALTER WAREHOUSE
attributeWarehouse WITH
WAREHOUSE_SIZE = 'XSMALL'
WAREHOUSE_TYPE = 'STANDARD'
AUTO_SUSPEND = 30
INITIALLY_SUSPENDED = TRUE
COMMENT = "Attribute's Warehouse";
2. Role の作成
以下のコマンドを使用して、必要なすべての権限をまとめる新しい role を作成します。
CREATE ROLE attributeRole
COMMENT = "Encapsulates privileges required for Attribute's service";
3. 必要な権限の付与
ステップ 2 で作成した新しい role に対して、application role ORG_USAGE_ADMIN を付与する必要があります。
これを行うには、GLOBALORGADMIN role を使用する必要があります。
さらに、新しい warehouse への usage 権限も付与します。
USE ROLE GLOBALORGADMIN;
GRANT APPLICATION ROLE ORG_USAGE_ADMIN TO ROLE attributeRole;
USE ROLE ACCOUNTADMIN;
GRANT USAGE ON WAREHOUSE attributeWarehouse TO ROLE attributeRole;
4. Network Policy の作成
以下のコマンドを使用して、Attribute の IP アドレスからのアクセスを許可する新しい network policy を作成します。
CREATE OR REPLACE NETWORK POLICY attributeAccess
ALLOWED_IP_LIST = ('34.41.229.120', '35.224.163.103');
5. ユーザーの作成
以下のコマンドを使用して、新しいサービス用ユーザーを作成します。
セクション 1「RSA キーの生成」で作成した公開鍵の Snowflake 用形式(key.snowflake.pub の内容)を、RSA_PUBLIC_KEY フィールドに指定してください。
CREATE OR REPLACE USER attributeSVC
TYPE = SERVICE
DEFAULT_ROLE = attributeRole
DEFAULT_WAREHOUSE = attributeWarehouse
NETWORK_POLICY = attributeAccess
RSA_PUBLIC_KEY = '<public_key>'
COMMENT = "Attribute's Service User";
最後に、作成した role をアカウントに付与します。
GRANT ROLE attributeRole TO USER attributeSVC;
連携に必要な情報の収集
秘密鍵とそのパスフレーズに加えて、以下のクエリの出力(アカウント識別子を表示するもの)を取得してください。
SELECT CURRENT_ORGANIZATION_NAME() || '-' || CURRENT_ACCOUNT_NAME();
付録 A - Organization Account 連携スクリプト
以下のスクリプトには、上記ですべてのコマンドが含まれています。
RSA_PUBLIC_KEY のプレースホルダーを公開鍵に置き換え、そのままスクリプト全体を実行してください。
-- Using the appropriate role
USE ROLE ACCOUNTADMIN;
-- Creating a warehouse
CREATE OR ALTER WAREHOUSE
attributeWarehouse WITH
WAREHOUSE_SIZE = 'XSMALL'
WAREHOUSE_TYPE = 'STANDARD'
AUTO_SUSPEND = 30
INITIALLY_SUSPENDED = TRUE
COMMENT = "Attribute's Warehouse";
-- Creating a role
CREATE ROLE attributeRole
COMMENT = "Encapsulates privileges required for Attribute's service";
-- Assigning privileges
USE ROLE GLOBALORGADMIN;
GRANT APPLICATION ROLE ORG_USAGE_ADMIN TO ROLE attributeRole;
USE ROLE ACCOUNTADMIN;
GRANT USAGE ON WAREHOUSE attributeWarehouse TO ROLE attributeRole;
-- Creating a network policy
CREATE OR REPLACE NETWORK POLICY attributeAccess
ALLOWED_IP_LIST = ('34.41.229.120', '35.224.163.103');
-- Creating a user
CREATE OR REPLACE USER attributeSVC
TYPE = SERVICE
DEFAULT_ROLE = attributeRole
DEFAULT_WAREHOUSE = attributeWarehouse
NETWORK_POLICY = attributeAccess
RSA_PUBLIC_KEY = '<public_key>'
COMMENT = "Attribute's Service User";
GRANT ROLE attributeRole TO USER attributeSVC;
-- Retrieving account identifier
SELECT CURRENT_ORGANIZATION_NAME() || '-' || CURRENT_ACCOUNT_NAME();
付録 B - 新しい Organization Account の作成
以下の手順では、新しい organization account の作成方法について説明します。
コマンド内のプレースホルダーを置き換え、実行してアカウントを作成してください。
クエリは必ず、ORGADMIN が有効になっているアカウント配下のユーザーで実行し、そのユーザーが ORGADMIN role を使用できることを確認してください。
USE ROLE ORGADMIN;
CREATE ORGANIZATION ACCOUNT <new_account_name>
ADMIN_NAME = <admin_username>
ADMIN_PASSWORD = '<admin_password>'
EMAIL = '<admin_email>'
EDITION = enterprise;
お問い合わせ
追加のサポートが必要な場合は、Attribute のサポート ([email protected]) までご連絡ください。
また、サポート用の共有 Slack チャンネルへの参加をリクエストすることもできます。アクセスをリクエストするには、必要な情報を記載のうえ [email protected] までメールを送信してください。
商標: Snowflake は Snowflake Inc. の登録商標です。その他の商標は、各所有者に帰属します。