はじめに
はじめに
DuoKey XKS MPC を使用して Snowflake アカウントで Tri-Secret Secure を有効化する
概要
Snowflake は、一連の SYSTEM$ 関数を使用する Tri-Secret Secure のセルフ登録プロセスを提供しています。このガイドでは、DuoKey XKS Proxy のデプロイから Snowflake アカウントでの TSS の有効化まで、すべてのステップを順を追って説明します。
TSS セルフ登録プロセス
DuoKey XKS による Tri-Secret Secure の段階的な有効化
前提条件
前提条件
- AWS 上の Snowflake Business Critical エディション(またはそれ以上)
- Snowflake の ACCOUNTADMIN ロール
- XKS Proxy がデプロイされた DuoKey Cockpit へのアクセス
- 少なくとも 1 つの AES-256 キーを持つ稼働中の DuoKey MPC Vault
- Snowflake と同じリージョンで KMS 権限を持つ AWS アカウント
- KMS および IAM 操作のための AWS CLI またはコンソールへのアクセス
Tri-Secret Secure は重要なセキュリティ上の意思決定です。一度有効化すると、Snowflake アカウントはすべての暗号操作について CMK に依存することになります。続行する前に、DuoKey XKS Proxy と MPC Vault が高可用性を備えた本番環境対応であることを確認してください。
ステップバイステップガイド
ステップ 1: DuoKey XKS Proxy をデプロイする
MPC Vault をバックエンドのキーマネージャーとして使用する DuoKey XKS Proxy をセットアップします。このステップは、標準の DuoKey AWS XKS デプロイと同一です。
- DuoKey XKS Proxy をデプロイする(パブリックエンドポイントまたは VPC エンドポイント)
- DuoKey Cockpit を構成し、XKS リクエストを MPC Vault にルーティングする
- Snowflake CMK 用に MPC Vault で AES-256 キーを作成する
- XKS Proxy のヘルスチェックエンドポイントが 200 OK を返すことを確認する
- キーに割り当てられた外部キー IDを記録する
XKS Proxy のデプロイ手順の詳細については、AWS XKS はじめにガイドを参照してください。
ステップ 2: AWS KMS で XKS バックの CMK を作成する
DuoKey XKS Proxy を外部キーストアとして使用する AWS KMS キーを作成します。
-- 1. Create the External Key Store in AWS KMS (if not already done)
aws kms create-custom-key-store \
--custom-key-store-name "duokey-xks-snowflake" \
--custom-key-store-type "EXTERNAL_KEY_STORE" \
--xks-proxy-uri-endpoint "https://your-xks-proxy.example.com" \
--xks-proxy-uri-path "/kms/xks/v1" \
--xks-proxy-connectivity "PUBLIC_ENDPOINT" \
--xks-proxy-authentication-credential \
AccessKeyId=AKIAEXAMPLE,RawSecretAccessKey=your-secret
-- 2. Connect the key store
aws kms connect-custom-key-store \
--custom-key-store-id "cks-1234567890abcdef0"
-- 3. Create the CMK in the External Key Store
aws kms create-key \
--origin "EXTERNAL_KEY_STORE" \
--custom-key-store-id "cks-1234567890abcdef0" \
--xks-key-id "your-external-key-id-from-duokey"
create-key によって返される Key ARN を記録してください。次のステップで必要になります。
ステップ 3: Snowflake で CMK を登録する
SYSTEM$REGISTER_CMK_INFO 関数を使用して、AWS KMS キーを Snowflake に登録します。ACCOUNTADMIN ロールが必要です。
-- Switch to ACCOUNTADMIN role
USE ROLE ACCOUNTADMIN;
-- Register the CMK ARN
SELECT SYSTEM$REGISTER_CMK_INFO(
'arn:aws:kms:eu-west-1:123456789012:key/mrk-1234abcd5678efgh'
);
| パラメーター | 説明 | 例 |
|---|---|---|
| Key ARN | XKS バックの AWS KMS キーの完全な ARN | arn:aws:kms:eu-west-1:123456789012:key/mrk-... |
| Region | Snowflake アカウントのリージョンと一致する必要があります | eu-west-1 |
| Key Type | 対称 AES-256 暗号化キーである必要があります | SYMMETRIC_DEFAULT |
登録後、Snowflake は CMK ARN と 72 時間の有効化ウィンドウを記載した確認メールを送信します。

ステップ 4: 構成を取得して IAM ポリシーを適用する
Snowflake 固有の構成を取得し、Snowflake がキーを使用できるように AWS KMS キーに IAM ポリシーを適用します。
-- Get the required IAM configuration
SELECT SYSTEM$GET_CMK_CONFIG();
これは、KMS キーにアタッチする必要がある IAM ポリシーステートメントを含む JSON ドキュメントを返します。AWS で適用します。
{
"Sid": "AllowSnowflakeAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::SNOWFLAKE_ACCOUNT_ID:root"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:GenerateDataKeyWithoutPlaintext",
"kms:DescribeKey",
"kms:CreateGrant"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": "snowflake.eu-west-1.amazonaws.com"
}
}
}
SYSTEM$GET_CMK_CONFIG() によって返される正確なポリシーを適用してください。プリンシパル ARN と条件は、お客様の Snowflake アカウントに固有のものです。
ステップ 5: 接続を確認する
Snowflake が AWS KMS と DuoKey XKS Proxy を通じて CMK に到達できることを確認します。
SELECT SYSTEM$VERIFY_CMK_INFO();
| 結果 | 意味 | アクション |
|---|---|---|
| PASSED | Snowflake は CMK を正常に使用できます | ステップ 6 に進む |
| FAILED — Key not found | AWS KMS キー ARN が正しくありません | REGISTER_CMK_INFO の ARN を確認する |
| FAILED — Access denied | IAM ポリシーが正しく適用されていません | GET_CMK_CONFIG のポリシーを再適用する |
| FAILED — Connection error | XKS Proxy に到達できないか、正常でありません | DuoKey XKS Proxy のステータスを確認する |
確認が成功すると、Snowflake ワークシートに「Verification successful」と表示されます。

