> For the complete documentation index, see [llms.txt](https://help.aikido.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.aikido.dev/docs/docs-ja/sonono/siem-connectors/snowflake.md).

# Snowflake

{% hint style="info" %}
このコネクタは現在、リクエストに応じて利用可能です。 [サポートまでお問い合わせください](https://www.aikido.dev/contact) ワークスペースで有効化してもらうために。
{% endhint %}

Aikido の問題を Snowflake に送信すると、セキュリティ上の検出結果をデータウェアハウス内の他のデータと並べてクエリできます。

これは、チームが Aikido の検出結果に対して独自の分析を実行したり、他の業務データと結合したり、既存の Snowflake ベースのダッシュボードやアラートに取り込んだりしたい場合に便利です。

### 要件

接続する前に、Snowflake から次を取得してください：

* **アカウント識別子、データベース、ウェアハウス、スキーマ、ロール、ユーザー** - テーブル、ステージ、ファイル形式を作成する権限を持つ専用のサービスアカウント用です。
* **テーブル名** - 対象のテーブルです。まだ存在しない場合、Aikido は最初にデータを書き込むときに自動的に作成します。
* **ステージ名** - テーブルが最初に作成されるときのみ使用されます。
* **認証** - RSA **秘密鍵** （推奨）または **パスワード** をサービスアカウント用に。

### Snowflake への接続

{% stepper %}
{% step %}

#### Snowflake サービスアカウントを設定する

個人のログインではなく、専用のサービスアカウントを推奨します。作成するユーザーの種類は認証方法によって異なります。

**キーペア認証（推奨）**

次に従ってください [Snowflake のキーペア認証ガイド](https://docs.snowflake.com/en/user-guide/key-pair-auth) RSA キーペアを生成し、次のように公開鍵を持つサービスユーザーを作成します：

```sql
CREATE USER aikido_service_account
    COMMENT = 'Aikido Snowflake 統合用のサービスアカウント'
    TYPE = 'service'
    RSA_PUBLIC_KEY = 'Your RSA Public Key';
```

秘密鍵（生の PEM または base64）は安全な場所に保管してください。後の手順で Aikido に貼り付けます。

**パスワード認証**

{% hint style="warning" %}
Snowflake のサービスユーザー（`TYPE = 'service'`）はパスワードログインをサポートしていません。パスワードで認証したい場合は、サービスユーザーではなく標準ユーザーを作成してください。
{% endhint %}

```sql
CREATE USER aikido_service_account
    COMMENT = 'Aikido Snowflake 統合用のサービスアカウント'
    PASSWORD = '強力な、生成されたパスワード'
    MUST_CHANGE_PASSWORD = FALSE;
```

可能であれば、パスワード認証よりキーペア認証を推奨します。

**ロールを作成して権限を付与する**

```sql
CREATE ROLE aikido_service_account_role;

GRANT ROLE aikido_service_account_role TO USER aikido_service_account;

GRANT USAGE ON WAREHOUSE {your_warehouse} TO ROLE aikido_service_account_role;
GRANT USAGE ON DATABASE {your_database} TO ROLE aikido_service_account_role;
GRANT USAGE ON SCHEMA {your_database}.{your_schema} TO ROLE aikido_service_account_role;
GRANT CREATE TABLE ON SCHEMA {your_database}.{your_schema} TO ROLE aikido_service_account_role;
GRANT CREATE STAGE ON SCHEMA {your_database}.{your_schema} TO ROLE aikido_service_account_role;
GRANT CREATE FILE FORMAT ON SCHEMA {your_database}.{your_schema} TO ROLE aikido_service_account_role;
```

これはコネクタが実際に必要とするもの、つまりウェアハウスのクエリと、最初の書き込み時にテーブル、ステージ、ファイル形式を作成することをカバーしています。必要ありません `MONITOR` の付与や `USAGE ON FUTURE SCHEMAS`。これらは単一テーブルのコネクタに必要な以上の広いアクセス権を与えます。このロールに後から作成されるスキーマへのアクセスや、ウェアハウス／データベース活動の可視性を別途持たせたい場合にのみ追加してください。

Aikido にテーブルを作成させるのではなく、すでに自分で作成したテーブルを Aikido に指し示す場合は、その特定のテーブルへの書き込み権限も付与してください：

```sql
GRANT INSERT ON TABLE {your_database}.{your_schema}.{your_table} TO ROLE aikido_service_account_role;
```

{% endstep %}

{% step %}

#### SIEM を接続する

次へ移動します： **Settings > Integrations** Aikido アプリで、新しい SIEM 統合を追加します。 **SIEM を接続する** ダイアログで次を選択します： **Snowflake** を選択して、次を入力します：

**設定**

* **データベース** - 接続先の Snowflake データベースです。
* **ウェアハウス** - クエリの実行とデータの読み込みに使用される仮想ウェアハウスです。
* **スキーマ** - 対象テーブルがあるデータベース内のスキーマです。
* **ユーザー** - サービスアカウントのユーザー名です。
* **アカウント** - Snowflake のアカウント識別子です。Snowflake の現在の標準形式は `organization_name-account_name` （実行 `SELECT CURRENT_ORGANIZATION_NAME(), CURRENT_ACCOUNT_NAME();` Snowflake で両方を確認できます）。古い account-locator 形式もアカウントによっては使える場合があります。該当するものが不明な場合は、 [Snowflake のアカウント識別子ガイド](https://docs.snowflake.com/en/user-guide/admin-account-identifier) を参照してください。
* **テーブル** - データを書き込む先のテーブルです。存在しない場合、Aikido が自動的に作成します。
* **大文字小文字を区別しない** - チェックすると、テーブル作成時に列名は大文字に変換されます（Snowflake の既定の動作）。チェックしない場合、元の大文字小文字は保持されます。データの読み込み自体は常に列名を大文字小文字を区別せずに照合します。
* **ステージ** - データの読み込みに使用される Snowflake ステージで、テーブルが最初に作成されるときのみ関連します。
* **役割** - サービスアカウントが使用するロールです。
* **認証タイプ** - 次を選択してください **秘密鍵** （推奨）または **パスワード**.

**オプション**

* **バッチ設定** - 書き込み前にデータをどのようにバッチ処理するかを制御します：
  * **バッチデータサイズ** - レコード数や経過時間に関係なく、送信前のバッチの最大合計サイズ（バイト数）です。
  * **バッチレコード数** - バッチが自動送信される前に蓄積するレコードの最大数。
  * **最大フラッシュ間隔** - サイズや件数に関係なく、送信前にレコードを保持する最大時間（秒）。

**認証**

選択したものに一致するフィールドを入力してください **認証タイプ**:

* **秘密鍵** - サービスアカウントの RSA 秘密鍵。生の PEM 形式または base64 形式です。
* **パスワード** - サービスアカウントのパスワード。パスワード認証を使用する場合のみ（秘密鍵より安全性は低いです）。

クリックします **接続をテスト** Aikido が Snowflake に到達できることを確認してから、 **変更を保存**.
{% endstep %}

{% step %}

#### 同期する問題を設定

Snowflake の統合ページで、 **Issue 入力設定**、同期するAikidoの問題を設定します：

* **問題のステータス** － たとえば、未解決の問題のみを同期するか、解決済みや無視された問題も含めるかを選択します。
* **最小重大度** － 同期する最小の重大度レベル。
* **問題の種類** － 特定の問題タイプに限定するか、すべてを同期します。
* **Language** － 特定の言語に限定するか、すべてを同期します。
* **同期頻度** - Aikido が一致する問題を Snowflake に送信する頻度です（例：1時間ごと）。

クリックします **設定を保存**.
{% endstep %}
{% endstepper %}

### データの読み込み方法

まだ存在しないテーブルに初めてデータが書き込まれると、Aikido はデータをステージし、 `COPY INTO` を使用して Snowflake にスキーマを推測させ、テーブルを自動作成します。テーブルが存在するようになると、その後の書き込みは直接の `INSERT` 文に切り替わり、継続的な小さなバッチではよりコスト効率が高くなります。

### イベントが届いていることを確認する

Snowflake では、対象テーブルを直接クエリしてください。設定した同期頻度が経過するのを待つか、Aikido でテスト問題をトリガーして、新しい行が表示されることを確認してください。

### トラブルシューティング

* **接続エラーまたはタイムアウトエラー** - アカウント識別子の形式を再確認し、ウェアハウスがすぐに起動することを確認してください（接続は30秒でタイムアウトします）。
* **認証エラー** - キーペア認証の場合は、秘密鍵がサービスアカウントに登録された公開鍵と一致することを確認し、PEM 形式と base64 形式の両方を試してください。パスワード認証の場合は、認証情報が正しく、パスワード認証が有効になっていることを確認してください。
* **データが見つからない** - データベース、スキーマ、テーブル、ステージ名がすべて正しいことを確認してください。
* **挿入時のスキーマ不一致** - テーブルが存在するようになると、受信データはそのスキーマに一致している必要があります。データの形が時間とともに変わる場合、挿入が失敗し始めることがあります。
* **テーブルが作成されない** - テーブル作成にはステージアクセスが必要です。ロールに `CREATE STAGE` と `CREATE FILE FORMAT` のスキーマ権限があることを確認してください。

### 制限事項

* サポートされるのは JSON データのみです。
* Aikido がテーブルを作成する場合、明示的なスキーマ定義はサポートされていません。データからスキーマを推測します。自分のスキーマでテーブルを事前作成し、それを Aikido に指し示すこともできます。その場合は、サービスロールに `INSERT` そのテーブルに対する権限があることを確認してください（上記の付与を参照）。
* 直接挿入では、既存のテーブルスキーマが受信データと一致している必要があります。不一致のデータは挿入失敗の原因になります。

### 統合の管理

次から： **設定 > 統合 > Snowflake** Aikido で、次のことができます：

* **統合を管理** - 接続詳細、バッチ処理、または認証を更新します。
* **統合を削除** - Snowflake の接続を解除します。これにより今後の同期はすべて停止します。すでに Snowflake に書き込まれた行は削除されません。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.aikido.dev/docs/docs-ja/sonono/siem-connectors/snowflake.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
