Azure Data Factory에 대한 관리 ID

적용 대상: Azure Data Factory Azure Synapse Analytics

기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!

이 문서에서는 관리 ID(이전의 관리되는 서비스 ID/MSI)가 무엇이며 Azure Data Factory에서 어떻게 작동하는지를 이해하는 데 도움을 줍니다.

참고 항목

Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

개요

관리 ID를 통해 개발자는 자격 증명을 관리할 필요가 없습니다. 관리 ID는 Microsoft Entra 인증을 지원하는 리소스에 연결할 때 서비스 인스턴스의 ID를 제공합니다. 예를 들어 서비스는 관리 ID를 사용하여 데이터 관리자가 자격 증명을 안전하게 저장하거나 스토리지 계정에 액세스할 수 있는 Azure Key Vault와 같은 리소스에 액세스할 수 있습니다. 서비스는 관리 ID를 사용하여 Microsoft Entra 토큰을 가져옵니다.

두 가지 종류의 지원되는 관리 ID가 있습니다.

  • 시스템 할당: 서비스 인스턴스에서 직접 관리 ID를 사용하도록 설정할 수 있습니다. 서비스 생성 중에 시스템 할당 관리 ID를 허용하면 해당 서비스 인스턴스의 수명 주기와 연결된 Microsoft Entra에 ID가 만들어집니다. 의도적으로 해당 Azure 리소스만 이 ID를 사용하여 Microsoft Entra ID에서 토큰을 요청할 수 있습니다. 따라서 리소스가 삭제되면 Azure에서 자동으로 ID를 삭제합니다.
  • 사용자 할당: 관리 ID를 독립 실행형 Azure 리소스로 만들 수도 있습니다. 사용자가 할당한 관리 ID를 만들고, 이를 하나 이상의 Data Factory 인스턴스에 할당할 수 있습니다. 사용자가 할당한 관리 ID는 이를 사용하는 리소스와 별도로 관리됩니다.

관리 ID는 다음과 같은 이점을 제공합니다.

  • Azure Key Vault에서 자격 증명을 저장합니다. 이 경우 관리 ID는 Azure Key Vault 인증에 사용합니다.
  • Azure Blob Storage, Azure Data Explorer, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, REST, Databricks 활동, 웹 활동 등을 비롯한 관리 ID 인증을 사용하여 데이터 저장소 또는 컴퓨터에 액세스합니다. 자세한 내용은 커넥터 및 작업 문서를 확인하세요.
  • 관리 ID는 Azure Key Vault에 저장된 고객 관리 키를 사용하여 메타데이터를 암호화/암호 해독하는 데도 사용되며 이중 암호화를 제공합니다.

시스템 할당 관리 ID

참고 항목

시스템 할당 관리 ID는 이전 버전과의 호환성을 위해 설명서의 다른 곳과 Data Factory Studio에서 ‘관리 ID’라고도 합니다. 이를 참조할 때 '사용자가 할당한 관리 ID'가 명시적으로 설명됩니다.

시스템 할당 관리 ID 생성

시스템 할당 관리 ID는 다음과 같이 생성됩니다.

  • Azure Portal 또는 PowerShell을 통해 데이터 팩터리를 만들 때 관리 ID가 항상 자동으로 생성됩니다.
  • SDK를 통해 데이터 팩터리를 만들 때 생성할 팩터리 개체에서 "Identity = new FactoryIdentity()"를 지정하는 경우에만 관리 ID가 생성됩니다. .NET 빠른 시작 - 데이터 팩터리 만들기의 예를 참조하세요.
  • REST API를 통해 데이터 팩터리를 만들 때, 요청 본문에 "identity" 섹션을 지정하는 경우에만 관리 ID가 생성됩니다. REST 빠른 시작 - 데이터 팩터리 만들기에서 예제를 참조하세요.

서비스 인스턴스에 다음 관리 ID 검색 지침과 관련된 관리 ID가 없는 것이 확인되면 이를 프로그래밍 방식으로 ID 초기자로 업데이트하여 명시적으로 생성할 수 있습니다.

참고 항목

  • 관리 ID는 수정할 수 없습니다. 이미 관리 ID가 있는 서비스 인스턴스를 업데이트해도 영향은 없으며 관리 ID는 변경되지 않습니다.
  • 팩터리 개체에 “identity” 매개 변수를 지정하지 않거나 REST 요청 본문에 “identity” 섹션을 지정하지 않고 관리 ID가 이미 있는 서비스 인스턴스를 업데이트하면 오류가 발생합니다.
  • 서비스 인스턴스를 삭제하면 연결된 관리 ID도 삭제됩니다.

