SCIM(System for Cross-domain Identity Management)2.0は、 IdP(Identity Provider)からSnowflakeへユーザーとグループを自動的にプロビジョニング・デプロビジョニングするための標準プロトコルです。 SCIM統合を設定すると、IdP側でのユーザー追加・変更・無効化がSnowflakeに自動反映され、手動でのCREATE USER / DROP USER操作が不要になります。
SCIM連携では、IdPがSCIMクライアントとしてSnowflakeのSCIM APIエンドポイントにHTTPリクエストを送信します。 SnowflakeはSCIMサーバーとして動作し、リクエストに応じてユーザーやグループの作成・更新・無効化を実行します。 認証にはBearer Token(SCIM Security Integration作成時に生成されるOAuthトークン)を使用します。
-- ACCOUNTADMINロールで実行
USE ROLE ACCOUNTADMIN;
-- SCIMプロビジョニング用のカスタムロールを作成
CREATE ROLE IF NOT EXISTS scim_provisioner;
GRANT CREATE USER ON ACCOUNT TO ROLE scim_provisioner;
GRANT CREATE ROLE ON ACCOUNT TO ROLE scim_provisioner;
-- Okta向けSCIM Security Integration
CREATE SECURITY INTEGRATION okta_scim_integration
TYPE = SCIM
SCIM_CLIENT = 'OKTA'
RUN_AS_ROLE = 'SCIM_PROVISIONER';
-- Azure AD向けSCIM Security Integration
CREATE SECURITY INTEGRATION azure_scim_integration
TYPE = SCIM
SCIM_CLIENT = 'AZURE'
RUN_AS_ROLE = 'SCIM_PROVISIONER';
-- 汎用SCIM(PingFederate等)
CREATE SECURITY INTEGRATION generic_scim_integration
TYPE = SCIM
SCIM_CLIENT = 'GENERIC'
RUN_AS_ROLE = 'SCIM_PROVISIONER';-- SCIM APIエンドポイントとトークンを取得
-- Integration作成後にSELECTで確認
SELECT SYSTEM$GENERATE_SCIM_ACCESS_TOKEN('OKTA_SCIM_INTEGRATION');
-- SCIMエンドポイントURL
-- https://<account>.snowflakecomputing.com/scim/v2/
-- トークンはIdP側のSCIMプロビジョニング設定に入力するhttps://<account>.snowflakecomputing.com/scim/v2/ を入力https://<account>.snowflakecomputing.com/scim/v2/ を入力| 同期対象 | IdP側操作 | Snowflake側の結果 |
|---|---|---|
| Users | ユーザー作成 | CREATE USER が実行される(LOGIN_NAME、DISPLAY_NAME、EMAIL等が設定) |
| Users | ユーザー属性変更 | ALTER USER でDISPLAY_NAME、EMAIL等が更新される |
| Users | ユーザー無効化/削除 | ALTER USER SET DISABLED = TRUE(DROP USERはされない) |
| Groups | グループ作成 | CREATE ROLE が実行される(RUN_AS_ROLEの権限で) |
| Groups | グループにメンバー追加 | GRANT ROLE <group_role> TO USER <user> が実行される |
| Groups | グループからメンバー削除 | REVOKE ROLE <group_role> FROM USER <user> が実行される |
| Groups | グループ削除 | ロール自体は削除されない(手動でDROP ROLEが必要) |
SCIM Security IntegrationのRUN_AS_ROLEは、SCIMプロビジョニングがSnowflake内で操作を実行する際に使用するロールです。 このロールに付与されている権限の範囲内でのみプロビジョニングが実行されます。
-- RUN_AS_ROLE用のカスタムロール設計例
CREATE ROLE scim_provisioner;
-- ユーザーとロールの作成権限
GRANT CREATE USER ON ACCOUNT TO ROLE scim_provisioner;
GRANT CREATE ROLE ON ACCOUNT TO ROLE scim_provisioner;
-- SCIMで作成されたロールをACCOUNTADMINに管理させたい場合
GRANT ROLE scim_provisioner TO ROLE ACCOUNTADMIN;
-- 注意: RUN_AS_ROLEにACCOUNTADMINを指定するのは
-- セキュリティ上推奨されない。最小権限のカスタムロールを使用する-- SCIM APIコールの監査
SELECT *
FROM TABLE(INFORMATION_SCHEMA.REST_EVENT_HISTORY(
DATE_RANGE_START => DATEADD(DAY, -7, CURRENT_DATE()),
DATE_RANGE_END => CURRENT_DATE()
))
WHERE event_type = 'SCIM'
ORDER BY event_timestamp DESC;Security & Governance
問題 1
Okta経由のSCIMプロビジョニングで、Okta側でグループ「data_team」を作成しメンバーを追加した。Snowflake側でどのような操作が自動実行されるか。最も正確な説明はどれか。
正解: B
SCIM ProvisioningでIdPのグループがSnowflakeに同期されると、グループ名に対応するROLEが作成され(CREATE ROLE data_team)、グループのメンバーであるユーザーにそのロールがGRANT ROLE data_team TO USER <user> で付与されます。SCIMはユーザーとロールのプロビジョニングのみを行い、データベースやウェアハウスなどのSnowflakeオブジェクトの作成は行いません。
SCIM ProvisioningでIdP側でユーザーを削除した場合、Snowflakeのユーザーはどうなりますか?
IdP側でユーザーを削除(またはアプリからのアサインメント解除)すると、SCIM APIを通じてSnowflake側のユーザーはDISABLED状態になります。Snowflakeからユーザーオブジェクト自体が削除されるわけではありません。完全に削除するにはSnowflake側でDROP USERを手動実行する必要があります。これはSnowflakeが監査証跡やOWNERSHIPの一貫性を保つための仕様です。
SCIMで同期されたユーザーのパスワードはどう管理されますか?
SCIM Provisioningではパスワードの同期は行いません。SCIMで作成されたユーザーはSSO(SAML 2.0)で認証する前提で、Snowflake側にパスワードは設定されません。パスワード認証が必要な場合はSnowflake管理者が個別にALTER USER SET PASSWORDを実行する必要がありますが、SCIM連携環境ではSSO認証に一本化する設計が推奨されます。
OktaとAzure ADの両方からSCIM同期できますか?
Snowflakeアカウントに複数のSCIM Security Integrationを作成することは可能ですが、同一ユーザーを複数のIdPから同期すると競合が発生するリスクがあります。実運用では1つのIdPからのみSCIM同期し、もう一方はSSO認証のみに使用する構成が安定します。複数IdPからの同期が必要な場合は、同期対象のグループやユーザーが重複しないようIdP側でスコープを分離します。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Snowflake資格一覧|全11試験(SnowPro)の難易度・費用
Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...
Snowflake試験の難易度ランキング|全11資格を徹底比較
Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...
Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ
Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...
SnowPro Core試験完全解説|出題範囲・問題例・合格戦略
SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...
SnowPro Platform Associate完全解説|入門試験の攻略
SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...