Azure Blob Storage에 Azure Stream Analytics 작업을 인증하기 위해 관리 ID를 사용하십시오.

관리 ID 인증을 사용하여 Blob Storage를 Azure 출력하는 경우 Stream Analytics 작업은 연결 문자열 사용하지 않고 스토리지 계정에 직접 액세스할 수 있습니다. 이 기능을 사용하면 보안이 향상되고 Azure 내의 VNET(가상 네트워크)의 스토리지 계정에 데이터를 쓸 수 있습니다.

이 문서에서는 Azure 포털 및 Azure Resource Manager 배포를 통해 Stream Analytics 작업의 Blob 출력에 대해 관리 ID를 사용하도록 설정하는 방법을 보여 줍니다.

Azure 포털을 사용하여 Stream Analytics 작업 만들기

먼저 Azure Stream Analytics 작업에 대한 관리 ID를 만듭니다. 

  1. Azure Portal에서 Stream Analytics 작업을 엽니다. 

  2. 왼쪽 탐색 메뉴의 구성 아래에서 관리 ID를 선택합니다. 그런 다음, 시스템 할당 관리 ID 사용 옆에 있는 확인란을 선택하고 저장을 선택합니다.

    시스템 할당 관리 ID

  3. Azure는 Microsoft Entra ID에서 Stream Analytics 작업의 ID에 대한 서비스 주체를 만듭니다. Azure 새로 만든 ID의 수명 주기를 관리합니다. Stream Analytics 작업을 삭제하면 Azure 연결된 ID(즉, 서비스 주체)를 자동으로 삭제합니다. 

    구성을 저장하면 다음 섹션에서 서비스 프린시플의 OID(개체 ID)가 보안 주체 ID로 표시됩니다.

    보안 주체 ID

    서비스 주체에는 Stream Analytics 작업과 동일한 이름이 사용됩니다. 예를 들어, 작업 이름이 MyASAJob이면 서비스 주체 이름도 MyASAJob입니다. 

Azure Resource Manager 배포