PowerShell을 사용하여 시스템 할당 관리 ID 생성

Set-AzDataFactoryV2 명령을 다시 호출하면 새로 생성된 "Identity" 필드가 표시됩니다.

PS C:\> Set-AzDataFactoryV2 -ResourceGroupName <resourceGroupName> -Name <dataFactoryName> -Location <region>

DataFactoryName   : ADFV2DemoFactory
DataFactoryId     : /subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/ADFV2DemoFactory
ResourceGroupName : <resourceGroupName>
Location          : East US
Tags              : {}
Identity          : Microsoft.Azure.Management.DataFactory.Models.FactoryIdentity
ProvisioningState : Succeeded

REST API를 사용하여 시스템 할당 관리 ID 생성

참고 항목

팩터리 개체에서 identity 매개 변수를 지정하거나 REST 요청 본문에 identity 섹션을 제공하지 않고 이미 관리 ID 가 있는 서비스 인스턴스를 업데이트하려고 하면 오류가 발생합니다.

요청 본문의 “identity” 섹션에서 아래 API를 호출합니다.

PATCH https://management.azure.com/subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<data factory name>?api-version=2018-06-01

요청 본문: "identity": { "type": "SystemAssigned" }를 추가합니다.

{
    "name": "<dataFactoryName>",
    "location": "<region>",
    "properties": {},
    "identity": {
        "type": "SystemAssigned"
    }
}

응답: 관리 ID가 자동으로 생성되고 "identity" 섹션이 그에 따라 채워집니다.

{
    "name": "<dataFactoryName>",
    "tags": {},
    "properties": {
        "provisioningState": "Succeeded",
        "loggingStorageAccountKey": "**********",
        "createTime": "2017-09-26T04:10:01.1135678Z",
        "version": "2018-06-01"
    },
    "identity": {
        "type": "SystemAssigned",
        "principalId": "765ad4ab-XXXX-XXXX-XXXX-51ed985819dc",
        "tenantId": "72f988bf-XXXX-XXXX-XXXX-2d7cd011db47"
    },
    "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<dataFactoryName>",
    "type": "Microsoft.DataFactory/factories",
    "location": "<region>"
}

Azure Resource Manager 템플릿을 사용하여 시스템 할당 관리 ID 생성

템플릿: "identity": { "type": "SystemAssigned" }를 추가합니다.

{
    "contentVersion": "1.0.0.0",
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "resources": [{
        "name": "<dataFactoryName>",
        "apiVersion": "2018-06-01",
        "type": "Microsoft.DataFactory/factories",
        "location": "<region>",
        "identity": {
            "type": "SystemAssigned"
        }
    }]
}

SDK를 사용하여 시스템 할당 관리 ID 생성

Identity=new FactoryIdentity()를 사용하여 create_or_update 함수를 호출합니다. .NET을 사용하는 샘플 코드:

Factory dataFactory = new Factory
{
    Location = <region>,
    Identity = new FactoryIdentity()
};
client.Factories.CreateOrUpdate(resourceGroup, dataFactoryName, dataFactory);

시스템 할당 관리 ID 검색

Azure Portal에서 또는 프로그래밍 방식으로 관리 ID를 검색할 수 있습니다. 다음 섹션에서는 몇 가지 샘플을 보여 줍니다.

관리 ID가 표시되지 않으면 서비스 인스턴스를 업데이트하여 관리 ID를 생성합니다.

Azure Portal에서 시스템 할당 관리 ID 검색

Azure Portal -> 데이터 팩터리 -> 속성에서 관리 ID 정보를 찾을 수 있습니다.

Shows the Azure portal with the system-managed identity object ID and Identity Tenant for an Azure Data Factory.

  • 관리 ID 개체 ID
  • 관리 ID 테넌트

관리 ID 정보는 Azure Blob, Azure Data Lake Storage, Azure Key Vault 등의 관리 ID 인증을 지원하는 연결된 서비스를 만들 때도 표시됩니다.

권한을 부여하려면 다음 단계를 수행합니다. 세부 단계에 대해서는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.

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

  2. 추가>역할 할당 추가를 선택합니다.

    Screenshot that shows Access control (IAM) page with Add role assignment menu open.

  3. 멤버 탭에서 관리 ID를 선택한 다음, 멤버 선택을 선택합니다.

  4. Azure 구독을 선택합니다.

  5. 시스템 할당 관리 ID에서 Data Factory를 선택한 다음, 데이터 팩터리를 선택합니다. 개체 ID 또는 데이터 팩터리 이름(관리 ID 이름으로)을 사용하여 이 ID를 찾을 수도 있습니다. 관리 ID의 애플리케이션 ID를 가져오려면 PowerShell을 사용합니다.

  6. 검토 + 할당 탭에서 검토 + 할당을 선택하여 역할을 할당합니다.

