> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sync.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Azure Blob Storage

export const CommonAuthSchemeAzurestoragesas = ({siteName = "CData Sync", siteNameShort = "Sync", datasource = "the data source"}) => {
  return <>
      <p>To connect with an Azure shared access signature, set the following properties:</p>
      <ul>
        <li><strong>Auth Scheme:</strong> Select <strong>AzureStorageSAS</strong>.</li>
        <li><strong>Azure Shared Access Signature:</strong> Enter the shared access signature that is associated with the storage account.</li>
      </ul>
      <p>To create an Azure shared access signature:</p>
      <ol>
        <li>Sign in to the <a href="https://portal.azure.com" target="_blank" rel="noopener noreferrer">Azure portal</a> with the credentials for your root account.</li>
        <li>Click <strong>Storage accounts</strong> and select the storage account you want to use.</li>
        <li>Under <strong>Settings</strong>, click <strong>Shared Access Signature</strong>.</li>
        <li>Set the permissions and a date when the token will expire.</li>
        <li>Click <strong>Generate SAS</strong> and copy the token that is generated.</li>
      </ol>
    </>;
};

export const CommonAuthSchemeAccesskey = ({siteName = "CData Sync", siteNameShort = "Sync", datasource = "the data source"}) => {
  return <>
      <p>To connect with an Azure access key, set the following properties:</p>
      <ul>
        <li><strong>Auth Scheme:</strong> Select <strong>Access Key</strong>.</li>
        <li><strong>Azure Access Key:</strong> Enter the access key that is associated with your storage account.</li>
      </ul>
      <p>To retrieve your access key:</p>
      <ol>
        <li>Sign in to the <a href="https://portal.azure.com/" target="_blank" rel="noopener noreferrer">Azure portal</a> with the credentials for your root account.</li>
        <li>Click <strong>Storage accounts</strong> and select the storage account that you want to use.</li>
        <li>Under <strong>Settings</strong>, click <strong>Access keys</strong>. Your storage account name and key are displayed on that page.</li>
      </ol>
    </>;
};

export const CommonAuthSchemeAzureserviceprincipalcertFileFormat = ({siteName = "CData Sync", siteNameShort = "Sync", datasource = "the data source"}) => {
  return <>
      <p>To connect with an Azure service principal and client certificate, set the following properties:</p>
      <ul>
        <li><strong>Auth Scheme:</strong> Select <strong>AzureServicePrincipalCert</strong>.</li>
        <li><strong>Azure Tenant:</strong> Enter the Microsoft Online tenant to which you want to connect.</li>
        <li><strong>OAuth JWT Cert:</strong> Enter your Java web tokens (JWT) certificate store.</li>
        <li><strong>OAuth JWT Cert Type:</strong> Enter the type of key store that contains your JWT Certificate. The default type is <strong>PEMKEY_BLOB</strong>.</li>
        <li><strong>OAuth Client Id:</strong> Enter the client Id that you were assigned when you registered your application with an OAuth authorization server.</li>
        <li>(Optional) <strong>Scope:</strong> Specify the scope of your access to the application.</li>
        <li>(Optional) <strong>OAuth Authorization URL:</strong> Enter the OAuth authorization URL for the OAuth service.</li>
        <li>(Optional) <strong>OAuth Access Token URL:</strong> Enter the URL from which to retrieve the access token.</li>
        <li>(Optional) <strong>OAuth Refresh Token URL:</strong> Enter the URL from which to refresh the OAuth token.</li>
        <li>(Optional) <strong>OAuth JWT Cert Password:</strong> Enter the password for your OAuth JWT certificate.</li>
        <li>(Optional) <strong>OAuth JWT Cert Subject:</strong> Enter the subject of your OAuth JWT certificate.</li>
      </ul>
      <p>To obtain the OAuth certificate for your application:</p>
      <ol>
        <li>Log in to the <a href="https://portal.azure.com" target="_blank" rel="noopener noreferrer">Azure portal</a>.</li>
        <li>In the left navigation pane, select <strong>All services</strong>. Then, search for and select <strong>App registrations</strong>.</li>
        <li>Click <strong>New registrations</strong>.</li>
        <li>Enter an application name and select <strong>Any Azure AD Directory - Multi Tenant</strong>.</li>
        <li>After you create the application, copy the application (client) Id value that is displayed in the <strong>Overview</strong> section. Use this value as the OAuth client Id.</li>
        <li>Navigate to the <strong>Certificates & Secrets</strong> section and select <strong>Upload certificate</strong>. Then, select the certificate to upload from your local machine.</li>
        <li>Specify the duration and save the client secret. After you save it, the key value is displayed.</li>
        <li>Copy this value because it is displayed only once. You will use this value as the OAuth client secret.</li>
        <li>On the <strong>Authentication</strong> tab, make sure to select <strong>Access tokens (used for implicit flows)</strong>.</li>
      </ol>
    </>;
};