ステップ 6: 72 時間待機する
Snowflake は、登録から有効化までの間に必須の 72 時間の待機期間を課します。これは誤ってロックアウトされることを防ぐための安全対策です。このステップをスキップすることはできません。
SYSTEM$GET_CMK_INFO() で現在のステータスを確認できます。CMK が事前登録済みであることを確認し、最も早い有効化日を表示します。

待機期間中は次のことを行います。
- DuoKey XKS Proxy が安定しており監視されていることを確認する
- キーの取り消しと復旧の手順をテストする
- 運用チームが TSS の依存関係を理解していることを確認する
- XKS Proxy のヘルスとレイテンシに関するアラートを設定する
ステップ 7: Tri-Secret Secure を有効化する
72 時間の待機期間の後、TSS を有効化します。
USE ROLE ACCOUNTADMIN;
SELECT SYSTEM$ACTIVATE_CMK_INFO();
この関数は次を返します。「Key rotation has started. Account admins will receive a notification email when rekeying is complete.」

SYSTEM$ACTIVATE_CMK_INFO() を通じて Tri-Secret Secure が正常に有効化されたことを示す Snowflake ワークシート
有効化されると、Snowflake は複合マスターキーですべてのデータの再キー化を開始します。このプロセスは自動的かつ透過的ですが、再キー化期間全体を通じて CMK にアクセスできる状態を維持する必要があります。
有効化後
再キー化が完了すると、Snowflake は Tri-Secret Secure が完全に有効化され、アカウントが有効化された CMK で再キー化されたことを確認する確認メールを送信します。

Snowflake からの確認メール — TSS が有効化され、アカウントが CMK で再キー化されました
TSS ステータスの確認
SELECT SYSTEM$GET_CMK_INFO();
有効化が成功すると、この関数は次を返します。「CMK with ARN: arn:aws:kms:... is activated for Tri-Secret Secure」

Snowflake ワークシート — SYSTEM$GET_CMK_INFO() が CMK が Tri-Secret Secure に対して有効化されていることを確認します
これにより次のことが確認されます。
- CMK ARN とリージョン
- 有効化ステータス
- Tri-Secret Secure が完全に動作していること
キルスイッチの実演 — XKS Proxy 無効化
DuoKey XKS を使用した Tri-Secret Secure の最も強力な機能の 1 つは、外部キーストアを切断することで Snowflake のデータへのアクセスを即座に取り消す機能です。以下は、XKS Proxy が無効化された場合に何が起こるかの実際のデモンストレーションです。
ステップ 1: AWS KMS で外部キーストアを切断する
AWS KMS コンソールから、DuoKey XKS Proxy にリンクする外部キーストアを切断します。接続状態は「Disconnected」に変わります。

AWS KMS コンソール — 外部キーストアが正常に切断され、DuoKey XKS Proxy へのリンクが遮断されました
ステップ 2: Snowflake は即座にロックアウトされる
XKS Proxy が切断されると、Snowflake は CMK にアクセスできなくなります。すべてのデータが完全にアクセス不能になり、ユーザーにはアクセス拒否エラーが表示され、いかなるデータもクエリできなくなります。

Snowflake は完全にロックされます — 「Access is denied to the customer managed key (CMK) for this account」
これは顧客管理型暗号化の真の力を示しています。XKS Proxy を切断するだけで、すべての Snowflake データを読み取り不能にできます。データの削除は不要です。これが実際の暗号シュレッディングです。キーストアを再接続すると、アクセスが即座に復元されます。
2024 年 Snowflake 侵害からの教訓: 2024 年半ば、攻撃者は盗まれた認証情報を使用して 165 以上の Snowflake 顧客アカウント(AT&T、Ticketmaster、Santander を含む)にアクセスし、数億件のレコードを流出させました。これらの顧客が DuoKey XKS を使用した Tri-Secret Secure を有効化していれば、外部キーストアを切断する 1 回のクリックで攻撃者を即座にロックアウトでき、上記のとおりすべてのデータを暗号的にアクセス不能にできたはずです。詳細については、侵害の完全な分析を参照してください。
緊急時の手順
Snowflake がデータにアクセスするのを即座に防止するには:
- DuoKey Cockpit: DuoKey MPC Vault で CMK キーを無効化する — 即時反映
- AWS KMS: KMS キーを無効化する — 数秒以内に反映
- AWS IAM: Snowflake IAM ポリシーを削除する — 数分以内に反映
取り消し後、Snowflake は新しい複合マスターキーを生成できません。既存のキャッシュされたキーは期限切れになり、すべてのデータがアクセス不能になります。
モニタリング
| 監視対象 | 場所 | アラートしきい値 |
|---|---|---|
| XKS Proxy の正常性 | DuoKey Cockpit | 200 以外のレスポンス |
| XKS Proxy のレイテンシ | DuoKey Cockpit / CloudWatch | 平均 > 100ms |
| KMS キーのステータス | AWS KMS コンソール / CloudTrail | キーの無効化または削除保留 |
| CMK 操作 | AWS CloudTrail | 予期しない Decrypt または Encrypt 呼び出し |
| MPC Vault のステータス | DuoKey Cockpit | ノードのオフラインまたはクォーラム喪失 |