PowerShell을 사용하여 시스템 할당 관리 ID 검색

다음과 같이 특정 서비스 인스턴스를 가져오는 경우 관리 ID의 보안 주체 ID 및 테넌트 ID가 반환됩니다. Principalid를 사용하여 액세스 권한을 부여합니다.

PS C:\> (Get-AzDataFactoryV2 -ResourceGroupName <resourceGroupName> -Name <dataFactoryName>).Identity

PrincipalId                          TenantId
-----------                          --------
765ad4ab-XXXX-XXXX-XXXX-51ed985819dc 72f988bf-XXXX-XXXX-XXXX-2d7cd011db47

위의 주체 ID를 복사한 다음 주체 ID를 매개 변수로 사용하여 아래의 Microsoft Entra ID 명령을 실행하여 애플리케이션 ID를 가져올 수 있습니다.

PS C:\> Get-AzADServicePrincipal -ObjectId 765ad4ab-XXXX-XXXX-XXXX-51ed985819dc

ServicePrincipalNames : {76f668b3-XXXX-XXXX-XXXX-1b3348c75e02, https://identity.azure.net/P86P8g6nt1QxfPJx22om8MOooMf/Ag0Qf/nnREppHkU=}
ApplicationId         : 76f668b3-XXXX-XXXX-XXXX-1b3348c75e02
DisplayName           : ADFV2DemoFactory
Id                    : 765ad4ab-XXXX-XXXX-XXXX-51ed985819dc
Type                  : ServicePrincipal

REST API를 사용하여 관리 ID 검색

다음과 같이 특정 서비스 인스턴스를 가져오는 경우 관리 ID의 보안 주체 ID 및 테넌트 ID가 반환됩니다.

요청에서 아래 API를 호출합니다.

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}?api-version=2018-06-01

응답: 아래 예제와 같이 응답을 받게 됩니다. "ID" 섹션이 그에 따라 채워집니다.

{
    "name":"<dataFactoryName>",
    "identity":{
        "type":"SystemAssigned",
        "principalId":"554cff9e-XXXX-XXXX-XXXX-90c7d9ff2ead",
        "tenantId":"72f988bf-XXXX-XXXX-XXXX-2d7cd011db47"
    },
    "id":"/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<dataFactoryName>",
    "type":"Microsoft.DataFactory/factories",
    "properties":{
        "provisioningState":"Succeeded",
        "createTime":"2020-02-12T02:22:50.2384387Z",
        "version":"2018-06-01",
        "factoryStatistics":{
            "totalResourceCount":0,
            "maxAllowedResourceCount":0,
            "factorySizeInGbUnits":0,
            "maxAllowedFactorySizeInGbUnits":0
        }
    },
    "eTag":"\"03006b40-XXXX-XXXX-XXXX-5e43617a0000\"",
    "location":"<region>",
    "tags":{

    }
}

ARM 템플릿에서 관리 ID를 검색하려면 ARM JSON에 출력 섹션을 추가합니다.

{
    "outputs":{
        "managedIdentityObjectId":{
            "type":"string",
            "value":"[reference(resourceId('Microsoft.DataFactory/factories', parameters('<dataFactoryName>')), '2018-06-01', 'Full').identity.principalId]"
        }
    }
}

사용자 할당 관리 ID

Microsoft Entra ID에서 사용자 할당 관리 ID를 만들기, 삭제, 관리할 수 있습니다. 자세한 내용은 Azure Portal에서 사용자 할당 관리 ID 만들기, 나열, 삭제 또는 역할 할당을 참조하세요.

사용자 할당 관리 ID를 사용하려면 먼저 UAMI에 대한 서비스 인스턴스에서 자격 증명을 만들어야 합니다.

관리 ID를 사용하는 시기 및 방법을 소개하는 다음 항목을 참조하세요.

Azure Data Factory 관리 ID의 기준이 되는 Azure 리소스의 관리 ID에 대한 자세한 내용은 Azure 리소스에 대한 관리 ID 개요를 참조하세요.

Azure Data Factory 관리 ID에도 적용되는 관리 ID의 제한 사항을 참조하세요.