Snowflake

Snowflake Security Integrations: SAML/OAuth統合の設計と実装

2026-03-26
更新: 2026-03-27
NicheeLab編集部
目次
  1. SAML 2.0 Security Integrationの仕組み
  2. SAML2 Security Integrationの作成SQL
  3. IdP別設定の比較
  4. External OAuth Security Integration
  5. Snowflake OAuth Security Integration
  6. Security Integrationの管理コマンド
  7. 認証方式の選択フロー
  8. トラブルシューティング
  9. 問題で確認
  10. よくある質問

Security Integrationは、Snowflakeと外部のアイデンティティプロバイダ(IdP)や認証サーバーを接続するためのアカウントレベルオブジェクトです。 SAML 2.0によるSSO、External OAuthによるトークンベース認証、Snowflake OAuthによるSnowsight/コネクタのOAuth認証など、用途に応じてTYPEパラメータを使い分けます。 作成にはACCOUNTADMINロール(またはCREATE INTEGRATION権限)が必要です。

SAML 2.0 Security Integrationの仕組み

SAML 2.0統合では、SnowflakeがService Provider(SP)、外部IdPがIdentity Providerとして機能します。 ユーザーがSnowsightにアクセスすると、Snowflakeは設定済みIdPにSAML認証リクエストをリダイレクトし、IdPが認証後にSAMLレスポンス(Assertion)をSnowflakeに返却します。 SnowflakeはAssertionの署名をX.509証明書で検証し、NameIDからSnowflakeユーザーを特定してセッションを確立します。

SAML2 Security Integrationの作成SQL

-- SAML 2.0 Security Integration(Okta例)
CREATE SECURITY INTEGRATION okta_saml_integration
  TYPE = SAML2
  ENABLED = TRUE
  SAML2_ISSUER = 'http://www.okta.com/exk1234567890'
  SAML2_SSO_URL = 'https://myorg.okta.com/app/snowflake/exk1234567890/sso/saml'
  SAML2_PROVIDER = 'OKTA'
  SAML2_X509_CERT = 'MIIDpDCCAoygAw...base64証明書...'
  SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = 'Okta SSO Login'
  SAML2_ENABLE_SP_INITIATED = TRUE;

-- Azure AD向けの場合
CREATE SECURITY INTEGRATION azure_ad_saml_integration
  TYPE = SAML2
  ENABLED = TRUE
  SAML2_ISSUER = 'https://sts.windows.net/<tenant-id>/'
  SAML2_SSO_URL = 'https://login.microsoftonline.com/<tenant-id>/saml2'
  SAML2_PROVIDER = 'CUSTOM'
  SAML2_X509_CERT = 'MIIDpDCCAoygAw...base64証明書...'
  SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = 'Azure AD SSO'
  SAML2_ENABLE_SP_INITIATED = TRUE
  SAML2_SNOWFLAKE_ACS_URL = 'https://<account>.snowflakecomputing.com/fed/login'
  SAML2_SNOWFLAKE_ISSUER_URL = 'https://<account>.snowflakecomputing.com';

IdP別設定の比較

設定項目OktaAzure ADPingFederate
SAML2_PROVIDEROKTACUSTOMCUSTOM
SAML2_ISSUEROktaメタデータ内のIssuer URIhttps://sts.windows.net/<tenant-id>/PingFederate Entity ID
SAML2_SSO_URLOktaアプリのSSO URLAzure ADのSAMLエンドポイントPingFederateのSSO URL
NameID形式emailAddress(推奨)emailAddress / UPNemailAddress / 任意
グループ属性連携SAML Attributeで送信グループクレームで送信Attributeマッピングで送信
SCIM連携Okta SCIM Appで自動同期Azure AD Provisioningで自動同期別途SCIM設定が必要

External OAuth Security Integration

External OAuthでは、外部の認証サーバー(Azure AD、Okta、カスタムOAuth 2.0サーバー)が発行したアクセストークンをSnowflakeが検証してセッションを確立します。 BIツールやカスタムアプリケーションからパスワードを使わずにSnowflakeに接続する場合に使用します。

-- External OAuth(Azure AD例)
CREATE SECURITY INTEGRATION azure_external_oauth
  TYPE = EXTERNAL_OAUTH
  ENABLED = TRUE
  EXTERNAL_OAUTH_TYPE = AZURE
  EXTERNAL_OAUTH_ISSUER = 'https://sts.windows.net/<tenant-id>/'
  EXTERNAL_OAUTH_JWS_KEYS_URL = 'https://login.microsoftonline.com/<tenant-id>/discovery/v2.0/keys'
  EXTERNAL_OAUTH_AUDIENCE_LIST = ('https://<account>.snowflakecomputing.com')
  EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = 'upn'
  EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'LOGIN_NAME'
  EXTERNAL_OAUTH_ANY_ROLE_MODE = 'ENABLE';

Snowflake OAuth Security Integration

Snowflake OAuthはSnowflake自身が認可サーバーとして動作するパターンです。 Snowsightや公式ドライバ/コネクタでの認証に使われ、クライアントアプリケーション側でclient_id/client_secretを管理します。

-- Snowflake OAuth Integration
CREATE SECURITY INTEGRATION snowflake_oauth_tableau
  TYPE = OAUTH
  ENABLED = TRUE
  OAUTH_CLIENT = TABLEAU_DESKTOP
  OAUTH_ISSUE_REFRESH_TOKENS = TRUE
  OAUTH_REFRESH_TOKEN_VALIDITY = 86400;

-- カスタムクライアント向け
CREATE SECURITY INTEGRATION snowflake_oauth_custom
  TYPE = OAUTH
  ENABLED = TRUE
  OAUTH_CLIENT = CUSTOM
  OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
  OAUTH_REDIRECT_URI = 'https://myapp.example.com/callback'
  OAUTH_ISSUE_REFRESH_TOKENS = TRUE
  OAUTH_REFRESH_TOKEN_VALIDITY = 7776000;

