Snowflakeとのカスタム SCIM 統合

カスタム SCIM 統合により、ユーザーは独自のアプリケーションを構築して、IDプロバイダーと結合し、Snowflakeにユーザーとロールをプロビジョニング、マッピング、管理できます。

現在、OktaでもMicrosoft Azure AD でもないIDプロバイダーでは、カスタム SCIM 統合がサポートされています。

SCIM アプリケーションを作成したら、以下の手順に従ってSnowflake セキュリティ統合を作成し、 SCIM API 認証トークンを生成します。 SCIM API リクエストを行う で説明されているように、認証トークンを保存し、 SCIM API リクエストヘッダーに含めます。

前提条件

ユーザーまたはグループをプロビジョニングする前に、Snowflakeの ネットワークポリシー が組織に対応する IP 範囲からのアクセスを許可していることを確認します。詳細については、 SCIM ネットワークポリシーの管理 をご参照ください。

制限事項

  • Snowflakeアカウントが、アンダースコアを含むアカウント名で作成された場合(例: my_account)、アンダースコアまたはハイフンを含むアカウント名(例: my-account)でSnowflakeアカウントにアクセスできます。 SCIM プロバイダーが SAML SSO と SCIM の両方に同じアカウント名を再利用する場合、アンダースコアを含むアカウント名はサポートされません。そのため、ハイフンを含むアカウント名を使用して SCIM を構成します。

  • カスタム SCIM 統合では、ネストされたグループのプロビジョニングと管理が許可される場合と許可されない場合があります。カスタム SCIM 統合を使用してSnowflakeでネストされたグループをプロビジョニングする前に、IDプロバイダーに連絡して、ネストされたグループを SCIM 統合で使用できるかどうかを確認してください。

カスタム SCIM セキュリティ統合と API トークンを作成します

The Snowflake configuration process creates a SCIM security integration to allow users and roles created in the identity provider to be owned by the GENERIC_SCIM_PROVISIONER SCIM role in Snowflake and creates an access token to use in SCIM API requests. The access token is valid for six months. Upon expiration, create a new access token manually using SYSTEM$GENERATE_SCIM_ACCESS_TOKEN as shown below.

優先するSnowflakeクライアントで、次の SQL ステートメントを実行します。

use role accountadmin;
create or replace role generic_scim_provisioner;
grant create user on account to role generic_scim_provisioner;
grant create role on account to role generic_scim_provisioner;
grant role generic_scim_provisioner to role accountadmin;
create or replace security integration generic_scim_provisioning
    type=scim
    scim_client='generic'
    run_as_role='GENERIC_SCIM_PROVISIONER';
select system$generate_scim_access_token('GENERIC_SCIM_PROVISIONING');

次の各ステートメントについて、以下で説明します。

  1. セキュリティ統合には ACCOUNTADMIN ロールが必要であるため、 ACCOUNTADMIN ロールを確認してください。

    use role accountadmin;
    
  2. カスタムロール GENERIC_SCIM_PROVISIONER を作成します。IdP によって作成されたSnowflakeのすべてのユーザーとロールは、スコープが絞られた GENERIC_SCIM_PROVISIONER ロールによって所有されます。

    create or replace role generic_scim_provisioner;
    grant create user on account to role generic_scim_provisioner;
    grant create role on account to role generic_scim_provisioner;
    
  3. GENERIC_SCIM_PROVISIONER カスタムロールを使用して、 ACCOUNTADMIN ロールによるセキュリティ統合の作成を許可します。詳細については、 CREATE SECURITY INTEGRATION をご参照ください。

    create or replace security integration generic_scim_provisioning
        type=scim
        scim_client='generic'
        run_as_role='GENERIC_SCIM_PROVISIONER';
    
  4. 認証トークンを作成して保存し、後で使用できるように安全に保存します。SCIM REST API リクエストごとにこのトークンを使用し、リクエストヘッダーに配置します。アクセストークンは6か月後に期限が切れます。このステートメントを使用して新しいアクセストークンを生成できます。

    select system$generate_scim_access_token('GENERIC_SCIM_PROVISIONING');
    

Snowflake起動 SSO の有効化

SCIM プロビジョニングプロセスは、シングルサインオン(SSO)を自動的に有効にしません。

SCIM プロビジョニングプロセスの完了後に SSO を使用するには、 Snowflakeにより開始される SSO を有効にします。

SCIM ネットワークポリシーの管理

SCIM ネットワークポリシーには独自の設定があるため、 SCIM プロバイダーは、通常のユーザーアクセス用にこれらの IP アドレスを追加することなく、ユーザーとグループのプロビジョニングを明確に許可できます。

SCIM 統合に固有のネットワークポリシーを設定すると、 SCIM をSnowflakeアカウントに適用される他のネットワークポリシーと区別できます。 SCIM ネットワークポリシーは、アカウント上の他のネットワークポリシーに影響しません。また、他のアカウントネットワークポリシーは SCIM ネットワークポリシーに影響しません。したがって、 SCIM ネットワークポリシーにより、Snowflake SCIM 統合により、ユーザーおよびグループを意図したとおりにプロビジョニングできます。

SCIM セキュリティ統合を作成したら、次のコマンドを使用して SCIM ネットワークポリシーを作成します。

alter security integration generic_scim_provisioning set network_policy = <SCIMネットワークポリシー>;

SCIM ネットワークポリシーを設定解除するには、次のコマンドを使用します。

alter security integration generic_scim_provisioning unset <SCIMネットワークポリシー>;

条件:

generic_scim_provisioning

カスタム SCIM セキュリティ統合の名前を指定します。

<scim_network_policy>

Snowflakeのカスタム SCIM ネットワークポリシーを指定します。

詳細については、 ネットワークポリシー および ALTER SECURITY INTEGRATION をご参照ください。