export const CommonAuthSchemeAzureserviceprincipalFileFormat = ({siteName = "CData Sync", siteNameShort = "Sync", datasource = "the data source"}) => {
  return <>
      <p>To connect with an Azure service principal and client secret, set the following properties:</p>
      <ul>
        <li><strong>Auth Scheme:</strong> Select <strong>AzureServicePrincipal</strong>.</li>
        <li><strong>Azure Tenant:</strong> Enter the Microsoft Online tenant to which you want to connect.</li>
        <li><strong>OAuth Client Id:</strong> Enter the client Id that you were assigned when you registered your application with an OAuth authorization server.</li>
        <li><strong>OAuth Client Secret:</strong> Enter the client secret that you were assigned when you registered your application with an OAuth authorization server.</li>
        <li>(Optional) <strong>Scope:</strong> Specify the scope of your access to the application.</li>
        <li>(Optional) <strong>OAuth Authorization URL:</strong> Enter the OAuth authorization URL for the OAuth service.</li>
        <li>(Optional) <strong>OAuth Access Token URL:</strong> Enter the URL from which to retrieve the access token.</li>
        <li>(Optional) <strong>OAuth Refresh Token URL:</strong> Enter the URL from which to refresh the OAuth token.</li>
      </ul>
      <p>To obtain the OAuth client Id and client secret for your application:</p>
      <ol>
        <li>Log in to the <a href="https://portal.azure.com" target="_blank" rel="noopener noreferrer">Azure portal</a>.</li>
        <li>In the left navigation pane, select <strong>All services</strong>. Then, search for and select <strong>App registrations</strong>.</li>
        <li>Click <strong>New registrations</strong>.</li>
        <li>Enter an application name and select <strong>Any Azure AD Directory - Multi Tenant</strong>.</li>
        <li>After you create the application, copy the application (client) Id value that is displayed in the <strong>Overview</strong> section. Use this value as the OAuth client Id.</li>
        <li>Navigate to the <strong>Certificates & Secrets</strong> section and select <strong>New Client Secret</strong> for the application.</li>
        <li>Specify the duration and save the client secret. After you save it, the key value is displayed.</li>
        <li>Copy this value because it is displayed only once. You will use this value as the OAuth client secret.</li>
        <li>On the <strong>Authentication</strong> tab, make sure to select <strong>Access tokens (used for implicit flows)</strong>.</li>
      </ol>
    </>;
};

export const CommonAuthSchemeAzuremsi = ({siteName = "CData Sync"}) => {
  return <>
      <p>
        To leverage Azure Managed Service Identity (MSI) when {siteName} is running on an Azure
        virtual machine, select <strong>Azure MSI</strong> for <strong>Auth Scheme</strong>. No
        additional properties are required.
      </p>
    </>;
};

export const CommonDatasourceAddConnector = ({datasource = "the data source", title = "the connector", destination = false, siteNameShort = "Sync"}) => {
  return <>
      <p>
        To enable {siteNameShort} to use data from {datasource}, you first must add the
        connector, as follows:
      </p>
      <ol>
        <li>Open the <strong>Connections</strong> page of the {siteNameShort} dashboard.</li>
        <li>Click <strong>Add Connection</strong> to open the <strong>Select Connectors</strong> page.</li>
        <li>
          Click the <strong>{destination ? "Destinations" : "Sources"}</strong> tab and locate
          the <strong>{title}</strong> row.
        </li>
        <li>
          Click the <strong>Configure Connection</strong> icon at the end of that row to open
          the <strong>New Connection</strong> page. This action opens the{' '}
          <strong>Add Connection</strong> dialog box.
          <br />
          <strong>Note:</strong> If the <strong>Configure Connection</strong> icon is not
          available, click the <strong>Download Connector</strong> icon to install
          the {title} connector.
        </li>
        <li>Enter a name for your connection in the <strong>Add Connection</strong> dialog box.</li>
        <li>Click <strong>Add</strong> to open the <strong>Settings</strong> tab for your connector.</li>
      </ol>
      <p>
        For more information about installing new connectors, see{' '}
        <a href="../connections">Connections</a>.
      </p>
    </>;
};

