SnowflakeとAzure SCIM の統合

Snowflakeは、 SCIM IDプロバイダーとしてMicrosoft Azure Active Directoryをサポートしています。

このガイドでは、SnowflakeのAzure AD ユーザーおよびグループのプロビジョニング(Azure AD内)を構成するために必要な手順を説明します。ガイドには次のセクションが含まれています。

機能

  • Snowflakeへの自動Azure AD ユーザープロビジョニング。

  • Snowflakeへの自動Azure AD グループプロビジョニング。

  • Azure AD ユーザーおよびグループのSnowflakeへの同期。

  • Azure AD が SAML SSO からSnowflake に対して構成されている場合、SnowflakeにプロビジョニングされたAzure AD ユーザーは SAML SSO 使用してSnowflakeにアクセスできます。

    注釈

    デフォルトでは、 SCIM を使用してSnowflakeにプロビジョニングされたAzure AD ユーザーには、Snowflakeでパスワードが割り当てられていません。つまり、 SAML SSO がAzure ADで構成されている場合、ユーザーは SSOを使用してSnowflakeに対して認証を行います。

    SCIM を使用してAzure AD からSnowflakeにユーザーとグループをプロビジョニングする場合、SAML SSO は必須ではありません。その他のオプションについては、 Azure AD シングルサインオンの構成 をご参照ください。

制限事項

  • Snowflakeは、各 SCIM エンドポイントのアカウントごとに最大500リクエストをサポートします。アカウントがこのしきい値を超えると、Snowflakeは 429 HTTP ステータスコード(つまり、リクエストが多すぎる)を返します。

サポート対象外

  • AWS PrivateLinkパブリックインターネットを経由せずにMicrosoft Azure AD からSnowflakeにユーザーおよびグループをプロビジョニングする場合、Microsoft AzureにSnowflakeアカウントが必要です。

  • 既存のユーザーとロールの所有権を譲渡します。Azure AD は、ユーザーとグループの信頼できるソースです。グループメンバーシップはAzure ADで更新できます。ただし、Snowflakeの既存のユーザーとグループをMicrosoft Azure AD に転送することはできません。

  • Microsoft Azure AD は現在、 ネストされたグループ の読み取りまたはプロビジョニングをサポートしていません。したがって、Snowflake Azure SCIM 統合を使用して、Snowflakeのネストされたグループをプロビジョニングまたは管理することはできません。ネストされたグループのサポートのリクエストは、Microsoftにお問い合わせください。

前提条件

SCIM を使用してAzure AD ユーザーとグループをSnowflakeにプロビジョニングする前に、次のことを確認してください。

  1. 既存のAzure AD テナント

  2. 既存のSnowflakeテナント

  3. ACCOUNTADMIN ロールを持つSnowflakeの少なくとも1人のユーザー

  4. ユーザーまたはグループをプロビジョニングする前に、アカウントに関連するため、Snowflakeの ネットワークポリシー が、 パブリッククラウド または US 政府クラウド のAzure AD IP アドレス すべて からのアクセスを許可していることを確認してください。現在、Azure SCIM ネットワークポリシーを作成するには、Azure AD IP アドレスすべてが必要です。詳細については、 SCIM ネットワークポリシーの管理 をご参照ください。

設定

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

Microsoft Azure Active Directoryを SCIM IDプロバイダーとして使用するには、 Microsoftドキュメント の指示に従ってください。

Snowflakeの構成を容易にするために、以下の SQL をコピーして最初の ステップ で使用します。

use role accountadmin;
create or replace role aad_provisioner;
grant create user on account to role aad_provisioner;
grant create role on account to role aad_provisioner;
grant role aad_provisioner to role accountadmin;
create or replace security integration aad_provisioning
    type=scim
    scim_client='azure'
    run_as_role='AAD_PROVISIONER';
select system$generate_scim_access_token('AAD_PROVISIONING');

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

  1. 管理者としてSnowflakeにログインし、Snowflakeワークシートインターフェイスまたは SnowSQL から次を実行します。

  2. ACCOUNTADMIN ロールを確認します。

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

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

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

    select system$generate_scim_access_token('AAD_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 aad_provisioning set network_policy = <SCIMネットワークポリシー>;

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

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

条件:

aad_provisioning

Azure AD SCIM セキュリティ統合の名前を指定します。

<scim_network_policy>

SnowflakeのAzure AD SCIM ネットワークポリシーを指定します。

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

トラブルシューティングのヒント

  • Azure AD がSnowflakeに更新を送信していることを確認するには、SnowflakeアプリケーションのAzure AD のログイベントとSnowflakeの SCIM 監査ログを確認して、SnowflakeがAzure ADから更新を受信していることを確認します。次の SQL を使用して、Snowflake SCIM 監査ログをクエリします。

    use role accountadmin;
    use database demo_db;
    use schema information_schema;
    select * from table(rest_event_history('scim'));
    select *
        from table(rest_event_history(
            'scim',
            dateadd('minutes',-5,current_timestamp()),
            current_timestamp(),
            200))
        order by event_timestamp;
    
  • ユーザーの更新が失敗した場合は、Snowflakeでユーザーの所有権を確認してください。 aad_provisioner ロール(またはSnowflakeでセキュリティ統合を作成するときに run_as_role パラメーターで設定されたロール)が所有していない場合、更新は失敗します。Snowflakeで次の SQL ステートメントを実行して所有権を譲渡し、再試行してください。

    grant ownership on user <username> to role AAD_PROVISIONER;
    
  • 最初の SCIM プロビジョニングの後に、Azure AD の UPN 属性値 に変更がある場合、その後のユーザーの更新は機能しません。 UPN 属性値を変更すると、Azure AD ユーザーオブジェクトとSnowflakeユーザーオブジェクト間のリンクが壊れます。 UPN 属性値の変更が発生した場合、正しい UPN 属性値でユーザーを再プロビジョニングします。