Azure Resource Manager 사용하여 Stream Analytics 작업의 배포를 완전히 자동화할 수 있습니다. Azure PowerShell 또는 Azure CLI 사용하여 Resource Manager 템플릿을 배포할 수 있습니다. 다음 예제에서는 Azure CLI 사용합니다.

  1. Resource Manager 템플릿의 리소스 섹션에 다음 속성을 포함하여 관리 ID가 적용된 Microsoft.StreamAnalytics/streamingjobs 리소스를 생성합니다:

    "Identity": {
      "Type": "SystemAssigned",
    },
    

    이 속성을 통해 Azure Resource Manager에서 Stream Analytics 작업에 대한 ID를 만들고 관리합니다. 다음 예제 Resource Manager 템플릿은 관리 ID를 사용하도록 설정된 Stream Analytics 작업과 관리 ID를 사용하는 Blob 출력 싱크를 배포합니다.

    {
        "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "resources": [
            {
                "apiVersion": "2017-04-01-preview",
                "name": "MyStreamingJob",
                "location": "[resourceGroup().location]",
                "type": "Microsoft.StreamAnalytics/StreamingJobs",
                "identity": {
                    "type": "systemAssigned"
                },
                "properties": {
                    "sku": {
                        "name": "standard"
                    },
                    "outputs":[
                        {
                            "name":"output",
                            "properties":{
                                "serialization": {
                                    "type": "JSON",
                                    "properties": {
                                        "encoding": "UTF8"
                                    }
                                },
                                "datasource":{
                                    "type":"Microsoft.Storage/Blob",
                                    "properties":{
                                        "storageAccounts": [
                                            { "accountName": "MyStorageAccount" }
                                        ],
                                        "container": "test",
                                        "pathPattern": "segment1/{date}/segment2/{time}",
                                        "dateFormat": "yyyy/MM/dd",
                                        "timeFormat": "HH",
                                        "authenticationMode": "Msi"
                                    }
                                }
                            }
                        }
                    ]
                }
            }
        ]
    }
    

    다음 Azure CLI 명령을 사용하여 이전 작업을 리소스 그룹 ExampleGroup 배포할 수 있습니다.

    az deployment group create --resource-group ExampleGroup -template-file StreamingJob.json
    
  2. 작업을 만든 후 Azure Resource Manager 사용하여 작업의 전체 정의를 검색합니다.

    az resource show --ids /subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.StreamAnalytics/StreamingJobs/{RESOURCE_NAME}
    

    앞의 명령은 다음 예제와 같은 응답을 반환합니다.

    {
        "id": "/subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.StreamAnalytics/streamingjobs/{RESOURCE_NAME}",
        "identity": {
            "principalId": "{PRINCIPAL_ID}",
            "tenantId": "{TENANT_ID}",
            "type": "SystemAssigned",
            "userAssignedIdentities": null
        },
        "kind": null,
        "location": "West US",
        "managedBy": null,
        "name": "{RESOURCE_NAME}",
        "plan": null,
        "properties": {
            "compatibilityLevel": "1.0",
            "createdDate": "2019-07-12T03:11:30.39Z",
            "dataLocale": "en-US",
            "eventsLateArrivalMaxDelayInSeconds": 5,
            "jobId": "{JOB_ID}",
            "jobState": "Created",
            "jobStorageAccount": null,
            "jobType": "Cloud",
            "outputErrorPolicy": "Stop",
            "package": null,
            "provisioningState": "Succeeded",
            "sku": {
                "name": "Standard"
            }
        },
        "resourceGroup": "{RESOURCE_GROUP}",
        "sku": null,
        "tags": null,
        "type": "Microsoft.StreamAnalytics/streamingjobs"
    }
    

    작업 정의에서 principalId 기록해 둡니다. 이 정의는 Microsoft Entra ID 내에서 작업의 관리 ID를 식별하고 다음 단계에서 Stream Analytics 작업에 스토리지 계정에 대한 액세스 권한을 부여하는 데 사용됩니다.

  3. 이제 작업을 만들었으므로 이 문서의 스토리지 계정 섹션에 대한 Stream Analytics 작업 액세스 권한 부여 섹션을 참조하세요 .

스토리지 계정에 Stream Analytics 작업 액세스 권한 부여

Stream Analytics 작업에 두 가지 수준의 액세스 권한을 부여할 수 있습니다.

  1. 컨테이너 수준 액세스: 이 액세스 수준은 특정 기존 컨테이너에 대한 작업 액세스 권한을 부여합니다.
  2. 계정 수준 액세스: 이 액세스 수준은 새 컨테이너를 만드는 기능을 포함하여 스토리지 계정에 대한 작업 일반 액세스 권한을 부여합니다.

컨테이너를 만드는 작업이 필요하지 않은 경우 컨테이너 수준 액세스를 선택하여 작업에 필요한 최소 액세스 수준을 부여합니다. 다음 섹션에서는 Azure 포털 및 명령줄에 대한 두 가지 옵션을 모두 설명합니다.

참고

전역 복제 또는 캐싱 대기 시간으로 인해 사용 권한을 취소하거나 부여하는 데 다소 시간이 걸릴 수 있습니다. 변경 내용은 8분 내에 표시됩니다.

Azure 포털을 통해 액세스 권한 부여

컨테이너 수준 액세스

  1. 스토리지 계정에서 컨테이너의 구성 창으로 이동합니다.

  2. 액세스 제어(IAM) 를 선택합니다.

  3. 추가>역할 할당 추가를 선택하여 역할 할당 추가 페이지를 엽니다.

  4. 다음 역할을 할당합니다. 세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

    설정
    역할 Storage Blob 데이터 기여자
    액세스 할당 사용자, 그룹 또는 서비스 주체
    회원 <Stream Analytics 작업의 이름>

    Azure Portal의 역할 할당 추가 페이지를 보여 주는 스크린샷

