Snowflake

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

2026-03-26
更新: 2026-03-27
NicheeLab編集部

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 Security試験ではSSO有効化だけではパスワードログインが残る点が問われることがあります。

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

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

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

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

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

NicheeLab編集部

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


関連記事
Snowflake

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

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

Snowflake

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

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

Snowflake

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

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

Snowflake

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

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

Snowflake

SnowPro Platform Associate完全解説|入門試験の攻略

SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...

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