Security Integrationの管理コマンド

-- 一覧表示
SHOW SECURITY INTEGRATIONS;

-- 詳細確認(設定値・SAML用SP情報の取得)
DESCRIBE SECURITY INTEGRATION okta_saml_integration;

-- 証明書の更新
ALTER SECURITY INTEGRATION okta_saml_integration
  SET SAML2_X509_CERT = 'MIIDpDCCAoygAw...新しい証明書...';

-- 一時無効化
ALTER SECURITY INTEGRATION okta_saml_integration SET ENABLED = FALSE;

-- 削除
DROP SECURITY INTEGRATION okta_saml_integration;

認証方式の選択フロー

要件推奨方式理由
ブラウザベースのSSOSAML 2.0Snowsightとの統合が最もシンプル
BIツール(Tableau等)の認証Snowflake OAuthプリセットのOAUTH_CLIENTで即時設定可能
カスタムアプリからの接続External OAuth既存のOAuth基盤でトークン管理を一元化
バッチ処理・CI/CDキーペア認証非対話型でトークン有効期限の管理が不要

トラブルシューティング

  • SSO後に「User not found」エラー:IdPが送信するNameID(通常はメールアドレス)とSnowflakeのLOGIN_NAMEまたはEMAILが一致していない。DESCRIBE SECURITY INTEGRATION でSAML2_SNOWFLAKE_USER_MAPPING_ATTRIBUTEの設定を確認する
  • 「Invalid SAML response」エラー:X.509証明書の不一致が最も多い原因。IdP側で証明書がローテーションされていないか確認し、ALTER SECURITY INTEGRATIONで更新する
  • External OAuthでロールが使えない:EXTERNAL_OAUTH_ANY_ROLE_MODEがDISABLE(デフォルト)の場合、トークン内のスコープに含まれるロールしか使えない。ENABLEに設定するか、スコープにロール名を含める

問題で確認

Security & Governance

問題 1

あるチームがOktaをIdPとしてSnowflakeへのSAML SSOを設定した。SSOは正常に動作しているが、一部のユーザーがSnowsightにログインすると「User not found」エラーが表示される。最も可能性の高い原因はどれか。

  1. OktaのSAML Assertionで送信されるNameID値がSnowflakeのLOGIN_NAMEと一致していない
  2. Security IntegrationのENABLEDパラメータがFALSEに設定されている
  3. 対象ユーザーにACCOUNTADMINロールが付与されていない
  4. Network PolicyでOktaのIPアドレスがブロックされている

正解: A

SSOは正常に動作しているため、SAML認証自体は成功しています。「User not found」はSAML AssertionのNameID値(例:メールアドレス)に対応するSnowflakeユーザーが見つからない場合に発生します。OktaのNameID設定と各SnowflakeユーザーのLOGIN_NAMEまたはEMAIL属性の一致を確認します。ENABLEDがFALSEならSSO自体が無効化されます。ACCOUNTADMINの有無やNetwork Policyはこのエラーの原因にはなりません。

よくある質問

SAML2とOAuth Security Integrationは1つのアカウントに複数作成できますか?

SAML2のSecurity IntegrationはアカウントあたりSSO用に1つのみ有効化できます。DESCRIBE SECURITY INTEGRATION で既存のSAML統合を確認し、新しいIdPへ切り替える場合は既存統合をDROPしてから再作成するか、ALTER SECURITY INTEGRATIONで設定を上書きします。一方OAuth(External OAuth / Snowflake OAuth)のSecurity Integrationは複数作成でき、クライアントアプリケーションごとに異なる統合を持たせる設計が可能です。

SAML SSOを構成した後もパスワード認証でログインできますか?

デフォルトではSAML SSOを有効にしてもパスワード認証は引き続き使用可能です。パスワード認証を無効化するには、対象ユーザーに対してALTER USER SET PASSWORD = '' や Authentication Policyで AUTHENTICATION_METHODS = ('SAML') のみを許可する設定を行います。SnowPro Advanced: Security Engineer試験ではSSO有効化だけではパスワードログインが残る点が問われることがあります。

IdP側の証明書が更新された場合、Snowflake側でどのような操作が必要ですか?

IdPのSAML署名証明書が更新された場合、ALTER SECURITY INTEGRATION SET SAML2_X509_CERT = '<新しい証明書>' でSnowflake側の証明書を差し替える必要があります。証明書の有効期限切れに気づかずに放置するとSSO認証が失敗し、全SSOユーザーがログインできなくなります。IdP側で証明書ローテーションが発生する前にSnowflake側の更新をスケジュールに組み込むことが運用上の鍵です。

クラウドの基礎から読む

資格の話をしない、クラウドそのものの入門 8 章があります。登録なしで全部読めます。

第 0 部・無料

クラウド自体がはじめての方へ

サーバー・ネットワーク・データベースの前提知識なしで読める 8 章。登録不要・無料。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Snowflake

Snowflake資格一覧|全11試験(SnowPro)の難易度・費用

Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。SnowparkとDat...

Snowflake

Snowflake試験の難易度ランキング|全11資格を徹底比較

Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...

Snowflake

Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ

Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...

Snowflake

SnowPro Core試験完全解説|出題範囲・問題例・合格戦略

SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...

Snowflake

SnowPro Platform Associate(SOL-C01)完全解説|現在は予約不可・試験内容と次の受験先

SnowPro Associate: Platform(SOL-C01)は2026年10月時点でSnowflakeの公式...

Snowflakeの記事一覧 (102件)
© 2026 NicheeLab All rights reserved.