CertSafari
    Snowflake SnowPro Advanced: Administrator (ADA-C02)· Lessons

    Domain 1 · Lesson 7/24

    SCIM Provisioning in Snowflake: Integrations, Provisioner Roles and Monitoring

    Set up and manage security administration and authorization.

    10 min read
    4.43% of exam
    4 sources
    Published 5 Oct 2026
    Docs as of 4 Oct 2026

    What you will be able to do

    • Explain what SCIM does in Snowflake and which identity providers it supports
    • Create a SCIM security integration with the correct provisioner role
    • Predict which users and roles an identity provider can and cannot manage
    • Monitor and secure SCIM traffic with rest_event_history and a SCIM-specific network policy

    Key concept

    SCIM provisioner role ownership — Every user and role that SCIM creates in Snowflake is owned by one dedicated provisioner role. If that role does not own an object, changes made in the identity provider never reach it.

    1.What SCIM does for Snowflake

    SCIM 2.0 lets your organization's identity provider (IdP) act as the single source of truth for who can reach Snowflake. The IdP pushes users and groups into Snowflake, and Snowflake acts as the service provider. Snowflake has dedicated integrations for Okta and Microsoft Entra ID (formerly Azure AD). Any other IdP uses a custom integration. In Snowflake terms, an IdP group becomes a role, and both users and roles are mapped one-to-one.

    The SCIM API covers three use cases: managing users, managing groups (roles), and auditing the SCIM API requests the IdP sends. The first two cover the full lifecycle. The third is how you confirm that provisioning is actually happening.

    Ownership holds all of this together. Each IdP has its own provisioner role in Snowflake, and that role must own whatever SCIM creates. If the SCIM role does not own an imported user or role, the IdP's updates stop reaching that object. Exam questions that describe changes in Okta not showing up in Snowflake usually come down to this.

    Checkpoint 1 of 5· Match them up

    Match each identity provider integration to the Snowflake role that must own the objects it provisions.

    Tap a term, then the definition that fits it.

    Sources12

    2.Enabling and configuring the SCIM security integration

    Setup happens in four stages. First, choose the IdP. Then create a SCIM security integration in Snowflake, which is the interface between Snowflake and the IdP. Next, set up authentication for SCIM requests. Finally, have the IdP send requests. The integration is a normal security integration with type = scim. Two properties matter most: scim_client, which names the IdP, and run_as_role, which names the provisioner role that will own everything created.

    Checkpoint 2 of 5· Put it in order

    Put the SCIM enablement stages in order.

    1. 1.Choose the identity provider that will send SCIM requests
    2. 2.Configure Snowflake to authenticate SCIM requests
    3. 3.Create a SCIM security integration in Snowflake
    4. 4.Use the identity provider to send SCIM requests
    Okta setup: create the scoped provisioner role, let it create users and roles, grant it to ACCOUNTADMIN, then create the integrationsql
    use role accountadmin;
    create role if not exists okta_provisioner;
    grant create user on account to role okta_provisioner;
    grant create role on account to role okta_provisioner;
    grant role okta_provisioner to role accountadmin;
    create or replace security integration okta_provisioning
        type = scim
        scim_client = 'okta'
        run_as_role = 'OKTA_PROVISIONER';

    The provisioner role gets only CREATE USER and CREATE ROLE on the account, so it is scoped down on purpose. A less-privileged role than ACCOUNTADMIN can run the setup, but the documentation warns this can cause errors when SCIM tries to manage roles in the resulting hierarchy. It lists three options, in order of preference: use ACCOUNTADMIN, use a role with the global MANAGE GRANTS privilege, or use a custom role that has OWNERSHIP on every role SCIM will manage. For Microsoft Entra ID, create a new enterprise application in Entra rather than reusing an existing one. The SCIM integration also supports replication and failover/failback from a source account to a target account.

    Checkpoint 3 of 5· Fill the gap

    Complete the Microsoft Entra ID SCIM integration.

    use role accountadmin;
    create role if not exists 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 =  ? 
        run_as_role = 'AAD_PROVISIONER';

    Sources342

    3.Managing users and groups through the IdP

    With Okta, provisioning covers the user lifecycle (create, update, delete), the role lifecycle, and user-to-role assignments. Push New Users creates users in Snowflake. Push Profile Updates sends profile changes. Push User Deactivation deactivates the user in Snowflake, which means setting the user's DISABLED property to TRUE. Push Groups creates roles with the same names as in Okta, but it does not create users. Users are created when the Snowflake app is assigned to them in Okta. Always create roles in Okta first: OKTA_PROVISIONER cannot manage roles created by hand in Snowflake.

    To bring an existing user under Okta, transfer its ownership (grant ownership on user <user_name> to role okta_provisioner;) and make sure login_name is set. The user's name will then be changed to match the Okta username, which can break integrations that connect with the old name. Passwords need attention too. Okta's Sync Password feature can create a random Snowflake password by default, which gives users a way in without SSO. To stop this, turn the setting off in Okta and set SYNC_PASSWORD to False on the integration. Both IdP integrations also support the allowedInterfaces attribute, which blocks a provisioned user from specific interfaces.

    Where Okta and Microsoft Entra ID SCIM differ
    BehaviourOktaMicrosoft Entra ID
    Owning SCIM roleOKTA_PROVISIONERAAD_PROVISIONER
    Take over existing Snowflake usersYes, by transferring ownershipNo, existing users cannot be transferred
    Take over existing Snowflake rolesNo, only new roles created through OktaNo, existing groups cannot be transferred
    SYNC_PASSWORDSet to False (and turn off in Okta) to stop password syncHas no effect; Entra does not sync passwords
    Nested groupsAD nested groups not supportedNot supported

    Entra ID is stricter. It is the authoritative source for its users and groups, and existing Snowflake users and groups cannot be transferred to it. By default, users it provisions get no Snowflake password, so they sign in through SAML SSO if that is configured. SAML SSO is not required to use SCIM, though.

    Checkpoint 4 of 5· Check yourself

    An Okta admin pushes a group called ANALYSTS to Snowflake with Push Groups. Nobody in Okta has been assigned the Snowflake application. What exists in Snowflake afterwards?

    Sources34

    4.Monitoring and running SCIM day to day

    To check whether provisioning is working, query the rest_event_history table. It shows whether the IdP is actually sending SCIM API requests. Snowflake allows at most 500 concurrent requests per account per SCIM endpoint, such as /Users or /Groups. Past that, it returns HTTP 429. This normally only happens during initial provisioning of very large numbers of users or groups. The SCIM endpoint is the account URL followed by /scim/v2/. Use the public endpoint, without .privatelink.

    Network access is a common reason provisioning fails. The IdP's IP addresses must be allowed; for Entra ID, that means all Azure IP addresses. You don't need to add those addresses to the account-wide policy. Instead, attach a network policy to the SCIM integration itself (alter security integration okta_provisioning set network_policy = <scim_network_policy>;). A network policy on the SCIM integration overrides the account-level policy.

    A few other behaviours are worth knowing. SCIM does not turn on SSO; you enable Snowflake-initiated SSO separately. By default, Snowflake sends invitation emails to SCIM-created users within 24–48 hours, and only Snowflake Support can turn this off. SCIM can set DEFAULT_SECONDARY_ROLES to 'ALL'. The snowflakeTags attribute can apply tags, provided the tag already exists and the provisioner role has USAGE on the tag's schema and APPLY on the tag. Entra ID can add and update tags but cannot remove them; remove them with ALTER USER <user_name> UNSET TAG <database_name>.<schema_name>.<tag_name>;. If you need a user's name and login_name to differ, enable this account parameter:

    Allow separate name and login_name mappings for SCIM userssql
    ALTER ACCOUNT SET MAP_SCIM_USERNAME_TO_ENTERPRISE_ATTR = TRUE;

    Once this is enabled, every SCIM POST and PUT must include snowflakeUserName in the enterprise extension schema. Requests without it fail.

    Checkpoint 5 of 5· Check yourself

    The account network policy allows only corporate IP ranges. Okta provisioning is failing. You don't want Okta's addresses in the policy that applies to normal users. What should you do?

    Sources134

    Exam traps

    Each one states something that sounds right. Open it to see what is actually true.

    1. 1.Okta Push Groups creates both the role and its member users in Snowflake.Why is that wrong?

      Push Groups only creates and manages roles. A user is created only when the Snowflake application is assigned to that user in Okta.

      Covered in Managing users and groups through the IdP

    2. 2.Setting SYNC_PASSWORD on a Microsoft Entra ID SCIM integration controls whether Entra passwords sync to Snowflake.Why is that wrong?

      Entra ID does not sync passwords to Snowflake, whatever SYNC_PASSWORD is set to. This is an Entra limitation; the property only has an effect for Okta.

      Covered in Managing users and groups through the IdP

    3. 3.Once SCIM provisioning works, users can sign in with SSO automatically.Why is that wrong?

      SCIM only provisions identities. Snowflake-initiated SSO has to be enabled separately.

      Covered in Monitoring and running SCIM day to day

    Sources

    Every claim above is drawn from one of these pages, quoted as it was written on the date shown.

    1. 1.
      “Role management is a one-to-one mapping from the identity provider to Snowflake.”
      ↩︎ What SCIM does for Snowflake
      “If the Snowflake SCIM role does not own the imported users or roles, updates in the identity provider will not be synced to Snowflake.”
      ↩︎ What SCIM does for Snowflake
      “Administrators can query the rest_event_history table to determine whether the identity provider is sending updates”
      ↩︎ Monitoring and running SCIM day to day
      “Snowflake sends invitation emails to users created using SCIM by default.”
      ↩︎ Monitoring and running SCIM day to day
      “SCIM roles in Snowflake must own any users or roles that are imported from the identity provider.”
      ↩︎ Key concept
      “Okta SCIM Role: OKTA_PROVISIONER”
      ↩︎ Checkpoint
      “Create a SCIM security integration to establish an interface between Snowflake and your IdP.”
      ↩︎ Checkpoint
    2. 2.
      “You should use custom SCIM integrations for identity providers that are neither Okta nor Microsoft Azure AD.”
      ↩︎ What SCIM does for Snowflake
      “Snowflake supports replication and failover/failback with the SCIM security integration from the source account to the target account.”
      ↩︎ Enabling and configuring the SCIM security integration
    3. 3.
      “Use a role with the global MANAGE GRANTS privilege.”
      ↩︎ Enabling and configuring the SCIM security integration
      “For Snowflake, deactivating a user means setting the DISABLED property for the user to TRUE.”
      ↩︎ Managing users and groups through the IdP
      “This could result in a pathway for users to access Snowflake without SSO.”
      ↩︎ Managing users and groups through the IdP
      “Snowflake supports a maximum of 500 concurrent requests per account per SCIM endpoint”
      ↩︎ Monitoring and running SCIM day to day
      “Push Groups do not create users in Snowflake.”
      ↩︎ Exam trap 1
      “The SCIM provisioning process does not automatically enable single sign-on (SSO).”
      ↩︎ Exam trap 3
      “Existing Snowflake roles cannot be brought under Okta’s management through transfer of ownership.”
      ↩︎ Prediction
      “Push Groups do not create users in Snowflake.”
      ↩︎ Checkpoint
      “A network policy applied to a SCIM integration overrides a network policy applied to the entire Snowflake account.”
      ↩︎ Checkpoint
    4. 4.
      “do not re-use an existing enterprise application in Microsoft Entra ID.”
      ↩︎ Enabling and configuring the SCIM security integration
      “existing users and groups in Snowflake cannot be transferred to Microsoft Entra ID.”
      ↩︎ Managing users and groups through the IdP
      “When this parameter is enabled, all SCIM POST and PUT requests must include the snowflakeUserName attribute in the enterprise extension schema.”
      ↩︎ Monitoring and running SCIM day to day
      “Setting the SYNC_PASSWORD property in the Snowflake security integration will not synchronize user passwords from Microsoft Entra ID to Snowflake.”
      ↩︎ Exam trap 2

    Continue to page 2 of 2

    Snowflake Exfiltration Controls, Service Users, Key-Pair Auth and AI Access

    Spotted a mistake, or was something unclear? Tell us.