Snowflakeとのカスタム SCIM 統合

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

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

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

制限事項

  • Snowflakeは、SCIMエンドポイント(例えば、 /Users エンドポイント、 /Groups エンドポイント)ごとに、アカウントにつき最大500の同時リクエストをサポートします。アカウントがこのしきい値を超えると、Snowflakeは 429 HTTP ステータスコード(つまり、リクエストが多すぎる)を返します。このリクエスト制限は通常、ユーザーまたはグループをプロビジョニングするために比較的多数のリクエスト(つまり、1万以上)が発生する、初期プロビジョニング中にのみ発生します。

  • Snowflake アカウント URL の作成時にアンダースコアが含まれていた場合は、アンダースコアまたはハイフンを含むアカウント URL でSnowflakeアカウントにアクセスできます。

    SCIM プロバイダーが SAML SSO と SCIM の両方に同じアカウント URLs を再利用する場合、アンダースコアを含む URL はサポートされません。そのため、ハイフンを含むアカウント URL を使用して SCIM を構成します。

    アンダースコアを含まないSnowflakeアカウント URLs は、この制限による制約を受けません。

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

  • AWS PrivateLinkまたはAzure Private Linkを使用してSnowflakeにアクセスしている場合は、統合設定にこれらのいずれのURLsも入力していないことを確認してください。パブリックエンドポイント(つまり、 .privatelink なし)を入力し、ネットワークポリシーがIdP IPアドレスからのアクセスを許可していることを確認してください。さもなければ、この統合を使用することはできません。

前提条件

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

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

Snowflakeの構成プロセスでは、 SCIM のセキュリティ統合を作成して、IDプロバイダーで作成されたユーザーとロールをSnowflakeの GENERIC_SCIM_PROVISIONER SCIM ロールが所有できるようにし、 SCIM API リクエストで使用するアクセストークンを作成します。アクセストークンは6か月間有効です。有効期限が切れたら、以下に示すように手動で SYSTEM$GENERATE_SCIM_ACCESS_TOKEN を使用して、新しいアクセストークンを作成します。

注釈

SCIM 統合の既存のアクセストークンを無効にするには、 DROP INTEGRATION ステートメントを実行します。

Snowflakeで SCIM を引き続き使用するには、SCIM 統合を CREATE SECURITY INTEGRATION ステートメントで再作成し、 SYSTEM$GENERATE_SCIM_ACCESS_TOKEN を使用して新しいアクセストークンを生成します。

優先するSnowflakeクライアントで、次の SQL ステートメントを実行します。次の各ステートメントについて、以下で説明します。

use role accountadmin;
create role if not exists 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');

重要

例の SQL ステートメントは ACCOUNTADMIN システムロールを使用し、 GENERIC_SCIM_PROVISIONER カスタムロールが ACCOUNTADMIN ロールに付与されます。

権限の少ないロールを優先するために、 ACCOUNTADMIN ロールを使用しないようにすることもできます。権限の少ないロールを使用すると、最小権限のアクセスに関連するコンプライアンスの懸念に対処するのに役立ちますが、 SCIM の構成および管理プロセス中に予期しないエラーが発生する可能性があります。

これらのエラーは、ロールの作成方法と結果のロール階層が理由で、権限の少ないロールが SCIM までのすべてのロールを管理するための十分な権限を持っていないことに起因している可能性があります。したがって、構成および管理プロセスのエラーを回避するために、次のいずれかのオプションを選択してください。

  1. SQL ステートメントの例に示されているように ACCOUNTADMIN ロールを使用。

  2. グローバル MANAGE GRANTS 権限を持つロールを使用。

  3. 最初にある2つのオプションのいずれも望ましくない場合は、 SCIM を使用して管理されるすべてのロールに対して OWNERSHIP 権限を持つ、カスタムロールを使用してください。

  1. ACCOUNTADMIN ロールを使用します。

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

    create role if not exists 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 をご参照ください。

    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';
    
  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 ネットワークポリシーは、アカウント上の他のネットワークポリシーに影響しません。また、他のアカウントネットワークポリシーは、Snowflake 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 をご参照ください。

次のトピック: