> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/datasets/hi/create-and-upload/adding-data/datasource-credentials/azure.md).

# Azure Blob Storage क्रेडेंशियल्स

Azure Blob Storage डेटा स्रोतों के लिए Azure क्रेडेंशियल्स सुरक्षित रूप से बनाएं।

इस पेज का उपयोग तब करें जब आप चाहते हैं कि Roboflow किसी Azure Blob Storage कंटेनर को के माध्यम से मिरर करे [डेटासोर्सेस](/datasets/hi/create-and-upload/adding-data/datasources.md).

{% hint style="warning" %}
Azure Blob Storage के लिए, जब भी आपको निरंतर सिंक, दोहराए गए इम्पोर्ट, या मेटाडेटा साइडकार समर्थन चाहिए, Datasources और Bucket Mirror का उपयोग करें। उस उपयोग-केस के लिए साइन किए गए URL या स्थानीय डाउनलोड वर्कफ़्लो न बनाएं।
{% endhint %}

Azure एक storage account के अंदर एक container का नाम देता है, इसलिए एक Datasource को दोनों चाहिए। Roboflow केवल कंटेनर पढ़ता है, और उसमें कभी लिखता नहीं है।

## क्रेडेंशियल प्रकार चुनें

Roboflow Blob Storage Datasources के लिए तीन Azure एक्सेस पैटर्न का समर्थन करता है:

1. [**Workload Identity**](#use-workload-identity-federation): अनुशंसित: कोई कुंजी नहीं, रोटेट करने के लिए कुछ नहीं
2. [**Container SAS**](#use-a-container-sas-token): बनाने में सबसे तेज़, लेकिन इसकी अवधि समाप्त हो जाती है और इसे बदलना पड़ता है
3. [**Service Principal**](#use-a-service-principal): एक client secret, उन tenants के लिए जो federated credentials को ब्लॉक करते हैं

[Workload Identity](#use-workload-identity-federation) keyless है: कोई secret कभी बनाया, संग्रहीत, या रोटेट नहीं किया जाता। Microsoft [इसे Azure के बाहर के workloads के लिए अनुशंसित करता है](https://learn.microsoft.com/entra/workload-id/workload-identity-federation) , इसलिए इसे प्राथमिकता दें, जब तक कि आपकी tenant नीति federated credentials को ब्लॉक न करती हो.

### सुरक्षा दिशानिर्देश

कोई भी credential बनाने से पहले:

1. Roboflow के लिए एक समर्पित app registration का उपयोग करें।
2. केवल **Storage Blob Data Reader**दें, और इसे storage account के बजाय विशिष्ट कंटेनर तक सीमित रखें।
3. को प्राथमिकता दें [Workload Identity](#use-workload-identity-federation) को [SAS](#use-a-container-sas-token) या [client secret](#use-a-service-principal)पर, क्योंकि ये दोनों चुपचाप expire हो जाते हैं और mirroring बंद कर देते हैं।
4. क्रेडेंशियल केवल Roboflow Workspace में संग्रहीत करें [क्रेडेंशियल](https://app.roboflow.com/settings/thirdpartykeys) या अपने स्वयं के secret manager में.
5. आप role assignment हटाकर, federated credential मिटाकर, या SAS रद्द करके किसी भी समय Roboflow की पहुंच रद्द कर सकते हैं।

Microsoft Entra एक federated credential को issuer, subject, और audience पर बिल्कुल और case-sensitively मिलाता है। यह ऐसे मान स्वीकार करता है जो मेल नहीं खाते, और फिर बिना कोई त्रुटि रिपोर्ट किए साइन-इन विफल कर देता है, इसलिए मानों को दोबारा टाइप करने के बजाय Create Credential मोडल से कॉपी करें।

### Workload Identity Federation का उपयोग करें

**अनुशंसित। कोई keys का आदान-प्रदान नहीं होता।** Roboflow Google द्वारा जारी किया गया token प्रस्तुत करता है, जिसे Entra आपके कंटेनर तक सीमित एक short-lived access token से बदल देता है। Roboflow कोई secret संग्रहीत नहीं करता और आपके पास रोटेट या renew करने के लिए कुछ नहीं होता। Entra केवल नीचे आपके द्वारा कॉन्फ़िगर किया गया federated credential संग्रहीत करता है।

1. Roboflow में, खोलें [Azure (Workload Identity) credential जोड़ें](https://app.roboflow.com/settings/thirdpartykeys#create/azureWorkloadIdentity). मोडल में दिखता है एक **Issuer**, एक **Subject identifier**, और एक **Audience**. इसे खुला रखें, आपको तीनों की आवश्यकता होगी।

   Audience आपके Workspace के लिए विशिष्ट है। यही grant को आपसे बांधता है, इसलिए उसी app registration की ओर इशारा करने वाला कोई दूसरा Workspace Entra द्वारा अस्वीकार कर दिया जाता है।
2. एक app registration बनाएं, या जो आपने Roboflow के लिए रखा है उसे पुनः उपयोग करें:

   * खोलें [App registrations](https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade) → **New registration** → इसका नाम रखें → **Register**.
   * कॉपी करें **Directory (tenant) ID** और **Application (client) ID** Overview पेज से.

   CLI पसंद है? दूसरा कमांड उस service principal को बनाता है जिसके विरुद्ध चरण 4 में role assignment किया जाता है।

   ```sh
   az ad app create --display-name roboflow-datasource
   az ad sp create --id YOUR_APP_CLIENT_ID
   ```
3. उस app registration में एक federated credential जोड़ें:

   * अपने app registration → खोलें **Certificates & secrets** → **Federated credentials** → **Add credential**.
   * Federated credential scenario = **अन्य जारीकर्ता**.
   * Roboflow मोडल से तीनों मान दर्ज करें: **Issuer**, **Subject identifier**, और **Audience**.
   * इसे एक नाम दें, फिर **जोड़ें**.

   CLI पसंद है? मोडल से मानों को बदलें:

   ```sh
   az ad app federated-credential create --id YOUR_APP_OBJECT_ID --parameters '{
     "name": "roboflow-datasource",
     "issuer": "https://accounts.google.com",
     "subject": "SUBJECT_FROM_MODAL",
     "audiences": ["AUDIENCE_FROM_MODAL"]
   }'
   ```

   एक app registration अधिकतम 20 federated credentials का समर्थन करता है।
4. अपने container को app registration की read access दें:

   * खोलें [Storage accounts](https://portal.azure.com/#view/Microsoft_Azure_Storage/StorageAccountsBlade) → आपका account → **Containers** → आपका container → **Access Control (IAM)** → **जोड़ें** → **Add role assignment**.
   * Role = **Storage Blob Data Reader**, Members = आपका app registration → **Review + assign**.

   CLI पसंद है?

   ```sh
   az role assignment create \\
     --assignee YOUR_APP_CLIENT_ID \\
     --role "Storage Blob Data Reader" \\
     --scope "/subscriptions/SUB_ID/resourceGroups/RG/providers/Microsoft.Storage/storageAccounts/ACCOUNT/blobServices/default/containers/CONTAINER"
   ```
5. मोडल में वापस जाएं, tenant ID और client ID दर्ज करें और सेव करें। Audience आपके लिए पहले से भर दी जाती है। साथ जारी रखें [Roboflow में Credential बनाएं](#create-the-credential-in-roboflow).

Role assignments को प्रभावी होने में कुछ मिनट लग सकते हैं। यदि role असाइन करने के तुरंत बाद Datasource validation विफल हो जाए, तो प्रतीक्षा करें और फिर से validate करें।

### Container SAS Token का उपयोग करें

**बनाने में सबसे तेज़, लेकिन इसकी अवधि समाप्त हो जाती है।** एक shared access signature के लिए Entra setup की बिल्कुल आवश्यकता नहीं होती। SAS expire होने पर mirroring रुक जाता है, और आपको नया जारी करना पड़ता है, इसलिए प्राथमिकता दें [Workload Identity](#use-workload-identity-federation) लंबे समय तक चलने वाली किसी भी चीज़ के लिए.

1. एक container SAS जनरेट करें जिसके साथ **Read** और **List** permissions:

   * खोलें [Storage accounts](https://portal.azure.com/#view/Microsoft_Azure_Storage/StorageAccountsBlade) → आपका account → **Containers** → आपका container → **Shared access tokens**.
   * Permissions = **Read** और **List**. अपनी rotation schedule के अनुरूप expiry सेट करें।
   * क्लिक करें **Generate SAS token and URL** और token या पूरे URL में से किसी एक को कॉपी करें।

   CLI पसंद है? यह SAS को आपके storage account key से sign करता है, उसी तरह जैसे portal करता है। key आपकी मशीन पर ही रहती है और कभी Roboflow को नहीं भेजी जाती।

   ```sh
   az storage container generate-sas \\
     --account-name YOUR_ACCOUNT \\
     --account-key YOUR_ACCOUNT_KEY \\
     --name YOUR_CONTAINER \\
     --permissions rl \\
     --expiry 2027-01-01T00:00Z \\
     --output tsv
   ```

   इसके बजाय अपने Entra identity से sign करने के लिए, `--account-key` हटाएं और जोड़ें `--auth-mode login --as-user`. इसके लिए **Storage Blob Delegator** role की आवश्यकता होती है, और Azure expiry को सात दिनों तक सीमित करता है।
2. Roboflow में, खोलें [Azure (SAS Token) credential जोड़ें](https://app.roboflow.com/settings/thirdpartykeys#create/azureSasToken), token पेस्ट करें, और सेव करें। पूरे SAS URL को पेस्ट करना भी काम करता है: Roboflow केवल query string रखता है।

Roboflow token से signed expiry पढ़ता है, इसलिए Datasource validation आपको सामान्य access error रिपोर्ट करने के बजाय बताता है कि SAS किस तारीख को expire हुआ। SAS एक bearer token है: इसे रखने वाला कोई भी व्यक्ति इसके expire होने तक या आपके revoke करने तक वही read access पाता है। इसे आपके Workspace से कुछ नहीं जोड़ता, जैसे audience एक federated credential को जोड़ता है, इसलिए कॉन्फ़िगर करने के लिए कोई per-Workspace मान नहीं है।

### Service Principal का उपयोग करें

**केवल तभी उपयोग करें जब आपकी tenant federated credentials को ब्लॉक करती हो।** एक client secret expire हो जाता है और उसे रोटेट करना पड़ता है, जो वह failure mode है [Workload Identity](#use-workload-identity-federation) जिससे बचा जाता है.

1. एक app registration बनाएं और उसका **Directory (tenant) ID** और **Application (client) ID**, जैसा कि चरण 2 में [Workload Identity](#use-workload-identity-federation).
2. क्लाइंट सीक्रेट बनाएं:

   * अपने app registration → खोलें **Certificates & secrets** → **क्लाइंट सीक्रेट** → **नया क्लाइंट सीक्रेट**.
   * एक विवरण और समाप्ति तिथि सेट करें, फिर **जोड़ें**, और **मान** तुरंत कॉपी करें. Azure इसे केवल एक बार दिखाता है।

   CLI पसंद है?

   ```sh
   az ad app credential reset --id YOUR_APP_OBJECT_ID --append
   ```
3. असाइन करें **Storage Blob Data Reader** कंटेनर पर, जैसा कि चरण 4 में [Workload Identity](#use-workload-identity-federation).
4. Roboflow में, खोलें [Add an Azure (Service Principal) credential](https://app.roboflow.com/settings/thirdpartykeys#create/azureServicePrincipal), tenant ID, client ID, और secret दर्ज करें, और सेव करें।

secret expire होने से पहले कैलेंडर रिमाइंडर सेट करें। ऐसा होने पर mirroring रुक जाता है।

## Roboflow में Credential बनाएं

Azure-साइड access सेट करने के बाद:

1. जाएं [क्रेडेंशियल](https://app.roboflow.com/settings/thirdpartykeys#create) Workspace settings में.
2. क्लिक करें **क्रेडेंशियल जोड़ें** (या type-specific link का उपयोग करें: [Workload Identity](https://app.roboflow.com/settings/thirdpartykeys#create/azureWorkloadIdentity), [SAS टोकन](https://app.roboflow.com/settings/thirdpartykeys#create/azureSasToken), [Service Principal](https://app.roboflow.com/settings/thirdpartykeys#create/azureServicePrincipal)).
3. जो Azure credential type आपने सेट किया है उसे चुनें।
4. tenant ID और client ID दर्ज करें ([Workload Identity](#use-workload-identity-federation)), SAS token ([Container SAS](#use-a-container-sas-token)), या tenant ID, client ID, और secret ([Service Principal](#use-a-service-principal)).
5. क्रेडेंशियल सहेजें।
6. जब आप बनाएं तब उस credential को चुनें [डेटासोर्स](https://app.roboflow.com/settings/datasources#create).

जब आप Datasource बनाएं, तो पूरा container URL (`https://ACCOUNT.blob.core.windows.net/CONTAINER`) container field में पेस्ट करें। Roboflow आपके लिए storage account भर देता है। केवल bare container name भी काम करता है, बशर्ते आप storage account स्वयं दर्ज करें।

## अगला चरण

Credential सहेजे जाने के बाद, जारी रखें [डेटासोर्सेस](/datasets/hi/create-and-upload/adding-data/datasources.md) bucket mirroring कॉन्फ़िगर करने के लिए।