계정 수준 액세스

  1. 스토리지 계정으로 이동합니다.

  2. 액세스 제어(IAM) 를 선택합니다.

  3. 추가>역할 할당 추가를 선택하여 역할 할당 추가 페이지를 엽니다.

  4. 다음 역할을 할당합니다. 세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

    설정
    역할 Storage Blob 데이터 기여자
    액세스를 할당하세요. 사용자, 그룹 또는 서비스 주체
    회원 <Stream Analytics 작업의 이름>

    Azure Portal의 역할 할당 추가 페이지를 보여 주는 스크린샷

명령줄을 통해 액세스 권한 부여

컨테이너 수준 액세스

특정 컨테이너에 대한 액세스 권한을 부여하려면 Azure CLI를 사용하여 다음 명령을 실행합니다.

az role assignment create --role "Storage Blob Data Contributor" --assignee <principal-id> --scope /subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/blobServices/default/containers/<container-name>

계정 수준 액세스

전체 계정에 대한 액세스 권한을 부여하려면 Azure CLI를 사용하여 다음 명령을 실행합니다.

az role assignment create --role "Storage Blob Data Contributor" --assignee <principal-id> --scope /subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>

Blob 입력 또는 출력 만들기

관리 ID를 구성했으므로 이제 Stream Analytics 작업에 대한 입력 또는 출력으로 Blob 리소스를 추가할 수 있습니다.

  1. Azure Blob Storage 출력 싱크의 출력 속성 창에서 인증 모드 드롭다운을 선택하고 관리 ID를 선택합니다. 다른 출력 속성에 대한 자세한 정보는 Azure Stream Analytics 출력 이해를 참조하세요. 완료되면 저장을 선택합니다.

    Azure Blob Storage 출력 구성

가상 네트워크 액세스 사용

스토리지 계정의 방화벽 및 가상 네트워크 구성하는 경우 필요에 따라 다른 신뢰할 수 있는 Microsoft 서비스 네트워크 트래픽을 허용할 수 있습니다. Stream Analytics는 관리 ID를 사용하여 인증할 때 요청이 신뢰할 수 있는 서비스에서 시작되었음을 증명합니다. 다음 지침에서는 이 가상 네트워크 액세스 예외를 사용하도록 설정하는 방법을 설명합니다.

  1. 스토리지 계정의 구성 창 내에서 방화벽 및 가상 네트워크 창으로 이동합니다.
  2. 신뢰할 수 있는 Microsoft 서비스가 이 스토리지 계정에 액세스하도록 허용 옵션이 활성화되어 있는지 확인합니다.
  3. 사용하도록 설정한 경우 저장을 선택합니다.

VNET 액세스 사용

관리 ID 제거

Stream Analytics 작업에 대해 만든 관리 ID는 작업을 삭제할 때만 삭제됩니다. 작업을 삭제하지 않고는 관리 ID를 삭제할 수 없습니다. 관리 ID를 더 이상 사용하지 않으려는 경우에는 출력에 대한 인증 방법을 변경할 수 있습니다. 관리 ID는 작업을 삭제할 때까지 계속 존재하며 관리 ID 인증을 다시 사용하기로 결정한 경우 사용됩니다.

제한 사항

이 기능의 현재 제한 사항은 다음과 같습니다.

  1. 클래식 Azure Storage 계정

  2. Microsoft Entra ID가 없는 Azure 계정.

  3. 다중 테넌트 액세스는 지원되지 않습니다. 지정된 Stream Analytics 작업에 대해 만든 서비스 주체는 작업을 만든 동일한 Microsoft Entra 테넌트에 있어야 하며 다른 Microsoft Entra 테넌트에 있는 리소스와 함께 사용할 수 없습니다.

다음 단계