> 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/ja/toappurdo/adding-data/datasource-credentials/azure.md).

# Azure Blob Storage の認証情報

Azure Blob Storage データソース用の Azure 認証情報を安全に作成します。

Roboflow に Azure Blob Storage コンテナーをミラーリングさせたいときに、このページを使用してください [データソース](/datasets/ja/toappurdo/adding-data/datasources.md).

{% hint style="warning" %}
Azure Blob Storage では、継続的な同期、繰り返しのインポート、または metadata sidecar サポートが必要な場合は、Datasources と Bucket Mirror を使用してください。そのユースケースでは、署名付き URL やローカルダウンロードのワークフローを作成しないでください。
{% endhint %}

Azure では、ストレージ アカウント内にコンテナーが作成されるため、Datasource には両方が必要です。Roboflow はコンテナーからのみ読み取り、書き込みは一切行いません。

## 資格情報の種類を選択

Roboflow は Blob Storage Datasource に対して 3 つの Azure アクセス パターンをサポートします:

1. [**ワークロード ID**](#use-workload-identity-federation): 推奨: キー不要、ローテーション対象なし
2. [**コンテナー SAS**](#use-a-container-sas-token): 作成は最も簡単ですが、有効期限が切れるため置き換えが必要です
3. [**サービス プリンシパル**](#use-a-service-principal): フェデレーテッド資格情報をブロックするテナント向けのクライアント シークレット

[ワークロード ID](#use-workload-identity-federation) はキー不要です。シークレットは作成も保存もローテーションもされません。Microsoft [は Azure 外のワークロードに推奨しています](https://learn.microsoft.com/entra/workload-id/workload-identity-federation)。したがって、テナント ポリシーでフェデレーテッド資格情報がブロックされない限り、こちらを優先してください。

### セキュリティ ガイドライン

いずれかの資格情報を作成する前に:

1. Roboflow 専用のアプリ登録を使用してください。
2. のみを付与してください **Storage Blob Data Reader**には、ストレージ アカウントではなく特定のコンテナーにスコープを設定してください。
3. を優先してください [ワークロード ID](#use-workload-identity-federation) より [SAS](#use-a-container-sas-token) または [クライアント シークレット](#use-a-service-principal)は、どちらも気付かないうちに期限切れになり、ミラーリングが停止するためです。
4. 資格情報は Roboflow Workspace のみ [資格情報](https://app.roboflow.com/settings/thirdpartykeys) または独自のシークレット マネージャーに保存してください。
5. ロール割り当てを削除する、フェデレーテッド資格情報を削除する、または SAS を失効させることで、いつでも Roboflow のアクセスを取り消せます。

Microsoft Entra は issuer、subject、audience を完全一致かつ大文字小文字を区別してフェデレーテッド資格情報に照合します。一致しない値も受け入れたうえで、エラーを報告せずにサインインに失敗するため、値は手入力せず Create Credential モーダルからコピーしてください。

### ワークロード ID フェデレーションの使用

**推奨。キーのやり取りはありません。** Roboflow は Google 発行のトークンを提示し、Entra はそれをコンテナーにスコープされた短命のアクセス トークンと交換します。Roboflow はシークレットを保存せず、ローテーションや更新も不要です。Entra が保存するのは、以下で構成するフェデレーテッド資格情報のみです。

1. Roboflow で次を開きます: [Azure (ワークロード ID) 資格情報を追加](https://app.roboflow.com/settings/thirdpartykeys#create/azureWorkloadIdentity)。モーダルには **発行者**、 **サブジェクト ID**、および **オーディエンス**が表示されます。閉じずに、その 3 つすべてが必要です。

   Audience はあなたの Workspace 固有です。付与をあなたに関連付けるものなので、同じアプリ登録を指す別の Workspace は Entra に拒否されます。
2. アプリ登録を作成するか、Roboflow 用に保持しているものを再利用してください:

   * 開く [アプリ登録](https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade) → **新規登録** → 名前を付けて → **登録**.
   * 次をコピーします **Directory (tenant) ID** と **Application (client) ID** を概要ページから。

   CLI を使いますか? 2 つ目のコマンドは、手順 4 のロール割り当て先となるサービス プリンシパルを作成します。

   ```sh
   az ad app create --display-name roboflow-datasource
   az ad sp create --id YOUR_APP_CLIENT_ID
   ```
3. そのアプリ登録にフェデレーテッド資格情報を追加します:

   * アプリ登録を開く → **証明書とシークレット** → **フェデレーテッド資格情報** → **資格情報を追加**.
   * フェデレーテッド資格情報シナリオ = **その他の発行者**.
   * Roboflow のモーダルから 3 つの値を入力します: **発行者**, **サブジェクト ID**、および **オーディエンス**.
   * 名前を付けてから **追加**.

   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"]
   }'
   ```

   アプリ登録がサポートするフェデレーテッド資格情報は最大 20 個です。
4. アプリ登録にコンテナーの読み取りアクセスを割り当てます:

   * 開く [ストレージ アカウント](https://portal.azure.com/#view/Microsoft_Azure_Storage/StorageAccountsBlade) → あなたのアカウント → **コンテナー** → あなたのコンテナー → **アクセス制御 (IAM)** → **追加** → **ロール割り当てを追加**.
   * ロール = **Storage Blob Data Reader**、メンバー = あなたのアプリ登録 → **確認 + 割り当て**.

   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. モーダルに戻り、テナント ID とクライアント ID を入力して保存します。Audience は自動で入力されます。次へ進みます: [Roboflow で資格情報を作成](#create-the-credential-in-roboflow).

ロール割り当てが反映されるまで数分かかることがあります。Datasource の検証がロール割り当て直後に失敗した場合は、しばらく待ってから再度検証してください。

### コンテナー SAS トークンを使用

**作成は最速ですが、有効期限があります。** 共有アクセス署名には Entra の設定がまったく不要です。SAS が期限切れになるとミラーリングは停止し、新しい SAS を発行する必要があるため、長期運用には [ワークロード ID](#use-workload-identity-federation) を推奨します。

1. コンテナー SAS を生成します: **読み取り** と **一覧表示** 権限:

   * 開く [ストレージ アカウント](https://portal.azure.com/#view/Microsoft_Azure_Storage/StorageAccountsBlade) → あなたのアカウント → **コンテナー** → あなたのコンテナー → **共有アクセス トークン**.
   * 権限 = **読み取り** と **一覧表示**。ローテーション スケジュールに合う有効期限を設定してください。
   * クリック **SAS トークンと URL を生成** して、トークンまたは完全な URL のどちらかをコピーします。

   CLI を使いますか? これはポータルと同じ方法で、ストレージ アカウント キーを使って SAS に署名します。キーはローカルマシンに残り、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 ID で署名する場合は、次を外し `--account-key` を削除して、次を追加します `--auth-mode login --as-user`。これには **Storage Blob Delegator** ロールが必要で、Azure では有効期限が 7 日までに制限されます。
2. Roboflow で次を開きます: [Azure (SAS トークン) 資格情報を追加](https://app.roboflow.com/settings/thirdpartykeys#create/azureSasToken)にトークンを貼り付けて保存します。完全な SAS URL を貼り付けても問題ありません。Roboflow はクエリ文字列のみ保持します。

Roboflow はトークンから署名された有効期限を読み取るため、Datasource の検証では一般的なアクセス エラーではなく SAS の期限切れ日が表示されます。SAS はベアラー トークンです。保持している人は、有効期限が切れるか失効されるまで同じ読み取りアクセスを得ます。フェデレーテッド資格情報が Audience で Workspace に結び付くのとは異なり、Workspace ごとの値は設定できません。

### サービス プリンシパルを使用

**テナントがフェデレーテッド資格情報をブロックする場合のみ使用してください。** クライアント シークレットは期限切れになり、ローテーションが必要です。これが回避したい失敗モードです [ワークロード ID](#use-workload-identity-federation) を回避します。

1. アプリ登録を作成し、その **Directory (tenant) ID** と **Application (client) ID**をコピーします。手順 2 と同様に [ワークロード ID](#use-workload-identity-federation).
2. クライアント シークレットを作成:

   * アプリ登録を開く → **証明書とシークレット** → **クライアント シークレット** → **新しいクライアント シークレット**.
   * 説明と有効期限を設定してから **追加**、そして次をコピーします **値** をすぐに。Azure は 1 回しか表示しません。

   CLI を使いますか?

   ```sh
   az ad app credential reset --id YOUR_APP_OBJECT_ID --append
   ```
3. 割り当てる **Storage Blob Data Reader** をコンテナーに対して、手順 4 と同様に [ワークロード ID](#use-workload-identity-federation).
4. Roboflow で次を開きます: [Azure (サービス プリンシパル) 資格情報を追加](https://app.roboflow.com/settings/thirdpartykeys#create/azureServicePrincipal)にテナント ID、クライアント ID、シークレットを入力して保存します。

シークレットの期限切れ前にカレンダー通知を設定してください。期限切れになるとミラーリングは停止します。

## Roboflow で資格情報を作成

Azure 側のアクセスを設定したら:

1. に移動します [資格情報](https://app.roboflow.com/settings/thirdpartykeys#create) Workspace 設定の
2. クリック **資格情報を追加** (または種類固有のリンクを使用: [ワークロード ID](https://app.roboflow.com/settings/thirdpartykeys#create/azureWorkloadIdentity), [SAS トークン](https://app.roboflow.com/settings/thirdpartykeys#create/azureSasToken), [サービス プリンシパル](https://app.roboflow.com/settings/thirdpartykeys#create/azureServicePrincipal)).
3. 設定した Azure 資格情報の種類を選択します。
4. テナント ID とクライアント ID を入力し ([ワークロード ID](#use-workload-identity-federation) )、SAS トークン ([コンテナー SAS](#use-a-container-sas-token) )、またはテナント ID、クライアント ID、シークレット ([サービス プリンシパル](#use-a-service-principal)).
5. 資格情報を保存します。
6. その資格情報を選択して [データソース](https://app.roboflow.com/settings/datasources#create).

Datasource を作成するときは、完全なコンテナー URL (`https://ACCOUNT.blob.core.windows.net/CONTAINER` ) をコンテナー欄に貼り付けます。Roboflow がストレージ アカウントを自動入力します。ストレージ アカウントを自分で入力するなら、コンテナー名だけでも機能します。

## 次のステップ

資格情報を保存したら、次へ進みます: [データソース](/datasets/ja/toappurdo/adding-data/datasources.md) バケット ミラーリングを設定するために。
