> 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/ko/create-and-upload/adding-data/datasource-credentials/azure.md).

# Azure Blob Storage 자격 증명

Azure Blob Storage 데이터 소스를 위한 Azure 자격 증명을 안전하게 생성합니다.

이 페이지는 Roboflow가 Azure Blob Storage 컨테이너를 다음을 통해 미러링하도록 하려는 경우에 사용합니다 [데이터 소스](/datasets/ko/create-and-upload/adding-data/datasources.md).

{% hint style="warning" %}
Azure Blob Storage의 경우, 지속적인 동기화, 반복 가져오기 또는 메타데이터 사이드카 지원이 필요할 때는 언제나 데이터 소스와 Bucket Mirror를 사용하세요. 해당 사용 사례에서는 서명된 URL이나 로컬 다운로드 워크플로를 만들지 마세요.
{% endhint %}

Azure에서는 스토리지 계정 안의 컨테이너를 이름으로 지정하므로, 데이터 소스에는 둘 다 필요합니다. Roboflow는 컨테이너만 읽고, 절대 거기에 쓰지 않습니다.

## 자격 증명 유형을 선택하세요

Roboflow는 Blob Storage 데이터 소스에 대해 세 가지 Azure 액세스 패턴을 지원합니다:

1. [**워크로드 ID**](#use-workload-identity-federation): 권장됨: 키가 필요 없고, 교체할 것도 없습니다
2. [**컨테이너 SAS**](#use-a-container-sas-token): 가장 빨리 만들 수 있지만, 만료되므로 교체해야 합니다
3. [**서비스 주체**](#use-a-service-principal): federated credentials를 차단하는 테넌트용 클라이언트 비밀

[워크로드 ID](#use-workload-identity-federation) 는 키가 없습니다: 비밀이 생성, 저장 또는 교체되지 않습니다. Microsoft [는 Azure 외부의 워크로드에 이를 권장합니다](https://learn.microsoft.com/entra/workload-id/workload-identity-federation), 따라서 테넌트 정책이 federated credentials를 차단하지 않는 한 이를 선호하세요.

### 보안 지침

어떤 자격 증명이든 만들기 전에:

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. 역할 할당을 제거하거나, federated credential을 삭제하거나, SAS를 취소하면 언제든지 Roboflow의 액세스를 취소할 수 있습니다.

Microsoft Entra는 발급자, 주체, 대상자를 기준으로 페더레이션 자격 증명을 정확히, 대소문자를 구분하여 일치시킵니다. 일치하지 않는 값을 받아들이고 나서 오류를 보고하지 않은 채 로그인에 실패하므로, 값을 직접 다시 입력하지 말고 자격 증명 만들기 모달에서 복사하세요.

### 워크로드 ID 페더레이션 사용

**권장됩니다. 키가 교환되지 않습니다.** Roboflow는 Google에서 발급한 토큰을 제시하고, Entra는 이를 컨테이너 범위의 단기 액세스 토큰으로 교환합니다. Roboflow는 비밀을 저장하지 않으며, 교체하거나 갱신할 것도 없습니다. Entra는 아래에서 구성하는 페더레이션 자격 증명만 저장합니다.

1. Roboflow에서 [Azure(워크로드 ID) 자격 증명 추가](https://app.roboflow.com/settings/thirdpartykeys#create/azureWorkloadIdentity)를 엽니다. 모달에는 **발급자**, **주체 식별자**, 그리고 **대상자**가 표시됩니다. 열린 상태로 두세요. 세 가지 모두 필요합니다.

   대상자는 Workspace마다 고유합니다. 권한 부여를 당신에게 연결하는 값이므로, 동일한 앱 등록을 가리키는 다른 Workspace는 Entra에서 거부됩니다.
2. 앱 등록을 만들거나, Roboflow용으로 보관해 둔 것을 재사용하세요:

   * 열기 [앱 등록](https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade) → **새 등록** → 이름 지정 → **등록**.
   * 다음을 복사하세요 **디렉터리(테넌트) ID** 및 **애플리케이션(클라이언트) ID** 를 개요 페이지에서 복사합니다.

   CLI를 선호하시나요? 두 번째 명령은 4단계의 역할 할당이 적용되는 서비스 주체를 만듭니다.

   ```sh
   az ad app create --display-name roboflow-datasource
   az ad sp create --id YOUR_APP_CLIENT_ID
   ```
3. 해당 앱 등록에 페더레이션 자격 증명을 추가하세요:

   * 앱 등록 → **인증서 및 비밀** → **페더레이션 자격 증명** → **자격 증명 추가**.
   * 페더레이션 자격 증명 시나리오 = **기타 발급자**.
   * Roboflow 모달의 세 값을 입력하세요: **발급자**, **주체 식별자**및 **대상자**.
   * 이름을 지정한 다음 **추가**.

   CLI를 선호하시나요? 모달의 값으로 대체하세요:

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

   앱 등록은 최대 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를 입력한 다음 저장하세요. 대상자는 자동으로 채워집니다. 다음으로 계속하세요 [Roboflow에서 자격 증명 만들기](#create-the-credential-in-roboflow).

역할 할당이 적용되기까지 몇 분이 걸릴 수 있습니다. 역할을 할당한 직후 데이터 소스 검증이 실패하면 잠시 기다린 다음 다시 검증하세요.

### 컨테이너 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는 토큰에서 서명된 만료 시간을 읽기 때문에, 데이터 소스 검증은 일반적인 액세스 오류를 보고하는 대신 SAS가 만료된 날짜를 알려줍니다. SAS는 베어러 토큰입니다. 이를 가진 누구나 만료되거나 취소될 때까지 동일한 읽기 액세스 권한을 얻습니다. 페더레이션 자격 증명의 대상자가 연결되는 방식처럼 Workspace에 묶여 있는 것은 아무것도 없으므로, 워크스페이스별로 구성할 값이 없습니다.

### 서비스 주체 사용

**테넌트가 페더레이션 자격 증명을 차단하는 경우에만 사용하세요.** 클라이언트 비밀은 만료되며 교체해야 하는데, 이것이 실패 모드입니다 [워크로드 ID](#use-workload-identity-federation) 에서 피할 수 있습니다.

1. 앱 등록을 만들고 해당 **디렉터리(테넌트) ID** 및 **애플리케이션(클라이언트) ID**, 2단계처럼 [워크로드 ID](#use-workload-identity-federation).
2. 클라이언트 비밀 만들기:

   * 앱 등록 → **인증서 및 비밀** → **클라이언트 비밀** → **새 클라이언트 비밀**.
   * 설명과 만료를 설정한 다음 **추가**를 누르고 **값** 을 즉시 복사하세요. Azure는 이를 한 번만 표시합니다.

   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).

데이터 소스를 만들 때 전체 컨테이너 URL(`https://ACCOUNT.blob.core.windows.net/CONTAINER`)을 컨테이너 필드에 붙여넣으세요. Roboflow가 스토리지 계정을 자동으로 채워줍니다. 스토리지 계정을 직접 입력하기만 하면, 컨테이너 이름만 입력해도 작동합니다.

## 다음 단계

자격 증명이 저장되면 다음으로 계속해서 [데이터 소스](/datasets/ko/create-and-upload/adding-data/datasources.md) 버킷 미러링을 구성하세요.
