# Author a Subscription Policy

{% hint style="info" %}
**Best practice: write global policies**

Build global subscription policies using attributes and Discovered tags instead of writing local policies to manage data access. This practice prevents you from having to write or rewrite single policies for every data source added to Immuta and from manually approving data access.
{% endhint %}

## Write access policy requirements

{% hint style="info" %}
**Private preview**

[Write policies](https://documentation.immuta.com/2024.3/secure-your-data/authoring-policies-in-secure/section-contents/reference-guides/subscription-access-types) are only available to select accounts. Contact your Immuta representative to enable this feature.
{% endhint %}

* At least one of the following permissions is required to manage write policies:
  * CREATE\_DATA\_SOURCE Immuta permission (to create local write policies)
  * GOVERNANCE Immuta permission (to create local or global write policies)
  * MANAGE\_POLICIES domain permission (to create global write policies)
* [Databricks Unity Catalog](https://documentation.immuta.com/2024.3/integrations/databricks-unity-catalog/unity-catalog-overview), [Snowflake](https://documentation.immuta.com/2024.3/integrations/snowflake/reference-guides/snowflake-overview), or [Starburst (Trino)](https://documentation.immuta.com/2024.3/integrations/starburst-trino/trino-overview) integration
* [Snowflake table grants enabled](https://documentation.immuta.com/2024.3/integrations/snowflake/how-to-guides/integration-settings/table-grants) (for Snowflake integrations)

### Enable write access policies

Once support for this feature has been enabled in your Immuta tenant,

1. Navigate to the **App Settings** page.
2. Scroll to the **Preview Features** section.
3. Click the **Enable Write Policies** checkbox and **Save** your changes.

## Create a policy

1. Determine your policy scope:
   * [**Global policy**](https://documentation.immuta.com/2024.3/secure-your-data/authoring-policies-in-secure/policies-explained): Click the **Policies page** icon in the left sidebar and select the **Subscription Policies** tab. Click **Add Subscription Policy** and complete the **Enter Name** field.
   * [**Local policy**](https://documentation.immuta.com/2024.3/secure-your-data/authoring-policies-in-secure/policies-explained): Navigate to a specific data source and click the **Policies** tab. Click **Add Subscription Policy** and select **New Local Subscription Policy**.
2. Select the access type:
   * **Read Access**: Control who can view the data source.
   * **Write Access**: Control who can view and modify data in the data source.
3. Select the level of **access restriction** you would like to apply:
   * **Allow anyone**: Check the **Require Manual Subscription** checkbox to turn off automatic subscription. Enabling this feature will require users to manually subscribe to the data source if they meet the policy.
   * **Allow anyone who asks (and is approved)**:
     1. Click **Anyone** or **An individual selected by user** from the first dropdown menu in the subscription policy builder.

        *Note: If you choose **An individual selected by user**, when users request access to a data source they will be prompted to identify an approver with the permission specified in the policy and how they plan to use the data.*
     2. Select the **Owner (of the data source)**, **USER\_ADMIN**, **GOVERNANCE**, or **AUDIT** permission from the subsequent dropdown menu.

        *Note: You can add more than one approving party by selecting **+ Add Another Approver**.*
   * **Allow users with specific groups/attributes**: See the [ABAC subscription policy guide](https://documentation.immuta.com/2024.3/secure-your-data/authoring-policies-in-secure/section-contents/how-to-guides/abac-subscription-policy) for instructions.
   * **Allow individually selected users**
4. For global policies: From the **Where should this policy be applied** dropdown menu, select **When selected by data owners**, **On all data sources**, or **On data sources**. If you selected **On data sources**, finish the condition in one of the following ways:
   * **tagged**: Select this option and then search for **tags** in the subsequent dropdown menu.
   * **with columns tagged**: Select this option and then search for **tags** in the subsequent dropdown menu.
   * **with column names spelled like**: Select this option, and then enter a **regex** and choose a **modifier** in the subsequent fields.
   * **in server**: Select this option and then choose a **server** from the subsequent dropdown menu to apply the policy to data sources that share this connection string.
   * **created between**: Select this option and then choose a **start date** and an **end date** in the subsequent dropdown menus.
5. Click **Create Policy**. If creating a global policy, you then need to click **Activate Policy** or **Stage Policy**.

## Manually grant access

Read and write access can also be granted manually by a data owner. See the [Manage data source members guide](https://documentation.immuta.com/2024.3/data-and-integrations/registering-metadata/data-source-settings/how-to-guides/manage-members#add-members-to-a-data-source) for details.

## Additional global ABAC subscription policies

When you have multiple global ABAC subscription policies to enforce, create separate global ABAC subscription policies, and then Immuta will [use boolean logic to merge all the relevant policies on the tables they map to](https://documentation.immuta.com/2024.3/secure-your-data/authoring-policies-in-secure/reference-guides/subscription-policies#merging-abac-global-subscription-policies).