export const CommonDatasourceIntroSource = ({datasource = "the data source", siteName = "CData Sync"}) => {
  return <p>
      You can use the {datasource} connector from the {siteName} application to capture data
      from {datasource} and move it to any supported destination. To do so, you need to add
      the connector, authenticate to the connector, and complete your connection.
    </p>;
};

export const driverVersion = "M";

export const siteNameShort = "Sync";

export const siteName = "CData Sync";

export const datasource = "Azure Blob Storage";
export const pageTitle = "Azure Blob Storage";
export const advancedurl = "SA";

<CommonDatasourceIntroSource datasource={datasource} siteName={siteName} />

## Supported File Formats

When {siteNameShort} writes data to {datasource}, you can choose the file format for the exported data. The following file formats are supported for the {datasource} source:

* (Default) **CSV:** Plain text comma-separated values.
* **Avro:** A row-based binary format that supports schema evolution.
* **Parquet:** A columnar storage format that is optimized for analytics.

## Add the Azure Blob Storage Connector

<CommonDatasourceAddConnector datasource={datasource} title={pageTitle} destination={false} siteNameShort={siteNameShort} />

## Authenticate to Azure Blob Storage

After you add the connector, you need to set the required properties.

* **File Format:** Select the file format that you want to use: **Delta Parquet**, **CSV** (default), **Avro**, and **Parquet**.

  <Note>The **Delta Parquet** and **Apache Iceberg** file formats are not supported for {siteNameShort} source connectors. If you select either of these formats, {siteNameShort} generates an error.</Note>

* **Azure Storage Account:** Specify the storage account that should be used in Azure Blob Storage.

* **URI:** Enter the path of your container and the name of the blob (for example, `azureblob://MyContainer/MyBlob`).

{siteName} supports authenticating to {datasource} in several ways. Select your authentication method below to proceed to the relevant section that contains the authentication details.

* [**Azure Active Directory**](#azure-active-directory) (default)
* [**Azure Managed Service Identity**](#azure-managed-service-identity)
* [**Azure Service Principal**](#azure-service-principal)
* [**Azure Service Principal Certificate**](#azure-service-principal-certificate)
* [**Azure Access Key**](#azure-access-key)
* [**Azure Storage SAS**](#azure-shared-access-signature)

### Azure Active Directory

To connect with an Azure Active Directory (AD) user account, specify the following properties:

* **Auth Scheme:** Select **AzureAD**.
* **Use Lake Formation:** Select **True** if you want the AWS Lake Formation service to retrieve temporary credentials. These temporary credentials enforce access policies against the user based on the configured IAM role. You can use this service when you authenticate through AzureAD, Okta, ADFS, and PingFederate, while providing a Security Assertion Markup Language (SAML) assertion. The default setting for **Use Lake Formation** is **False**.

### Azure Managed Service Identity

<CommonAuthSchemeAzuremsi siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

### Azure Service Principal

<CommonAuthSchemeAzureserviceprincipalFileFormat siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

### Azure Service Principal Certificate

<CommonAuthSchemeAzureserviceprincipalcertFileFormat siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

### Azure Access Key

<CommonAuthSchemeAccesskey siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

### Azure Shared Access Signature

<CommonAuthSchemeAzurestoragesas siteName={siteName} siteNameShort={siteNameShort} datasource={datasource} />

## Complete Your Connection

To complete your connection:

1. Specify the following properties:

   **For the CSV format:**

   * **FMT:** Enter the format that you want to use to parse all text files. The default format is **CsvDelimited**.
   * **Aggregate Files:** Specify whether you want to aggregate all the files that are located in the URI directory and that have the same schema into a single table named AggregatedFiles. The default option is **False**.
   * **Include Column Headers:** Specify whether you want to obtain column headers from the first lines of the specified files. The default option is **True**.

   **For the Avro and Parquet formats:**

   * **Data Model:** Select the data model that you want to use to parse documents for your format and to generate the database metadata. The default data model is **Document**.
   * **Aggregate Files:** Specify whether you want to aggregate all the files that are located in the URI directory and that have the same schema into a single table named AggregatedFiles. The default option is **False**.
2. Define advanced connection settings on the **Advanced** tab. (In most cases, though, you should not need these settings.)
3. If you authenticate with AzureAD, click **Connect to Azure Blob Storage** to connect to your Azure Blob Storage account.
4. Click **Create & Test** to create your connection.
