Data Factory のマネージド IDManaged identity for Data Factory

この記事は、Data Factory のマネージド ID (以前は、マネージド サービス ID/MSI と呼ばれていました) の概要と機能について理解するのに役立ちます。This article helps you understand what is managed identity for Data Factory (formerly known as Managed Service Identity/MSI) and how it works.

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

概要Overview

データ ファクトリの作成時に、ファクトリの作成に加え、マネージド ID を作成できます。When creating a data factory, a managed identity can be created along with factory creation. マネージド ID は、Azure Activity Directory に登録されているマネージド アプリケーションであり、この特定のデータ ファクトリを表します。The managed identity is a managed application registered to Azure Activity Directory, and represents this specific data factory.

Data Factory のマネージド ID は次の機能に役立ちます。Managed identity for Data Factory benefits the following features:

マネージド ID の生成Generate managed identity

Data Factory のマネージド ID は、次のように生成されます。Managed identity for Data Factory is generated as follows:

  • Azure portal または PowerShell を使用してデータ ファクトリを作成すると、マネージド ID が常に自動的に作成されます。When creating data factory through Azure portal or PowerShell, managed identity will always be created automatically.
  • SDK を使用してデータ ファクトリを作成すると、作成用のファクトリ オブジェクトで "Identity = new FactoryIdentity()" を指定した場合にのみマネージド ID が作成されます。When creating data factory through SDK, managed identity will be created only if you specify "Identity = new FactoryIdentity()" in the factory object for creation. .NET のクイックスタート - データ ファクトリの作成の例をご覧ください。See example in .NET quickstart - create data factory.
  • REST API を使用してデータ ファクトリを作成すると、要求本文で "Identity" セクションを指定した場合にのみマネージド ID が作成されます。When creating data factory through REST API, managed identity will be created only if you specify "identity" section in request body. REST のクイックスタート - データ ファクトリの作成の例をご覧ください。See example in REST quickstart - create data factory.

マネージド ID の取得」の手順に従ってデータ ファクトリにマネージド ID がまだ関連付けられていない場合は、ID イニシエーターを使用してプログラムでデータ ファクトリを更新することで、マネージド ID を明示的に生成できます。If you find your data factory doesn't have a managed identity associated following retrieve managed identity instruction, you can explicitly generate one by updating the data factory with identity initiator programmatically:

注意

  • マネージド ID は変更できません。Managed identity cannot be modified. マネージド ID が既に存在するデータ ファクトリを更新しても影響はなく、マネージド ID が変更されることはありません。Updating a data factory which already have a managed identity won't have any impact, the managed identity is kept unchanged.
  • ファクトリ オブジェクトで "identity" パラメーターを指定せずに、または REST 要求本文で "identity" セクションを指定せずに、マネージド ID が既に存在するデータ ファクトリを更新した場合、エラーが発生します。If you update a data factory which already have a managed identity without specifying "identity" parameter in the factory object or without specifying "identity" section in REST request body, you will get an error.
  • データ ファクトリを削除すると、関連付けられているマネージド ID も削除されます。When you delete a data factory, the associated managed identity will be deleted along.

PowerShell を使用したマネージド ID の生成Generate managed identity using PowerShell

Set-AzDataFactoryV2 コマンドを再度呼び出すと、"Identity" フィールドが新たに生成されます。Call Set-AzDataFactoryV2 command again, then you see "Identity" fields being newly generated:

PS C:\WINDOWS\system32> 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 の生成Generate managed identity using REST API

要求本文の "identity" セクションを使用して、次の API を呼び出します。Call below API with "identity" section in the request body:

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

要求本文: add "identity": { "type":"SystemAssigned" } を追加します。Request body: add "identity": { "type": "SystemAssigned" }.

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

応答: マネージド ID が自動的に作成され、これに応じて "identity" セクションが設定されます。Response: managed identity is created automatically, and "identity" section is populated accordingly.

{
    "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/ADFV2DemoFactory",
    "type": "Microsoft.DataFactory/factories",
    "location": "<region>"
}

Azure Resource Manager テンプレートを使用したマネージド ID の生成Generate managed identity using an Azure Resource Manager template

テンプレート: add "identity": { "type":"SystemAssigned" } を追加します。Template: add "identity": { "type": "SystemAssigned" }.

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

SDK を使用したマネージド ID の生成Generate managed identity using SDK

Identity=new FactoryIdentity() を指定して、データ ファクトリの作成または更新関数を呼び出します。Call the data factory create_or_update function with Identity=new FactoryIdentity(). .NET を使用したサンプル コードは以下のとおりです。Sample code using .NET:

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

マネージド ID の取得Retrieve managed identity

マネージド ID は、Azure portal から取得することも、プログラムによって取得することもできます。You can retrieve the managed identity from Azure portal or programmatically. 以降のセクションでは、いくつかの例を示します。The following sections show some samples.

ヒント

マネージド ID が表示されない場合は、ファクトリを更新してマネージド ID を生成してください。If you don't see the managed identity, generate managed identity by updating your factory.

Azure portal を使用したマネージド ID の取得Retrieve managed identity using Azure portal

[Azure Portal] -> 自分のデータ ファクトリ -> [プロパティ] でマネージド ID 情報を検索できます。You can find the managed identity information from Azure portal -> your data factory -> Properties:

  • マネージド ID オブジェクト IDManaged Identity Object ID
  • マネージド ID のテナントManaged Identity Tenant
  • マネージド ID アプリケーション ID > この値をコピーしますManaged Identity Application ID > copy this value

マネージド ID の取得

PowerShell を使用したマネージド ID の取得Retrieve managed identity using PowerShell

特定のデータ ファクトリを取得すると、次のように、マネージド ID のプリンシパル ID とテナント ID が返されます。The managed identity principal ID and tenant ID will be returned when you get a specific data factory as follows:

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

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

ApplicationId を取得するには、プリンシパル ID をコピーし、プリンシパル ID をパラメーターとして指定して次の Azure Active Directory コマンドを実行します。ApplicationId は、アクセス権を付与するために使用します。Copy the principal ID, then run below Azure Active Directory command with principal ID as parameter to get the ApplicationId, which you use to grant access:

PS C:\WINDOWS\system32> 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

次の手順Next steps

データ ファクトリのマネージド ID を使用する状況と方法を紹介する次のトピックをご覧ください。See the following topics which introduce when and how to use data factory managed identity:

データ ファクトリのマネージド ID の基になっている Azure リソースのマネージド ID の詳細については、Azure リソースのマネージド ID の概要に関する記事をご覧ください。See Managed Identities for Azure Resources Overview for more background on managed identities for Azure resources, which data factory managed identity is based upon.